# This workflow will build a package using Maven and then publish it to GitHub packages when a release is created # For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#apache-maven-with-a-settings-path name: Build and Deploy on: push: branches: - main workflow_dispatch: jobs: build: runs-on: ubuntu-latest permissions: contents: read steps: - uses: actions/checkout@v2 - name: Set up JDK 11 uses: actions/setup-java@v2 with: java-version: "11" distribution: "adopt" - run: mkdir ./target - name: Cache Maven packages uses: actions/cache@v1 with: path: ~/.m2 key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2 - name: Build with Maven run: mvn -f assignment/pom.xml --batch-mode --update-snapshots verify - run: cp ./assignment/target/assignment-0.0.1-SNAPSHOT.jar ./target - name: Build with Maven run: mvn -f executor-pool/pom.xml --batch-mode --update-snapshots verify - run: cp ./executor-pool/target/executor-pool-0.0.1-SNAPSHOT.jar ./target - name: Build with Maven run: mvn -f executor-base/pom.xml --batch-mode --update-snapshots install - name: Build with Maven run: mvn -f executor1/pom.xml --batch-mode --update-snapshots verify - run: cp ./executor1/target/executor1-0.0.1-SNAPSHOT.jar ./target - name: Build with Maven run: mvn -f executor2/pom.xml --batch-mode --update-snapshots verify - run: cp ./executor2/target/executor2-0.0.1-SNAPSHOT.jar ./target - name: Build with Maven run: mvn -f tapas-tasks/pom.xml --batch-mode --update-snapshots verify - run: cp ./tapas-tasks/target/tapas-tasks-0.0.1-SNAPSHOT.jar ./target - name: Build with Maven run: mvn -f tapas-auction-house/pom.xml --batch-mode --update-snapshots verify - run: cp ./tapas-auction-house/target/tapas-auction-house-0.0.1-SNAPSHOT.jar ./target - run: cp ./.deployment/docker-compose.yml ./target - name: Archive artifacts uses: actions/upload-artifact@v1 with: name: app path: ./target/ deploy: runs-on: ubuntu-latest needs: [build] steps: - name: Download app artifacts uses: actions/download-artifact@v1 with: name: app - name: Copy host via scp uses: appleboy/scp-action@master env: HOST: ${{ secrets.SSH_HOST }} USERNAME: ${{ secrets.SSH_USER }} PORT: 22 KEY: ${{ secrets.SSH_PRIVATE_KEY }} with: source: "app/*" target: "/home/${{ secrets.SSH_USER }}/" strip_components: 1 rm: false overwrite: true - name: Executing remote command uses: appleboy/ssh-action@master with: host: ${{ secrets.SSH_HOST }} USERNAME: ${{ secrets.SSH_USER }} PORT: 22 KEY: ${{ secrets.SSH_PRIVATE_KEY }} script: | cd /home/${{ secrets.SSH_USER }}/ touch acme.json sudo chmod 0600 acme.json sudo echo "PUB_IP=$(wget -qO- http://ipecho.net/plain | xargs echo)" | sed -e 's/\./-/g' > .env sudo docker-compose up -d --build --force-recreate