前言

Jenkins安装比较简单,这是环境变量已经准备好的情况下,如果我们再懒一点连环境变量都不想设置呢,用Docker!


准备阶段

Jenkins部署与其他系统一样,需要注意两个问题:

  • 端口映射
  • 持久化存储

端口映射

Jenkins需要使用两个端口,分别为:

  • 8080
  • 50000

8080用于Web访问,50000用于连接Slave。


持久化存储

Jenkins只有一个目录需要进行持久化存储,为/var/jenkins_home,我们需要将此目录映射至本地。

建立本地目录mkdir -p /data/docker/jenkins,需要注意的是权限问题,dockerfile中的文件均是用1000这个UIDGID进行创建的,所以我们需要提前对刚刚创建的文件夹进行赋权,chown -R 1000:1000 /data/docker/jenkins


部署

镜像选择

这里我们不要选择此官方镜像:https://hub.docker.com/_/jenkins/ 因为这个镜像中Jenkisn仍然是2.60版很久未更新,连Pipeline插件都无法安装报错。

我们采用官方另外一个镜像进行安装:https://hub.docker.com/r/jenkins/jenkins 描述比较少,但是操作与上一个官方镜像相同。


开始部署

docker run \
-itd \
-p 22080:8080 \
-p 50000:50000 \
-v /data/docker/jenkins:/var/jenkins_home \
-e JAVA_OPTS=-Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Shanghai \
--restart=always \
--name jenkins \
jenkins/jenkins:lts

这里的-e JAVA_OPTS=-Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Shanghai为指定时区,默认不加的话,时区为UTC。


反向代理

使用acme.sh进行SSL证书管理,使用Nginx进行反向代理。

证书管理

ACME.SH自动申请管理SSL证书:https://spex.top/archives/acme-ssl-https.html

# 建立目录
mkdir /etc/nginx/ssl/jenkins

# 申请证书
acme.sh --issue --dns dns_ali -d jenkins.domain.com

# 安装证书
acme.sh  --installcert  -d  jenkins.domain.com   \
        --key-file   /etc/nginx/ssl/jenkins/jenkins.domain.com.key \
        --fullchain-file /etc/nginx/ssl/jenkins/fullchain.cer \
        --reloadcmd  "service nginx force-reload"

反向代理

添加SSL证书,将访问数据反向代理至映射的22080端口。

vi /etc/nginx/conf.d/jenkins.conf

upstream jenkins {
    server 127.0.0.1:22080;
}

server {
    listen 80;
    server_name jenkins.domain.com;
    return 301 https://$host$request_uri; #将http访问301错误指向https
}

server {
    listen 443 ssl;
    server_name jenkins.domain.com;
    
    ssl on;
    ssl_certificate /etc/nginx/ssl/jenkins/fullchain.cer;
    ssl_certificate_key /etc/nginx/ssl/jenkins/jenkins.domain.com.key;
    ssl_session_timeout 5m;
    ssl_session_cache shared:SSL:20m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;
    location / {
        proxy_pass http://jenkins;
        proxy_redirect off;
        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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        allow 8.8.8.8; #仅允许这个ip访问,不符合则返回403错误
        deny all; #禁止其他所有ip访问
        error_page 403 /403.html;
            location = /403.html {
                root /usr/share/nginx/html;
                allow all;
            }
       }
}

修改密码

打开jenkins.domain.com,首次登陆会有引导页面,首先输入解锁码,这个解锁码可以在docker log中查看。

docker logs jenkins

输入确认后会引导安装插件,最后输入建立用户名与密码。


Jenkins配置

修改Jenkins显示语言

安装插件

Jenkins-系统管理-插件管理-Avaliable,在Filter输入locate后筛选,点选后选择install without restart

修改配置

Jenkins-系统管理-系统设置,定位到locate位置,Default language输入zh_CN,并点选Ignore browser preference and force this language to all users前的复选框,然后点击save保存生效。


修改系统发件邮箱

Jenkins-系统管理-系统设置,需要修改以下几处:

  • Jenkins Location

    • System Admin e-mail address:输入发件邮箱
  • Extended E-mail Notification

    • SMTP server:邮箱发件地址,腾讯邮箱为smtp.exmail.qq.com
    • Use SMTP Authentication:勾选
    • User Name:输入发件邮箱
    • Password:邮箱密码
    • Use SSL:勾选
    • SMTP port:465
    • Default Content Type:HTML

如上设置后点击save保存生效。

Last modification:May 7th, 2019 at 03:12 pm