From 0d0f82447c41f28b7014a68bcaba6e0bd49c3b06 Mon Sep 17 00:00:00 2001 From: Luca Burgard Date: Sun, 28 Apr 2024 01:39:26 +0200 Subject: [PATCH] feat: add docker deploy --- .gitea/workflows/deploy-docker-workflow.yml | 77 +++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 .gitea/workflows/deploy-docker-workflow.yml diff --git a/.gitea/workflows/deploy-docker-workflow.yml b/.gitea/workflows/deploy-docker-workflow.yml new file mode 100644 index 0000000..27431b7 --- /dev/null +++ b/.gitea/workflows/deploy-docker-workflow.yml @@ -0,0 +1,77 @@ +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: Build + runs-on: ubuntu-latest + + 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 ${{ vars.name }} . + + - name: Save Docker image as tar + run: docker save ${{ vars.name }} -o ${{ vars.name }}.tar + + - name: Transfer Docker image to server + uses: appleboy/scp-action@master + with: + host: ${{ vars.SERVER_HOST }} + username: ${{ vars.SERVER_USER }} + key: ${{ secrets.SERVER_KEY }} + source: "${{ vars.name }}.tar" + target: "${{ vars.DEPLOY_PATH }}$/{{ vars.name }}.tar" + + - name: SSH into server and load Docker image + uses: appleboy/ssh-action@master + with: + host: ${{ vars.SERVER_HOST }} + username: ${{ vars.SERVER_USER }} + key: ${{ secrets.SERVER_KEY }} + script: "| docker load -i ${{ vars.DEPLOY_PATH }}/${{ vars.name }}.tar"