docker安装Jenkins
一、部署
1.编写Dockerfile文件
FROM centos MAINTAINER princeli <[email protected]> WORKDIR /apps ADD jdk-8u202-linux-x64.tar.gz /apps ADD apache-maven-3.6.1-bin.tar.gz /apps ADD apache-tomcat-7.0.96/ /apps/tomcat-8080/ RUN yum -y update && yum -y install wget vim git net-tools && mv apache-maven-3.6.1 maven RUN rm -rf /apps/tomcat-8080/webapps/* && wget -O /apps/tomcat-8080/webapps/ROOT.war http://mirrors.jenkins-ci.org/war/latest/jenkins.war RUN wget -P /etc/yum.repos.d/ https://download.docker.com/linux/centos/docker-ce.repo && yum install -y docker-ce VOLUME /apps/tomcat-8080/logs VOLUME /apps/maven/conf VOLUME /apps/jenkins_home VOLUME /root/.ssh ENV JAVA_HOME=/apps/jdk1.8.0_202 ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV CATALINA_HOME /apps/tomcat-8080 ENV CATALINA_BASE /apps/tomcat-8080 ENV MAVEN_HOME=/apps/maven ENV JENKINS_HOME /apps/jenkins_home ENV PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin:$MAVEN_HOME/bin:$JENKINS_HOME ENV JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 RUN rm -rf /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime EXPOSE 8080 EXPOSE 50000 ENTRYPOINT /apps/tomcat-8080/bin/startup.sh && tail -f /apps/tomcat-8080/logs/catalina.out
2.构建镜像
docker build -t myjenkins .
3.运行jenkins
docker run -dti \ -p 8080:8080 -p 50000:50000 \ --name jenkins \ --restart=always \ -v $PWD/tomcat/logs:/apps/tomcat-8080/logs \ -v $PWD/maven/conf:/apps/maven/conf \ -v $PWD/jenkins_home:/apps/jenkins_home \ -v $PWD/.ssh:/root/.ssh \ myjenkins \
4.安装插件
安装jenkins推荐的插件
自定义安装下面3个插件
5.设置nginx转发
upstream jenkins { server 172.17.0.4:8080; } server { listen 80; server_name jenkins.example.com; index index.html index.htm index.php; location / { sendfile off; proxy_pass http://jenkins; #proxy_redirect default; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_max_temp_file_size 0; #this is the maximum upload size client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffering off; proxy_request_buffering off; proxy_set_header Connection ""; } }
二、设置
1.系统设置(系统管理->系统设置)
Publish over SSH 设置
Path to key:/root/.ssh/id_rsa SSH Servers : SSH Server Name:tx-x.x.x.x Hostname:x.x.x.x Username:root Remote Directory:/root
2.全局工具配置(系统管理->全局工具配置)
jdk设置
jdk别名 :jdk1.8.0_202 JAVA_HOME:/apps/jdk1.8.0_202
Git设置
Name :Default Path to Git executable:/usr/bin/git
Maven设置
Maven Name:maven MAVEN_HOME:/apps/maven
3.凭据
设置git拉取的登陆凭据
三、新建任务
1.新建任务->构建一个maven项目
2.源码管理
填写git项目信息
Repository URL :[email protected]:xxx/cicd-demo.git Credentials : 设置git密钥
2.构建触发器
每分钟去git仓库轮询是否提交 轮询 SCM:* * * * *
3.Build
Root POM:pom.xml Goals and options:clean package
4.构建后操作
拷贝文件
Transfer Set
Source files:target/cicd-demo*.jar Remove prefix:target Remote directory:tmp
执行脚本
Source files:Dockerfile Remove prefix:target Remote directory:/tmp Exec command: echo '================复制文件完成================' echo '=======进入主机tx-x.x.x.x的shell=========' echo '=========拷贝临时目录文件到指定目录===========' \cp -rf tmp/* /data/program/project/cicd-demo echo '============进入工程目录=====================' cd /data/program/project/cicd-demo/ echo '============停止容器 cicd-demo===============' docker stop cicd-demo echo '============删除容器 cicd-demo================' docker rm -f cicd-demo echo '============删除镜像 cicd-demo:latest============' docker rmi cicd-demo echo '============build 镜像 cicd-demo:latest============' docker build -t cicd-demo:latest . echo '============运行容器 gpsserver==================' docker run --name="cicd-demo" --restart always -it -d -p 8080:8080 -v /data/program/project/cicd-demo/logs:/logs-d cicd-demo:latest echo "finished!" exit ###退出远程机器 remotessh ###结尾哦 echo '================结束远程启动================'
四、自动构建
github的hook配置
gi[email protected]:lyang1989/cicd-demo.git仓库push后,jenkins会自动触发构建,运行程序。
1. GitHub上准备一个spring boot的web工程;
2. GitHub上配置Jenkins的webhook地址;
在工程主页面点击右上角的”Settings”,再点击左侧”Webhooks”,然后点击“Add ,如下图
如下图,在”Payload URL”位置填入webhook地址,再点击底部的”Add webhook按钮”,这样就完成webhook配置了,今后当前工程有代码提交,GitHub就会向此webhook地址发请求,通知Jenkins构建:
3. 生成Personal access tokens
Jenkins访问GitHub工程的时候,有的操作是需要授权的,所以我们要在GitHub上生成授权的token给Jenkins使用,这就是Personal access tokens,生成步骤如下:
(1) 登录GitHub,进入”Settings”页面,点击左下角的”Developer settings”,如下图:
(2). 跳转到”Developer settings”页面后,点击左下角的“Personal access tokens”,如下图:
(3). 跳转到”Personal access tokens”页面后,点击右上角的”Generate new token”按钮,如下图:
4. 可能会提示输入GitHub密码,输入后跳转到创建token的页面,如下图所示,输入title,再勾选”repo”和”admin:repo_hook”,再点击底部的”Generate token”按钮,就能产生一个新的access token,将此字符串复制下来,后面jenkins任务中会用到:
5. Jenkins配置GitHub访问权限(系统管理->系统设置);
(1)在系统设置页面找到”GitHub”,配置一个”GitHub Server”,如下图,”API URL”填写”https://api.github.com“,”Credentials”位置如下图红框所示,选择”Add->Jenkins”
(2)弹出的页面中,”Kind”选择”Secret text”,”Secret”填入前面在GitHub上生成的Personal access tokens,Description随便写一些描述信息,如下图:
6.修改构建触发器
修改构建触发器为hook
设置github访问权限
7. 修改web工程的源码,并提交到GitHub上;
8. 检查Jenkins的构建项目是否被触发自动构建,构建成功后,下载工程运行,看是不是基于最新的代码构建的;