實驗環境:
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=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所以我們爲了傳參要加一個選項