Bypass setup wizard & preinstall plugins for Jenkins

如果每次重啟一個新的Jenkins容器
就要重新設定啟動密碼、安裝Plugin(套件)
所以就在想能不能繞過,也先把套件裝好
以此建一個新的image減去重複的步驟
因為這是讓開發階段可以快速測試過的一條路
這方法目前使適用於本地測試執行的伺服器
對外伺服器的設定之後有機會我們再談
Dockerfile設定如下
FROM jenkins/jenkins:lts

USER root
RUN mkdir /angular-dist
RUN chown -R jenkins:0 /angular-dist \
    && chmod -R g+rw /angular-dist

USER jenkins
ENV JAVA_OPTS -Djava.awt.headless=true -Djenkins.install.runSetupWizard=false
COPY plugins.txt /usr/share/jenkins/ref/plugins.txt

RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt


關掉SetupWizard: -Djenkins.install.runSetupWizard=false
安裝Plugin: RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt

plugins.txt與Dockerfile同目錄,配置的範例如下
plugins.txt
script-security:1.39
command-launcher:1.2
cloudbees-folder:6.2.1
bouncycastle-api:2.16.2
structs:1.10
workflow-step-api:2.14
scm-api:2.2.6
workflow-api:2.24
junit:1.23
antisamy-markup-formatter:1.5
...
...
<套件名稱>:<版本>
列出已安裝的套件,可參考此連結
curl 'http://<URL>:<PORT>/pluginManager/api/xml?depth=1&xpath=/*/*/shortName|/*/*/version&wrapper=plugins' | perl -pe 's/.*?<shortName>([\w-]+).*?<version>([^<]+)()(<\/\w+>)+/\1@\2\n/g' | sort
接著在該jenkins docker目錄下執行以下指令建立新的image
docker build --force-rm -t jenkins/jenkins:ytTest .
再到外層的docker-compose.yml目錄執行
docker-compose up
跑起來的畫面就應該會如下
以上是Jenkins繞過Setup Wizard與預載Plugins的方法~

留言