[英]How do I add a timer to my gitlab-ci job to make it stop within 1 minute in gitlab-ci.yml
[英]Start/stop tomcat on remote server from gitlab-ci.yml
我正在嘗試編寫腳本以使用gitlab-ci.yml文件從gitlab部署Spring Boot應用程序。 以下是文件的內容。
image: maven:3-jdk-8
services:
- docker:dind
stages:
- build
- deploy
build:
stage: build
script:
- echo "Packaging"
- mvn clean package -DskipTests
artifacts:
expire_in: 1 week
when: always
paths:
- target/app.war
deploy:
stage: deploy
dependencies:
- build
script:
- "#!/bin/sh"
- chmod og= $PRODUCTION_SERVER_PASSWORD
- scp -i "$PRODUCTION_SERVER_PASSWORD" -o StrictHostKeyChecking=no target/app.war $PRODUCTION_SERVER_USER@$PRODUCTION_SERVER:/home/ubuntu/wars
- ssh -i "$PRODUCTION_SERVER_PASSWORD" -o StrictHostKeyChecking=no $PRODUCTION_SERVER_USER@$PRODUCTION_SERVER sh /opt/tomcat/bin/catalina.sh stop
- ssh -i "$PRODUCTION_SERVER_PASSWORD" -o StrictHostKeyChecking=no $PRODUCTION_SERVER_USER@$PRODUCTION_SERVER rm -r /opt/tomcat/webapps/ROOT*
- ssh -i "$PRODUCTION_SERVER_PASSWORD" -o StrictHostKeyChecking=no $PRODUCTION_SERVER_USER@$PRODUCTION_SERVER cp -r /home/ubuntu/wars/app.war /opt/tomcat/webapps/ROOT.war
- ssh -i "$PRODUCTION_SERVER_PASSWORD" -o StrictHostKeyChecking=no $PRODUCTION_SERVER_USER@$PRODUCTION_SERVER sh /opt/tomcat/bin/catalina.sh start
environment:
name: production
url: <server-url>
when: manual
觸發部署階段后,該行出現錯誤
- ssh -i "$PRODUCTION_SERVER_PASSWORD" -o StrictHostKeyChecking=no $PRODUCTION_SERVER_USER@$PRODUCTION_SERVER sh /opt/tomcat/bin/catalina.sh stop
發生的錯誤是
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
但是當我添加
- echo $JAVA_HOME
在deploy
階段的script
下,它輸出/usr/local/openjdk-8
。 我還無法理解這一點。 為什么說未定義JAVA_HOME
。 我是否必須顯式定義JAVA_HOME
,如果是,則在哪里以及如何進行定義?
請嘗試以下方法:
script:
- "#!/bin/sh"
- chmod og= $PRODUCTION_SERVER_PASSWORD
- scp -i "$PRODUCTION_SERVER_PASSWORD" -o StrictHostKeyChecking=no target/app.war $PRODUCTION_SERVER_USER@$PRODUCTION_SERVER:/home/ubuntu/wars
- ssh -i "$PRODUCTION_SERVER_PASSWORD" -o StrictHostKeyChecking=no $PRODUCTION_SERVER_USER@$PRODUCTION_SERVER "
sh /opt/tomcat/bin/catalina.sh stop
rm -r /opt/tomcat/webapps/ROOT*
cp -r /home/ubuntu/wars/app.war /opt/tomcat/webapps/ROOT.war
export JAVA_HOME=/usr/local/openjdk-8
/opt/tomcat/bin/catalina.sh start
"
environment:
name: production
您不需要執行多個ssh,第二步如果JAVA_HOME是正確的,則只需執行簡單的export JAVA_HOME=/path/to/jdk/bin/
就可以了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.