基於docker部署jenkins

張q發表於2020-09-24

1. 拉映象

和其他的部署的映象的方式一樣,通常是直接使用docker search jenkins
然後直接docker pull jenkins
此時,在安裝外掛的時候發現外掛都安裝失敗,提示jenkins版本太低
正確的安裝方式是pull的時候直接帶上版本號,使用docker pull jenkins/jenkins:lts

2. 部署jenkins

  • 預設使用的埠號是808050000
  • 預設資料目錄為:/var/jenkins_home需要對映出來持久化
  • 如果需要把jenkins單獨對映一級目錄,則啟動時新增:JENKINS_OPTS: '--prefix=/jenkins'
  • 修改時區問題,則啟動時新增:JAVA_OPTS=-Duser.timezone=Asia/Shanghai

因此使用docker部署的話,可以執行以下指令碼:

docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v /jenkins_data/:/var/jenkins_home -e JENKINS_OPTS="--prefix=/jenkins" JAVA_OPTS=-Duser.timezone=Asia/Shanghai

使用docker-compose時,xml為:

jenkins:
  image: docker.io/jenkins/jenkins:lts
  ports:
    - 8080:8080
    - 50000:50000
  restart: always
  volumes:
    - /jenkins_data/:/var/jenkins_home/
    - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
  environment:
    JENKINS_OPTS: '--prefix=/jenkins'
    JAVA_OPTS: '-Duser.timezone=Asia/Shanghai'

3. 配置nginx轉發

配置轉發時,最好是把jenkins目錄單獨對映出來,轉發時需要帶上實際的請求頭資訊,不然會報指令碼錯誤:

Mixed Content: The page at ‘https://XXX’ was loaded over HTTPS, but requested an insecure

nginx配置為:

location /jenkins/ {
      proxy_pass http://jenkins:8080/jenkins/;
      proxy_set_header Host $host;
      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;
  }

配置完成後基本上就可以訪問了

4.外掛選擇

如果是第一次用,在部署時選擇預設即可,後續在按需選擇
常用的外掛有以下幾種:

  • Git plugin
  • Gitee Plugin #和碼雲中整合
  • GitHub plugin
  • Maven Integration plugin
  • Publish Over SSH
  • Pipeline
  • NodeJS Plugin
    ...

5.構建時注意事項

  • 預設安裝後無法找到maven或者版本不對
    jenkins - 系統管理 - 全域性工具配置 - maven -新增maven安裝新的maven,在構建時使用新配置的maven即可

  • gitee外掛配置
    Gitee 幫助中心 / 第三方服務整合 / 幫助詳情 / Jenkins 外掛

  • 如何把構建的結果拷貝到目標機器
    如果是拷貝到同一個宿主機的環境,則可以把宿主機的目錄也對映到jenkins中
    如果是網路可聯通的環境,則使用Publish Over SSH外掛,通過外掛或者shell的scp拷貝過去

相關文章