最近一直在玩 CI&CD,正好手上有闲置的服务器,就用来部署 Jenkins 了。
Jenkins 的安装及配置
本着能 docker 就 docker 的原则,就上 Google 搜了下,果然有 docker 部署 Jenkins 的教程
https://www.linuxidc.com/Linux/2020-01/161895.htm
Docker 环境下的安装
-
在 Docker 容器中运行 Jenkins:
docker run -p 8080:8080 -p 50000:5000 --name jenkins \ -u root \ -v /etc/localtime:/etc/localtime \ -v /data/jenkins_home:/var/jenkins_home \ -e Java_OPTS=-Duser.timezone=Asia/Shanghai \ -d jenkins/jenkins:lts
-
echo ‘Asia/Shanghai’ >/etc/timezone
然后安装过程按照自己的需求来,大体可以参考上面链接的内容。
配置 https 及反代
自动话部署还是需要 ssl 来保证安全问题。
建站
方便起见,直接使用宝塔管理网站。

ssl
证书直接在宝塔里使用 Let’s Encrypt 申请。

反代
开始我用的宝塔自带的反代,结果一直出现”反代设置有误“

按照网上的教程做也没有,后来换了proxy_pass
upstream jenkins {
server 127.0.0.1:8080 fail_timeout=0;
}
server {
listen 80;
server_name jenkins.domain.tld;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name jenkins.domain.tld;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location / {
proxy_set_header Host $host:$server_port;
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_redirect http:// https://;
proxy_pass http://jenkins;
# Required for new HTTP-based CLI
proxy_http_version 1.1;
proxy_request_buffering off;
proxy_buffering off; # Required for HTTP-based CLI to work over SSL
# workaround for https://issues.jenkins-ci.org/browse/JENKINS-45651
add_header 'X-SSH-Endpoint' 'jenkins.domain.tld:50022' always;
}
}
但是进入网页发现图标大小不对,图片无法加载的问题,赶快再回去看 nginx 的配置,果然宝塔的默认配置设置了 css,图片的位置,注释掉就好了。

最后在系统管理
-系统配置
-Jenkins Location
中把 Jenkins URL
换成你的域名,就 ok 了。

更新
因为使用 docker 部署,所以用 Jenkins 执行 shell 的时候需要进 dockers 容器进行测试。(我一开始执行 python,怎么都找不到路劲,后来进容器安装了 anaconda。)
docker exec -it jenkins bash
像调整时间就需要进容器内设置
#进入容器
docker exec -it jenkins bash
# 查看容器时区
cat /etc/timezone
#Etc/UTC
#修改容器时区
echo 'Asia/Shanghai' > /etc/timezone
#退出容器
exit
# 重启容器
docker restart jenkins
参考链接:
https://www.linuxidc.com/Linux/2020-01/161895.htm