Как автоматизировать обновление плагинов jenkins в контейнере Docker? - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть скрипт оболочки для обновления плагинов Jenkins. Я хочу запустить скрипт в докер-контейнере (где работает Jenkins), чтобы запускать скрипт всегда при запуске jenkins cointainer. Когда я запускаю скрипт вручную в контейнере, он работает нормально, но как добиться того, чтобы скрипт запускался автоматически, когда Дженкинс внутри контейнера для монет активен.

Dockerfile

FROM jenkinsci/blueocean
user root
COPY jenkins_update.sh /opt/

jenkins_update.sh

curl http://127.0.0.1:8080/jnlpJars/jenkins-cli.jar --output /opt/jenkins-cli.jar

#waiting when jenkins will be up for download
#while true; do
#   sleep 10
#   curl --fail http://localhost:8080/jnlpJars/jenkins-cli.jar --output /opt/jenkins-cli.jar && break
# done


UPDATE_LIST=$(java -jar /opt/jenkins-cli.jar -s http://localhost:8080/ -auth "admin:admin" -noKeyAuth list-plugins | grep -e ')$' | awk '{ print $1 }' );
if [ ! -z "${UPDATE_LIST}" ]; then
echo Updating Jenkins Plugins: ${UPDATE_LIST};
java -jar /opt/jenkins-cli.jar -s http://localhost:8080/ -auth "admin:admin" -noKeyAuth install-plugin ${UPDATE_LIST};
java -jar /opt/jenkins-cli.jar -s http://localhost:8080/ -auth "admin:admin" -noKeyAuth safe-restart;
fi

докер-compose.yml

my_jenkins:
    build:
      context: jenkins_config/
    ports:
      - "8080:8080"
      - "50000:50000"
    container_name: jenkins

    deploy:
          replicas: 1      
          restart_policy:
            condition: on-failure

    environment:
          - "JAVA_OPTS=-Djenkins.install.runSetupWizard=false"

        command: ["/opt/jenkins_update.sh"]
...