簡體   English   中英

從gitlab-ci.yml啟動/停止遠程服務器上的tomcat

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM