docker安装Jenkins

By prince No comments

一、部署

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个插件

SSH plugin

Publish Over SSH

Maven Integration plugin

GitHub plugin

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的构建项目是否被触发自动构建,构建成功后,下载工程运行,看是不是基于最新的代码构建的;

 

发表评论

 

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据