Docker中安装Jenkins并配置

教程较简洁,不清楚的部分请脑补。

1.部署docker环境

此步略过,网上教程很多,安装后最好配置为国内源。

2.安装jenkins

先去这里看一下最新lts的版本号:

https://jenkins.io/zh/download/

目前是2.204.1。

mkdir -p /data/jenkins
chown -R 1000:1000 /data/jenkins
docker run --name jenkins \
-v /data/jenkins:/var/jenkins_home:z \
-p 12001:8080 \
-p 12002:50000 \
-e TZ="Asia/Shanghai" \
--restart=always \
--add-host=updates.jenkins-ci.org:172.17.0.1 \
jenkins/jenkins:2.204.1

"--add-host=updates.jenkins-ci.org:172.17.0.1 \"这一步请配合后面的nginx反向代理使用,否则将无法下载插件,172.17.0.1是宿主机的ip。

记住终端输出的密码,在“Please use the following password to proceed to installation:”文字下方。

3.配置nginx反向代理

由于上一步处于阻塞状态中,这里可以新开一个终端来进行操作。

扫描二维码关注公众号,回复: 8881152 查看本文章
    server {
        listen 443 ssl;
        ssl on;
        server_name jenkins.xxx.com;
        ssl_certificate      /etc/letsencrypt/live/xxx.com/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/xxx.com/privkey.pem;
        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://127.0.0.1:12001;
            # Required for new HTTP-based CLI
            proxy_http_version 1.1;
            proxy_request_buffering off;
            client_max_body_size 10M;
            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.xxx.com:50022' always;
        }
    }

4.初次配置jenkins

因为上一步使用nginx配置了反向代理,所以这里使用https://jenkins.xxx.com来访问jenkins网址。

输入之前记住的密码,进行解锁,然后稍等一会儿。

插件建议什么都不要装,因为源在国外,很慢很难装成功,等会儿换了源之后再装,先把“推荐插件”记住。

之后,设定一个管理员用户。

这时初步配置完毕,自动跳转到了首页,现在开始安装插件。

5.安装插件

入口路径位于Manage Jenkins-Plugin Manager-Advanced-Upload Plugin。将Update Site的值换成“https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json”。

更改hosts

vim /etc/hosts

宿主机借助nginx做一下反向代理

    server {
        listen       80;
        server_name  updates.jenkins-ci.org;
        location ^~ /download/ {
            proxy_redirect off;
            proxy_pass https://mirrors.tuna.tsinghua.edu.cn/jenkins/;
        }
    }

之后开始一个个安装之前的推荐插件。

这么做的原因是,因为下载插件的url都是jenkins官方的,如果要将它换成其它源,就需要用换host和反向代理的方式,“欺骗”插件从其它源中下载,毕竟这个下载url是无法直接更改的。

6.深入配置

如果使用了gradle,需要在系统管理-全局工具配置中添加以下gradle。

安装Publish Over SSH插件,这样就可以在编译结束后,将jar包传送给远程服务器了。

安装好后到系统管理-系统配置,最下方,输入远程服务器的相关参数(比如宿主机就可以作为一个远程服务器)。

如果之前没有生成过私钥,可以进入jenkins的容器中,使用“ssh-keygen -t rsa -m pem”的命令生成公私钥,然后记住私钥(没有后缀名那个)的位置,之后将公钥追加到宿主机/root/.ssh/authorized_keys文件中(没有就创建一个,里面可以放多个公钥,每个公钥占一行)。

回到刚才的设置,“Path to key”中输入私钥在容器中的位置,“Name”输入远程服务器的标识,“Hostname”输入远程服务器的ip或者域名,“Username”输入登陆远程服务器的用户名(比如用root),之后保存。

新建一个任务,选择“构建一个自由风格的软件项目”。

任务配置,“源码管理-Git”中,“Repository URL”输入git项目地址,“Credentials”输入能访问这个git的用户和密码。

“构建”中,选择“Invoke Gradle”,并且选择之前添加的gradle版本。

“构建后操作”中,“Name”选择之前添加的远程服务器,“Source files”中输入要发送给远程服务器的文件,“Remove prefix”为发送文件时要截去的路径,“Remote directory”为将文件发送到远程服务器的目录(这个目录会拼接在之前ssh设置中的“Remote Directory”之后),“Exec command”为文件传输完成后在远程服务器上执行的命令(命令执行的默认目录为登陆用户的home目录)。这个指令很关键,需要根据实际情况编写,从服务器拿到一个jar包之后如何进行发布为止。

填好之后,保存,立即构建。第一次构建会下载gradle,所以速度比较慢,可以进入“控制台输出”看看实时日志。

发布了29 篇原创文章 · 获赞 0 · 访问量 2992

猜你喜欢

转载自blog.csdn.net/weixin_43855938/article/details/104090457
今日推荐