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 && docker-compose down && docker-compose up -d"