基於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=PATH: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所以我們爲了傳參要加一個選項
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章