У меня есть скрипт оболочки для обновления плагинов 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"]