基于docker环境构建jenkins CI/CD

实验环境:
192.168.74.237 jenkins、git客户端
192.168.74.230 git仓库、harbor仓库

官网: Docker官网https://www.docker.com/
Docker二进制包网址https://download.docker.com/linux/static/stable/x86_64/
Docker镜像地址https://cloud.docker.com/ Jenkins官网https://jenkins.io/zh/
Harbor官网https://goharbor.io/ Tomcat官网https://tomcat.apache.org/
Maven官网https://maven.apache.org/

一、给测试机全部安装docker
1.安装依赖包
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
2.安装docker的repo文件,用阿里的可能更快
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# yum install docker-ce -y
3.启动docker并设置开机自启
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
4.配置镜像加速器
https://www.daocloud.io/mirror
也可以使用阿里云
[root@localhost ~]# vim /etc/docker/daemon.json

[root@localhost ~]# systemctl restart docker
配置docker信任,因为harboy我们使用的http,但是docker默认https,所以得设置,如果harbor用https就无需设置了
[root@localhost ~]# vim /etc/docker/daemon.json
{
“registry-mirrors”: [“xxxxxxx”],
“insecure-registries”: [“192.168.74.230”]
}

[root@localhost ~]# systemctl restart docker
[root@localhost ~]# docker info

二、搭建git仓库(代码仓库都需要装git)
1.构建仓库(在git服务器本实验在230)
[root@localhost ~]# yum install git -y
[root@localhost ~]# useradd git
[root@localhost ~]# passwd git
[root@localhost ~]# su – git
[git@localhost ~]$ mkdir tomcat-java-demo.git
[git@localhost ~]$ cd tomcat-java-demo.git/
[git@localhost tomcat-java-demo.git]$ git --bare init
2.测试(在237)先准备密钥对
[root@localhost ~]# ssh-keygen
[root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub [email protected]
3.克隆测试
[root@localhost ~]# git clone [email protected]:/home/git/tomcat-java-demo.git
正克隆到 ‘tomcat-java-demo’…
warning: 您似乎克隆了一个空版本库。
测试完毕删除
[root@localhost ~]# rm -rf tomcat-java-demo
三、上传代码(237主机)
[root@localhost ~]# unzip tomcat-java-demo-master.zip
[root@localhost ~]# git clone [email protected]:/home/git/tomcat-java-demo.git
[root@localhost ~]# mv tomcat-java-demo-master/* tomcat-java-demo/
[root@localhost ~]# cd tomcat-java-demo
[root@localhost tomcat-java-demo]# git add .
[root@localhost tomcat-java-demo]# git commit -m “all”
[root@localhost tomcat-java-demo]# git push origin master
四、搭建harbor仓库(镜像仓库)
[root@localhost ~]# cd /usr/local/bin/
[root@localhost bin]# chmod +x docker-compose
[root@localhost ~]# tar xf harbor-offline-installer-v1.7.5.tgz
[root@localhost ~]# cd harbor/
[root@localhost harbor]# vim harbor.cfg
hostname = 192.168.74.230
harbor_admin_password = 123456
[root@localhost harbor]# ./prepare
[root@localhost harbor]# ./install.sh
在这里插入图片描述
宿主机74.237测试登陆
[root@localhost ~]# docker login 192.168.74.230 -u admin -p 123456
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
五、制作tomcat镜像上传harbor镜像仓库
准备tomcat镜像(dockerfile)并推送harbor

Dockerfile为

FROM centos:7

RUN yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y && \
    yum clean all && \
    rm -rf /var/cache/yum/*

COPY  apache-tomcat-8.0.46.tar.gz  /
RUN   tar zxf  apache-tomcat-8.0.46.tar.gz  && \
    mv apache-tomcat-8.0.46 /usr/local/tomcat && \
    rm -rf apache-tomcat-8.0.46.tar.gz  /usr/local/tomcat/webapps/* && \
    mkdir /usr/local/tomcat/webapps/test && \
    echo "ok" > /usr/local/tomcat/webapps/test/status.html && \
    sed -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' /usr/local/tomcat/bin/catalina.sh && \
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ENV PATH $PATH:/usr/local/tomcat/bin

WORKDIR /usr/local/tomcat

EXPOSE 8080
CMD ["catalina.sh", "run"]

[root@localhost dockerfile]# docker build -t 192.168.74.230/library/tomcat:v8 .

六、搭建Jenkins环境
1.搭建基础jenkins
[root@localhost ~]# tar xf apache-maven-3.6.1-bin.tar.gz
[root@localhost ~]# mv apache-maven-3.6.1 /usr/local/maven
[root@localhost ~]# cp /usr/local/maven/conf/settings.xml{,.ori}
[root@localhost ~]# vim /usr/local/maven/conf/settings.xml
mirror标签中

<mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

或者搭建nexus 私服 ,搭建自己的私服提供站点

[root@localhost ~]# tar xf jdk-8u45-linux-x64.tar.gz
[root@localhost ~]# mv jdk1.8.0_45 /usr/local/jdk

[root@localhost ~]# vim /etc/profile
JAVA_HOME=/usr/local/jdk
PATH= P A T H : PATH: JAVA_HOME/bin:/usr/local/maven/bin
export JAVA_HOME PATH
[root@localhost ~]# . /etc/profile

[root@localhost ~]# tar xf apache-tomcat-8.5.38.tar.gz
[root@localhost ~]# mv apache-tomcat-8.5.38 /usr/local/tomcat-jenkins

[root@localhost ~]# cd /usr/local/tomcat-jenkins/webapps/
[root@localhost webapps]# rm -rf *
[root@localhost webapps]# mkdir ROOT
[root@localhost webapps]# unzip /root/jenkins.war -d ROOT/

[root@localhost ~]# cd /usr/local/tomcat-jenkins/bin/
[root@localhost bin]# ./startup.sh
在这里插入图片描述
[root@localhost ~]# cat /root/.jenkins/secrets/initialAdminPassword
把得到的密码输入
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.换一下插件源 因为本身的源在国外访问比较慢,所以换清华源

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
清华的源为https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
3.安装插件git和pipeline
在这里插入图片描述
在这里插入图片描述
八、发布流水线
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
[root@localhost ~]# cat .ssh/id_rsa
生成pipeline脚本

node  {   // 指定Slave标签
   // 拉取代码
   stage('Git Checkout') { 
      checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '5f4120c9-82b3-4829-b416-1c15e0e2c5fa', url: '[email protected]:/home/git/tomcat-java-demo.git']]])
   }
   // 代码编译
   stage('Maven Build') {
        sh '''
        export JAVA_HOME=/usr/local/jdk
       /usr/local/maven/bin/mvn  clean package -Dmaven.test.skip=true
        '''
   }
   // 项目打包到镜像并推送到镜像仓库
   stage('Build and Push Image') {
        sh '''
        REPOSITORY=192.168.74.230/library/tomcat-java-demo:${branch}
        echo '
        FROM 192.168.74.230/library/tomcat:v8
        COPY target/*.war /usr/local/tomcat/webapps/ROOT.war
        ' > Dockerfile
        docker build -t $REPOSITORY .
        docker login -u admin -p 123456 192.168.74.230
        docker push $REPOSITORY
        '''
   }
   // 部署到Docker主机
   stage('Deploy to Docker') {
        sh '''
        REPOSITORY=192.168.74.230/library/tomcat-java-demo:${branch}
        docker image rm -f 192.168.74.230/library/tomcat:v8 |true
        docker image rm $REPOSITORY |true
        docker login -u admin -p 123456 192.168.74.230
        docker run -d --name java-demo -p 88:8080 $REPOSITORY
        '''
   }
}

在这里插入图片描述
如果要用EOF必须顶头写
因为脚本中有分支对应的参数branch所以我们为了传参要加一个选项
在这里插入图片描述

发布了92 篇原创文章 · 获赞 12 · 访问量 5685

猜你喜欢

转载自blog.csdn.net/weixin_45413603/article/details/101040417