name: Build and Deploy Kotlin gradle Application on: push: branches: - working-poc jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Build backend docker image run: | sudo /usr/bin/docker build -t gitea-workshop-app -f ./Dockerfile-backend . --no-cache - name: Extract backend docker image into archive run: | sudo /usr/bin/docker save gitea-workshop-app:latest -o ./gitea-workshop-app.tar - name: Transfer artifacts to remote server env: SSH_PRIVATE_KEY: ${{ secrets.PROD_SSH_PRIVATE_KEY }} REMOTE_HOST: ${{ secrets.PROD_REMOTE_HOST }} REMOTE_USER: ${{ secrets.PROD_REMOTE_USER }} REMOTE_PORT: ${{ secrets.PROD_REMOTE_PORT }} REMOTE_PATH: ${{ secrets.PROD_REMOTE_PATH }} run: | mkdir -p ~/.ssh echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa chmod 400 ~/.ssh/id_rsa scp -o StrictHostKeyChecking=no -P $REMOTE_PORT ./gitea-workshop-app.tar $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH scp -o StrictHostKeyChecking=no -P $REMOTE_PORT ./docker-compose.yml $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH - name: Launch application onto remote server env: SSH_PRIVATE_KEY: ${{ secrets.PROD_SSH_PRIVATE_KEY }} REMOTE_HOST: ${{ secrets.PROD_REMOTE_HOST }} REMOTE_USER: ${{ secrets.PROD_REMOTE_USER }} REMOTE_PORT: ${{ secrets.PROD_REMOTE_PORT }} REMOTE_PATH: ${{ secrets.PROD_REMOTE_PATH }} run: | ssh -o StrictHostKeyChecking=no $REMOTE_HOST -l £REMOTE_USER -p $REMOTE_PORT << EOC cd $REMOTE_PATH sudo /usr/bin/docker load < $REMOTE_PATH/gitea-workshop-app.tar sudo /usr/bin/docker compose down sudo /usr/bin/docker compose up --detach EOC