实验环境:
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所以我们为了传参要加一个选项