# Jenkins入门
https://www.jenkins.io/zh/doc/
官网教程非常详细 => 构建node环境 (opens new window)
# 运行Jenkins (opens new window)
$ docker run \
-u root \
-d --name jenkins \
-p 8081:8080 \
-v /data/jenkins_home:/var/jenkins_home \
jenkinsci/blueocean;
$ docker run \
--rm \
-u root \
-p 8080:8080 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$HOME":/home \
jenkins/jenkins:lts
#
# -d //启动在后台
# --name //容器名字
# -p //端口映射(8081:宿主主机端口,8080:容器内部端口)
# -v //数据卷挂载映射(/data/jenkins_home:宿主主机目录,另外一个即是容器目录)
# enkins/jenkins:lts //Jenkins镜像(最新版)
-d, --detach Run container in background and
print container ID
-v, --volume list Bind mount a volume
--volume-driver string Optional volume driver for the
-p, --publish list Publish a container's port(s) to
the host
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
--rm 选项不能与 -d 同时使用(或者说同时使用没有意义),即只能自动清理 foreground 容器,不能自动清理 detached 容器。
jenkinsci/blueocean 与 jenkins/jenkins
jenkins/jenkins是官方不带任何插件的,jenkinsci/blueocean包含了Blue Ocean插件。
建议使用jenkinsci/blueocean
# 访问 Jenkins/Blue Ocean Docker 容器
# jenkins任务类型 (opens new window)
# jenkins freestyle 任务
# jenkins管理
- 在url后添加指令
http://192.168.240.179:8080/exit # 关闭
http://192.168.240.179:8080/restart # 重启
http://192.168.240.179:8080/reload # 重新加载配置
2
3
# Jenkins push时自动触发构建
Jenkins webhook配置 => https://www.jianshu.com/p/f90013658c38
webhooks需要在GitHub页面配置https://www.cnblogs.com/hd92/p/11138010.html
jenkins github ssh凭证配置 => https://zhuanlan.zhihu.com/p/387980967
# generic-webhook-trigger
在Gitea配置好webhook后可以测试是否可以使用
# 常见问题
- docker启动问题
sudo docker run \
-d --name jenkins \
-p 8081:8080 \
-v /data/jenkins_home:/var/jenkins_home \
-v /etc/timezone:/etc/timezone:ro \
-v /etc/localtime:/etc/localtime:ro \
jenkinsci/blueocean
# -v /etc/timezone:/etc/timezone:ro 和 -v /etc/localtime:/etc/localtime:ro \
# 表示将宿主机的时区文件同步到容器内,解决时区问题
2
3
4
5
6
7
8
9
10
执行上述命令后
sudo docker ps 没有显示,sudo docker ps -a后显示了容器,表示容器没有正常启动,并且STATUS:exited(1)
原因是:权限的问题
正确的做法是以root用户启动
sudo docker run -u root
- No valid crumb was included in the request
https://blog.51cto.com/u_13589448/2066437
# Gitlab webhook Jenkins 403错误
Error 403 anonymous is missing the Job/Build Permission
jenkins gitlab webhook 403 anonymous is missing the Job/Build permission
首先jenkins 某个pipeline 的webhook是有权限控制,并不是任意gitlab中的项目都可以触发。
# Gitlab api token配置
https://gitlab.com/-/profile/personal_access_tokens