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反向代理

由於上一步處於阻塞狀態中,這裏可以新開一個終端來進行操作。

    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。

如果使用了maven,配置方法和gradle一樣,但是maven官方源下載速度很慢,建議手動下載安裝。手動下載好maven好之後,將解壓後根目錄下的文件複製到docker的/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/3.6.3中,權限要有rwxr-xr-x。其中3.6.3是我的maven版本號,更換成自己的版本號即可。然後到jenkins設置中,設置MAVEN_HOME。

安裝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,所以速度比較慢,可以進入“控制檯輸出”看看實時日誌。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章