一 准备JDK和Maven环境
在宿主机上准备环境 需要maven 和jdk
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
配置docker 加速
[root@centos7 ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://abcd1234.m.daocloud.io [root@centos7 ~]# systemctl restart docker
使用docker安装jenkins
docker run -d --name jenkins -p 88:8080 -p 50000:50000 -u root -v /opt/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /usr/local/maven:/usr/local/maven -v /usr/local/jdk:/usr/local/jdk -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins:lts
安装完成之后进入jenkins 选择插件来安装
然后点击无 先不安装插件
接着设置账号密码 然后登录jenkins
二 安装插件
jenkins安装插件一直是个问题,接下来介绍一种终极办法
点击 Manage Jenkins --》pluginManager--》advanced---》Update Site
url https://mirrors.tuna.tsinghua.edu.cn/update-center.json submit
这个的修改主要是加速索引
修改插件下载地址
cd /opt/jenkins_home/updates
sed -i 's/http://updates.jenkins-ci.org/download/https://mirrors.tuna.tsinghua.edu.cn/jenkins/g' default.json && sed -i 's/http://www.google.com/https://www.baidu.com/g' default.json
这是哥坑 在新版本中需要新的修改办法 需要注意
sed -i 's/https://updates.jenkins.io/download/https://mirrors.tuna.tsinghua.edu.cn/jenkins/g' default.json
重启jenkins
docker restart jenkins
安装 git 以及pipeline 发现速度爆炸。。
发现还是有部分插件有问题 直接去清华源下载
放到
/opt/jenkins_home/plugins/
下面地址为常用的插件
https://www.chenleilei.net/soft/jenkins_plugins.tar.gz
三 利用jenkins 构建一个完全的自动化流程
首先 在jenkins上配置认证 credentials Add Credentials
需要配置2 个 一个是连接harbol的 另外一个是连接gitlab的
设置默认的Branch (这个是可选的,如果设置了那么下一次构建就会展示这个默认的,但是 依然是可以自己修改的)如下图
撰写pipeline 以下的pipeline需要注意。。 Branch 就是上一步设置的。因为设置了变量 所以构建的名字是 Build with Parameters
docker_registry_auth git_auth 就是账号密码输入完成之后产生的字符串,可以点击update 查看
#!/usr/bin/env groovy def registry = "192.168.31.70" def project = "dev" def app_name = "java-demo" def image_name = "${registry}/${project}/${app_name}:${Branch}-${BUILD_NUMBER}" def git_address = "http://192.168.31.70:9999/root/java-demo.git" def docker_registry_auth = "796b3651-c0b1-4429-b32a-288e0fa66c77" def git_auth = "35ad5e6a-d132-4cac-9d74-d65223a2d8c0" pipeline { agent any stages { stage('拉取代码'){ steps { checkout([$class: 'GitSCM', branches: [[name: '${Branch}']], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]]) } } stage('代码编译'){ steps { sh """ pwd ls JAVA_HOME=/usr/local/jdk PATH=$JAVA_HOME/bin:/usr/local/maven/bin:$PATH mvn clean package -Dmaven.test.skip=true """ } } stage('构建镜像'){ steps { withCredentials([usernamePassword(credentialsId: "${docker_registry_auth}", passwordVariable: 'password', usernameVariable: 'username')]) { sh """ echo ' FROM ${registry}/library/tomcat:v1 LABEL maitainer lizhenliang RUN rm -rf /usr/local/tomcat/webapps/* ADD target/*.war /usr/local/tomcat/webapps/ROOT.war ' > Dockerfile docker build -t ${image_name} . docker login -u ${username} -p '${password}' ${registry} docker push ${image_name} """ } } } stage('部署到Docker'){ steps { sh """ REPOSITORY=${image_name} docker rm -f tomcat-java-demo |true docker container run -d --name tomcat-java-demo -p 88:8080 ${image_name} """ } } } }
注意:默认的maven 是使用国外的源 可以修改成国内的