diff --git a/.gitea/workflows/deploy-docker-workflow.yml b/.gitea/workflows/deploy-docker-workflow.yml new file mode 100644 index 0000000..5a8eed9 --- /dev/null +++ b/.gitea/workflows/deploy-docker-workflow.yml @@ -0,0 +1,91 @@ +on: + workflow_call: + inputs: + NAME: + type: string + required: true + MAVEN_USER: + type: string + required: true + SERVER_HOST: + type: string + required: true + SERVER_USER: + type: string + required: true + DEPLOY_PATH: + type: string + required: true + secrets: + MAVEN_SECRET: + required: true + SERVER_KEY: + required: true + +jobs: + build: + name: Deploy Docker + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/master' + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + + - name: Install Maven + run: sudo apt update && sudo apt-get install maven -y + + - name: Prepare Maven credentials + uses: s4u/maven-settings-action@v2.6.0 + with: + servers: | + [{ + "id": "repo", + "username": "${{ vars.MAVEN_NAME }}", + "password": "${{ secrets.MAVEN_SECRET }}" + }] + + - name: Build with Maven + run: mvn clean install + + - name: Build Docker image + run: | + docker build -t ${{ inputs.NAME }} . + + - name: Save Docker image as tar + run: | + docker save -o ${{ inputs.NAME }}.tar ${{ inputs.NAME }} + chmod 664 ${{ inputs.NAME }}.tar + + - name: Transfer Docker image to server + uses: appleboy/scp-action@master + env: + NAME: ${{ inputs.NAME }} + DEPLOY_PATH: ${{ vars.DEPLOY_PATH }} + with: + host: ${{ vars.SERVER_HOST }} + username: ${{ vars.SERVER_USER }} + key: ${{ secrets.SERVER_KEY }} + source: ${{ env.NAME }}.tar + target: ${{ env.DEPLOY_PATH }} + + - name: SSH into server and load Docker image + uses: appleboy/ssh-action@master + env: + NAME: ${{ inputs.NAME }} + DEPLOY_PATH: ${{ vars.DEPLOY_PATH }} + with: + host: ${{ vars.SERVER_HOST }} + username: ${{ vars.SERVER_USER }} + key: ${{ secrets.SERVER_KEY }} + script: | + cd ${{ env.DEPLOY_PATH }} + docker load -i ${{ env.NAME }}.tar + docker-compose down + docker-compose up -d \ No newline at end of file