原文: https://mp.weixin.qq.com/s/Tof1fDJkckIMTMZplSYizA

Jenkins 是开源 CI&CD 软件的佼佼者,提供超过 1000 个插件,支持构建、部署和自动化,满足各种项目的需求。

部署 Jenkins

编写 docker-compose.yml:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
version: '3.9'

services:
    jenkins:
        image: jenkins/jenkins:latest # 软件镜像
        container_name: jenkins
        privileged: true
        ports:  # 端口映射到宿主机,注意避免冲突
            - "127.0.0.1:18080:8080" # 控制台端口
            - "29090:50000" # 对外暴露的 TCP 通信端口,注意安全!
        volumes:
            - /opt/jenkins:/var/jenkins_home # 文件系统映射到宿主机(可选)
            - /opt/jdk1.8.0:/usr/local/jdk1.8.0 # 指向宿主机的 JDK 路径
            - /usr/bin/docker:/usr/local/bin/docker # 指向宿主机的 Docker 路径
            - /var/run/docker.sock:/var/run/docker.sock
        restart: unless-stopped
警告:如果选择将 /var/jenkins_home 映射到宿主机 /opt/jenkins,可能会报错 xxx Permission denied,此时修改 /opt/jenkins 的权限为 777 即可。

Jenkins Docker 服务启动后,完成 Nginx 的反向代理:

1
2
3
4
5
6
7
8
location / {
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:18080; # 为上述 docker 映射的控制台端口
}

初始化 Jenkins

Nginx 启动后,通过浏览器访问控制台,会提示解锁 Jenkins,根据提示去 /var/jenkins_home/secrets/initialAdminPassword 文件中获取解锁码。按照上述 docker-compose 的配置,该文件已经被映射到了宿主机 /opt/jenkins/secrets/ 下,可以直接访问到

接下来,按照提示安装插件(比如:Maven、Docker 插件),创建管理员账户并成功登录,即可进入控制台。

插件安装完成后,勾选“安装完成后重启 Jenkins(空闲时)”,使插件生效。

插件安装成功后,进入 Dashboard > 系统管理 > 全局工具配置 完成 SpringBoot 项目的环境配置,url 地址为 https://{$jenkins-host}/manage/configureTools/:

Github 凭证添加

Jenkins 需要从 Git 仓库拉取代码,所以这里需要配置连接凭证。首先登录 Github Developer Settings,遵循最小权限原则,创建一个专供 Jenkins 使用的 Token

然后回到 Jenkins 控制台,创建一个 Username with password 类型的凭据:

用户名为 Github 用户名,密码为刚刚创建的 Token;

设置路径为 Dashboard > 系统管理 > 凭据管理 > 全局凭据 (unrestricted);

url 地址为 https://{$jenkins-host}/manage/credentials/store/system/domain/_/。

至此,Jenkins 的服务端就配置完成了,接下来开始正式运维项目。

参考