diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 000000000..681fea90f
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,110 @@
+pipeline {
+ agent {
+ node {
+ label 'maven'
+ }
+ }
+
+ parameters {
+ string(name:'TAG_NAME',defaultValue: '',description:'')
+ }
+
+ environment {
+ // DockerHub 凭证 ID(登录您的 DockerHub)
+ DOCKER_CREDENTIAL_ID = 'dockerhub-id'
+ // GitHub 凭证 ID (推送 tag 到 GitHub 仓库)
+ GITHUB_CREDENTIAL_ID = 'github-id'
+ // kubeconfig 凭证 ID (访问接入正在运行的 Kubernetes 集群)
+ KUBECONFIG_CREDENTIAL_ID = 'demo-kubeconfig'
+ // 镜像的推送
+ REGISTRY = 'docker.io'
+ // DockerHub 账号名
+ DOCKERHUB_NAMESPACE = 'docker_username'
+ // GitHub 账号名
+ GITHUB_ACCOUNT = 'https://gitee.com/zhijiantianya/ruoyi-vue-pro'
+ // 应用名称
+ APP_NAME = 'yudao-admin-server'
+ }
+
+ stages {
+ stage ('checkout scm') {
+ steps {
+ checkout(scm)
+ }
+ }
+
+ stage ('unit test') {
+ steps {
+ container ('maven') {
+ sh 'mvn clean -gs `pwd`/configuration/settings.xml test'
+ }
+ }
+ }
+
+ stage ('build & push') {
+ steps {
+ container ('maven') {
+ sh 'mvn -Dmaven.test.skip=true -gs `pwd`/configuration/settings.xml clean package'
+ sh 'docker build -f Dockerfile-online -t $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER .'
+ withCredentials([usernamePassword(passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,credentialsId : "$DOCKER_CREDENTIAL_ID" ,)]) {
+ sh 'echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin'
+ sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER'
+ }
+ }
+ }
+ }
+
+ stage('push latest'){
+ when{
+ branch 'master'
+ }
+ steps{
+ container ('maven') {
+ sh 'docker tag $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:latest '
+ sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:latest '
+ }
+ }
+ }
+
+ stage('deploy to dev') {
+ when{
+ branch 'master'
+ }
+ steps {
+ input(id: 'deploy-to-dev', message: 'deploy to dev?')
+ kubernetesDeploy(configs: 'deploy/dev-ol/**', enableConfigSubstitution: true, kubeconfigId: "$KUBECONFIG_CREDENTIAL_ID")
+ }
+ }
+ stage('push with tag'){
+ when{
+ expression{
+ return params.TAG_NAME =~ /v.*/
+ }
+ }
+ steps {
+ container ('maven') {
+ input(id: 'release-image-with-tag', message: 'release image with tag?')
+ withCredentials([usernamePassword(credentialsId: "$GITHUB_CREDENTIAL_ID", passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) {
+ sh 'git config --global user.email "kubesphere@yunify.com" '
+ sh 'git config --global user.name "kubesphere" '
+ sh 'git tag -a $TAG_NAME -m "$TAG_NAME" '
+ sh 'git push http://$GIT_USERNAME:$GIT_PASSWORD@github.com/$GITHUB_ACCOUNT/devops-java-sample.git --tags --ipv4'
+ }
+ sh 'docker tag $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:$TAG_NAME '
+ sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:$TAG_NAME '
+ }
+ }
+ }
+ stage('deploy to production') {
+ when{
+ expression{
+ return params.TAG_NAME =~ /v.*/
+ }
+ }
+ steps {
+ input(id: 'deploy-to-production', message: 'deploy to production?')
+ kubernetesDeploy(configs: 'deploy/prod-ol/**', enableConfigSubstitution: true, kubeconfigId: "$KUBECONFIG_CREDENTIAL_ID")
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/yudao-dependencies/pom.xml b/yudao-dependencies/pom.xml
index 5556b6be2..42adcdf8a 100644
--- a/yudao-dependencies/pom.xml
+++ b/yudao-dependencies/pom.xml
@@ -41,7 +41,7 @@
7.2.6.RELEASE
0.1.16
- 1.16.14
+ 1.18.12
1.4.1.Final
5.6.1
2.2.7