首頁 > 軟體

Docker Compose構建Jenkins的實現

2022-06-30 18:01:34

Jenkins

建立目標資料夾

$ cd /usr/local
$ mkdir docker
$ cd docker
$ mkdir jenkins
$ cd jenkins
$ vi docker-compose.yml

建立docker-compose.yml

內容如下:

version: '3.1'
services:
  jenkins:
    restart: always
    image: jenkins/jenkins
    container_name: jenkins
    ports:
      # 釋出埠
      - 8080:8080
      # 基於 JNLP 的 Jenkins 代理通過 TCP 埠 50000 與 Jenkins master 進行通訊
      - 50000:50000
    environment:
      TZ: Asia/Shanghai
    volumes:
      - ./data:/var/jenkins_home

安裝過程中會出現資料卷目錄許可權問題,用以下命令解決:

chown -R 1000 /usr/local/docker/jenkins/data

啟動容器

docker-compose up -d

啟動完成後存取:http://ip:8080

解鎖 Jenkins

Jenkins 第一次啟動時需要輸入一個初始密碼用以解鎖安裝流程,使用 docker logs jenkins 即可方便的檢視到初始密碼。也可以根據提示在容器中檢視/var/jenkins_home/secrets/initialAdminPassword檔案。

docker logs -f jenkins

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

67b9966bc4334a17ad7a7daef043bac8

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

外掛安裝

外掛是 Jenkins的核心,其豐富的外掛可以滿足不同人群的不同需求。

Jenkins 官網外掛地址:https://plugins.jenkins.io/

輸入初始密碼後,選擇自選方式安裝外掛。

注意:除了預設勾選的外掛外,一定要勾選 Publish over SSH 外掛,這是我們實現持續交付的重點外掛。

點選安裝後,根據網路情況,安裝時間不一樣,耐性等待即可。

出現部分外掛安裝失敗時,點選重試按鈕,多次重試,如果還是無法安裝,記住這些外掛的名字,稍後可以手動安裝。

安裝成功效果圖 建立管理員賬號

進入首頁

Jenkins手動安裝外掛

如下例子為安裝中文外掛

Manage Jenkins -> Manage Plugins -> Avaliable

右上角搜尋方塊查詢想要安裝的外掛,選中,點選Download now and install after restart

下載好後,重啟Jenkins

docker-compose down
docker-compose up -d

設定 JDK & Maven

上傳 JDK Maven tar 包到伺服器(容器資料卷目錄),進行解壓縮。

Manage Jenkins -> Global Tool Configuration系統管理->全域性工具設定)。

安裝 JDK

/var/jenkins_home/jdk1.8.0_152

安裝Maven

點選儲存

安裝動態引數外掛

該外掛的主要目的是為了方便我們後面在做專案構建時可以按照版本進行構建(支援一鍵回滾)

  • Manage Jenkins -> Manage Plugins -> Avaliable
  • 搜尋 Extended Choice Parameter
  • 點選Download now and install after restart

設定 Jenkins 的 GitLab SSH 免密登入

互動式進入 Jenkins 容器

docker exec -it jenkins /bin/bash

生成 SSH KEY

ssh-keygen -t rsa -C "your_email@example.com"

檢視公鑰

cat /var/jenkins_home/.ssh/id_rsa.pub

複製公鑰到 GitLab

手動克隆一次專案,該步驟的主要作用是為了生成和伺服器的驗證資訊

jenkins@730898bc8b96:~$ git clone ssh://git@192.168.50.131:2222/test/test.git
Cloning into 'test'...
The authenticity of host '[192.168.50.131]:2222 ([192.168.50.131]:2222)' can't be established.
ECDSA key fingerprint is SHA256:x21ujjNoJ+7wXGszSI7s70szbK0/+7mTOeDP5h0saMs.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[192.168.50.131]:2222' (ECDSA) to the list of known hosts.
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
jenkins@730898bc8b96:~$ 

檢視生成檔案

jenkins@730898bc8b96:~$ cd .ssh/
jenkins@730898bc8b96:~/.ssh$ ls -al
total 20
drwx------  2 jenkins jenkins 4096 Apr  9 19:03 .
drwxr-xr-x 16 jenkins root    4096 Apr  9 19:03 ..
-rw-------  1 jenkins jenkins 2602 Apr  9 18:57 id_rsa
-rw-r--r--  1 jenkins jenkins  572 Apr  9 18:57 id_rsa.pub
-rw-r--r--  1 jenkins jenkins  222 Apr  9 19:03 known_hosts
jenkins@730898bc8b96:~/.ssh$ 

設定 Publish over SSH

系統管理 -> 系統設定 -> Publish over SSH

點選新增,其中 Remote Directory 是指 Jenkins 可以在目標伺服器操作的目錄,選擇 Use password, 輸入目標伺服器密碼

測試能否正常通訊

點選儲存

持續交付 Maven 專案

為專案建立標籤

GitLab 中為專案建立標籤

在 Jenkins 中建立 Maven Project

Jenkins 中建立一個基於 Maven 的任務

這裡沒有Maven 專案選項,需要安裝外掛 Maven Integration Pipeline Maven Integration

設定第一次構建

構建專案

檢視構建紀錄檔

設定正式構建

增加引數化構建過程

這裡使用了 Groovy 指令碼來查詢最近的 tags 版本,程式碼如下:

def ver_keys = [ 'bash', '-c', 'cd /var/jenkins_home/workspace/myshop-dependencies;git pull>/dev/null; git remote prune origin >/dev/null; git tag -l|sort -r |head -10 ' ]
ver_keys.execute().text.tokenize('n')

關閉原始碼管理

增加構建步驟

shell 指令碼程式碼如下:

echo $RELEASE_VERSION
cd /var/jenkins_home/workspace/myshop-dependencies
git checkout $RELEASE_VERSION
git pull origin $RELEASE_VERSION
mvn clean package

使用引數化構建專案

批准 groovy 指令碼

再次點選引數化構建

檢視構建紀錄檔

傳送檔案或執行遠端命令

Source files:需要傳輸到遠端目標伺服器的檔案

**/*.jar,docker/**

Remove prefix:刪除字首。比如傳輸 **/*.jar,我們打包的 .jar 檔案是在 target 目錄下的,傳輸時會一併建立 target 目錄,如果不希望建立 target 目錄,則可以使用該引數遮蔽掉這些字首資料夾。

Remote directory:在遠端目標伺服器建立操作目錄

myapp

Exec command:在遠端目標伺服器執行控制檯命令

cd /usr/local/jenkins/myapp
cp target/myapp-1.0.0-SNAPSHOT.jar docker
cd docker
docker build -t 192.168.50.128:5000/myapp:v1.0.0 .
docker push 192.168.50.128:5000/myapp:v1.0.0
docker-compose down
docker-compose up -d
docker image prune -f

到此這篇關於Docker Compose構建Jenkins的實現的文章就介紹到這了,更多相關Docker Compose構建Jenkins內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com