使用Docker构建企业Jenkins CI平台
工作流程:
1. 开发人员提交代码到Git版本仓库;
2. Jenkins人工/定时触发项目构建;
3. Jenkins拉取代码、代码编码、打包镜像、推送到镜像仓库;
4. Jenkins在Docker主机创建容器并发布
服务器规划:
IP地址
|
角色
|
10.0.0.111
|
Jenkins,Docker,JDK,Maven
|
10.0.0.100
|
Harbor(Docker,docker-compose),Git
|
部署Git代码版本仓库
10.0.0.100 操作
# yum install git -y # useradd git # passwd git # su – git # mkdir wenlong.git # cd wenlong.git/ #初始化仓库 # git --bare init
10.0.0.111 操作
Jenkins主机测试访问该仓库: git clone git@10.0.0.100:/home/tools/git/wenlong.git 正克隆到 'wenlong'... git@10.0.0.100's password: "git账号的密码" warning: 您似乎克隆了一个空版本库。 模拟生产项目,拉取github上的一个demo,并上传至本地git库 # mv tomcat-java-demo-master/* wenlong/ # git add . 需要验证 # git config --global user.email "xuewenlong@123.com" # git config --global user.name "xuewenlong" # git commit -m "all" # git push origin master
部署Harbor镜像仓库
10.0.0.100 操作
Jenkins主机安装Docker并配置可信任
10.0.0.111 操作
# wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo # yum install docker-ce -y # cat /etc/docker/daemon.json {"registry-mirrors": ["http://f1361db2.m.daocloud.io"], "insecure-registries": ["192.168.31.63"] } # systemctl start docker # systemctl enable docker
Jenkins环境部署
# tar zxvf jdk-8u45-linux-x64.tar.gz # mv jdk1.8.0_45 /usr/local/jdk # tar zxf apache-maven-3.5.0-bin.tar.gz # mv apache-maven-3.5.0 /usr/local/maven # vim /etc/profile JAVA_HOME=/usr/local/jdk PATH=$PATH:$JAVA_HOME/bin:/usr/local/maven/bin export JAVA_HOME PATH # source /etc/profile 在10.0.0.111主机安装Jenkins,下载Tomcat二进制包将war包到webapps下即可: # wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war # wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.38/bin/apache-tomcat-8.5.38.tar.gz # tar zxf apache-tomcat-8.5.38.tar.gz # mv apache-tomcat-8.5.38 /usr/local/tomcat-jenkins # rm -rf /usr/local/tomcat-jenkins/webapps/* # mv jenkins.war /usr/local/tomcat-jenkins/webapps/ROOT.war # cd /usr/local/tomcat-jenkins/bin/ # ./startup.sh
启动后,浏览器访问
Jenkins安装必要插件
由于jenkins是离线安装,所有在此需要配置一下插件下载地址:系统管理–>插件管理–>Advanced
修改下方地址
jenkins插件清华大学镜像地址 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json http://mirror.xmission.com/jenkins/updates/update-center.json
将https修改为http 再点Submit
Submit后点击Available,Check now此时我们可以看到很多可获得插件
安装git和pipeline插件
Jenkins流水线部署
创建一个pipeline类型的Job
选择流水线类型
配置Pipeline script,点击Pipeline语法,来自动生成我们需要的配置。
选择Git方式,配置Git仓库地址,再添加认证相关
使用秘钥认证方式需要将jenkins上生成的公钥发送到git服务器上,然后将jenkins上的生成的私钥内容粘贴到下图Key中,这样jenkins就可以免交互的拉取git仓库中的代码了。
[root@docker-jenkins bin]# ssh-keygen [root@docker-jenkins bin]# cd [root@docker-jenkins ~]# ls .ssh/ id_rsa id_rsa.pub known_hosts [root@docker-jenkins ~]# ssh-copy-id git@10.0.0.100
配置完成后,生成Pipeline脚本了。点击下方Generate Pipeline Script,然后复制方框内的内容。
编写我们所需要的Pipeline脚本如下,将其粘贴到script的拉取代码模块中,并修改分支master为${branch},其他模块内容自行编写。
node { def mvnHome stage('Preparation') { // for display purposes //拉取代码 checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '7c00a680-53fd-42db-a12a-21b803dd6c40', url: 'git@10.0.0.100:/home/tools/git/wenlong.git']]]) } //编译代码 stage('Build') { sh ''' export JAVA_HOME=/home/tools/jdk1.8.0_221 mvn clean package -Dmaven.test.skip=true ''' } // 项目打包到镜像并推送到镜像仓库 stage('Build and Push Image') { sh ''' REPOSITORY=10.0.0.100/library/wenlong:${branch} cat > Dockerfile << EOF FROM 10.0.0.100/library/tomcat:v1 LABEL maintainer wenlong RUN rm -rf /usr/local/tomcat/webapps/* ADD target/*.war /usr/local/tomcat/webapps/ROOT.war EOF docker build -t $REPOSITORY . docker login 10.0.0.100 -u admin -p Harbor12345 docker push $REPOSITORY ''' } // 部署到Docker主机 stage('Deploy to Docker') { sh ''' REPOSITORY=10.0.0.100/library/wenlong:${branch} docker rm -f tomcat-java-demo |true docker pull $REPOSITORY docker container run -d --name wenlong -p 88:8080 $REPOSITORY ''' } }