Jenkins 是基于 Java 开发持续集成工具,可以拉取远程代码仓库的代码,进行编译、打包,执行 Shell 和 Groovy 脚本从而实现自动化部署。此外,Jenkins 也提供了丰富的插件进行功能扩展,以满足不同场景的使用。这篇文章文带你了解如何使用 Jenkins 进行项目自动化部署。
下面是 Jenkins 结合 Docker 进行自动化部署的流程和原理图:

简单描述一下整个流程,我们需要提前编写一份 Groovy 脚本,一般脚本里面的内容包括:如何拉取代码、对代码进行编译打包、执行 shell 脚本部署到远程服务器等内容;将这份脚本交由 Jenkins 去执行,就可以实现自动化部署了。接下来讲述一下如何基于 Docker 搭建这样一个自动化部署的平台。
基础环境配置与搭建
Docker 的使用与安装
以下是简单的安装流程
1 2 3 4 5 6
| curl -fsSL get.docker.com -o get-docker.sh sudo sh get-docker.sh --mirror Aliyun
sudo systemctl enable docker sudo systemctl start docker
|
使用 Docker 安装基础软件
Jenkins
1 2 3 4 5 6 7 8 9 10 11
| docker run -d -p 8060:8080 -p 50000:50000 \ --user=root \ --name jenkins --privileged=true \ --restart=always \ -v /data/jenkins/jenkins_home:/var/jenkins_home \ -v /data/maven/apache-maven-3.6.3:/usr/local/maven \ -v /data/jdk/jdk1.8.0_161:/usr/local/java \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker \ -v /data/node/node-v14.16.1-linux-x64:/usr/local/nodejs \ jenkins/jenkins
|
NodeJS
用于前端工程打包
1 2 3 4 5 6 7 8 9
| cd /data/nodejs wget https://npm.taobao.org/mirrors/node/v14.16.1/node-v14.16.1-linux-x64.tar.xz xz -d node-v14.16.0-linux-x64.tar.xz tar -xzvf node-v14.16.0-linux-x64.tar
export NODE_HOME=/data/nodejs/node-v14.16.1-linux-x64 export PATH=$NODE_HOME/bin:$PATH
node -v
|
Maven
用于后端工程编译和打包
1 2 3 4 5 6 7 8 9 10 11
| cd /home/mydata/data/maven wget https://mirrors.aliyun.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -xzvf apache-maven-3.6.3-bin.tar.gz
vim /etc/profile export M2_HOME=/home/mydata/maven/repo export MAVEN_HOME=/home/mydata/maven/apache-maven-3.6.3 export PATH=$PATH:${MAVEN_HOME}/bin
source /etc/profile
|
Nginx
1 2 3 4 5 6 7 8 9 10 11 12 13
| docker run -p 80:80 --name nginx docker cp nginx:/etc/nginx/nginx.conf /data/nginx docker cp nginx:/etc/nginx/conf.d/ /data/nginx docker stop nginx docker rm nginx
docker run -p 80:80 --name nginx --restart always \ --net host \ -v /data/nginx/html:/usr/share/nginx/html \ -v /data/nginx/nginx.conf:/etc/nginx/nginx.conf \ -v /data/nginx/conf.d:/etc/nginx/conf.d \ -v /data/nginx/logs:/var/log/nginx -d nginx
|
部署脚本示例
下面是一个自动部署 Java 后端服务的一个示例脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| pipeline { agent any environment { GIT_REGISTRY = 'http://ip:port/xxx.git' GIT_BRANCH = 'develop' GITLAB_ACCESS_TOKEN_ID = 'xxxx-xxx-xxxx-xxx' }
stages { stage('Build') { steps { git credentialsId: "${env.GITLAB_ACCESS_TOKEN_ID}", url: "${env.GIT_REGISTRY}", branch: "${env.GIT_BRANCH}" sh "mvn clean install" } } stage('Image Build') { } stage('Image Push') { } stage('Execute service') { } } }
|
扩展阅读