k8s

持续集成Jenkins+Harbor

2021-01-04  本文已影响0人  泥人冷风

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 完成构建

通过最后阶段,全绿说明成功

2.8 验证一下Harbor

上一篇 下一篇

猜你喜欢

热点阅读