1 环境准备
No | 主机名 | 域名 | 作用 | IP | 安装 |
---|---|---|---|---|---|
1 | code jenkins |
code.local.com jenkins.local.com |
代码版本管理 代码编译部署 |
192.168.8.181 192.168.8.183 |
参考 |
2 | harbor | reg.local.com | 镜像仓库 | 192.168.8.131 | 参考 |
1.1 hosts设置
$ vi /etc/hosts
192.168.8.181 code.local.com
192.168.8.183 jenkins.local.com
192.168.8.131 reg.local.com
1.2 提前在Jenkins安装Maven(因为yum install maven只是3.05版本)
$ wget http://www-eu.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
$ tar xvf apache-maven-3.6.3-bin.tar.gz
$ sudo mv apache-maven-3.6.3 /opt/maven
$ cat <<EOF | sudo tee /etc/profile.d/maven.sh
$ export MAVEN_HOME=/opt/maven
$ export PATH=\$PATH:\$MAVEN_HOME/bin
$ EOF
$ source /etc/profile.d/maven.sh
$ echo $MAVEN_HOME
/opt/maven
$ echo $PATH
1.3 在Jenkins安装docker
yum install -y yum-utils device-mapper-persistent-data lvm2
#紧接着配置一个稳定的仓库、仓库配置会保存到/etc/yum.repos.d/docker-ce.repo文件中
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#更新Yum安装的相关Docker软件包&安装Docker CE
yum update -y && yum install docker-ce
gpasswd -a jenkins docker
vi /etc/sysconfig/docker
...
OPTIONS='--insecure-registry reg.local.com'
...
#同时vi /usr/lib/systemd/system/docker.service
...
ExecStart=/usr/bin/dockerd --insecure-registry reg.local.com
...
systemctl daemon-reload
systemctl enable docker
systemctl start docker
systemctl restart jenkins
接着持续集成Harbor
2 配置Jenkins
2.1 安装插件
Git Parameter
Docker Pipeline
2.2 为Harbor添加凭证
记住:Harbor_crt
2.3 创建pipeline项目
2.4 丢弃旧的构建
2.5 参数化构建
2.6 编写pipeline脚本
完整脚本如下:
env.CREDENTIALSID = 'jenkins'
env.GIT_URL = 'ssh://git@code.local.com/web/web-demo.git'
env.HARBOR_CRT = 'Harbor_crt'
env.HARBOR = 'reg.local.com'
env.HARBOR_PROJECT = 'dev/web-demo'
node {
def app
//拉取代码
stage('get clone repo') {
git credentialsId: env.CREDENTIALSID, url: env.GIT_URL
}
//代码编译
stage('Mave Build'){
sh '/opt/maven/bin/mvn clean package -Dmaven.test.skip=true'
}
stage('Build Image'){
sh 'cp Dockerfile target'
sh 'cd $WORKSPACE/target'
app = docker.build(env.HARBOR_PROJECT + ":$Tag","$WORKSPACE/target")
}
stage('Push Image'){
docker.withRegistry("http://"+ env.HARBOR, env.HARBOR_CRT){
app.push()
}
}
stage('Cleaning up'){
sh "docker rmi $HARBOR/"+"$HARBOR_PROJECT:$Tag"
}
}
点击[保存]按钮即可
2.7 完成构建
通过最后阶段,全绿说明成功
网友评论