diff --git a/.github/workflows/test-deploy.yml b/.github/workflows/test-deploy.yml new file mode 100644 index 0000000..71adfa6 --- /dev/null +++ b/.github/workflows/test-deploy.yml @@ -0,0 +1,48 @@ +name: CI/CD + +on: + push: + branches: + - "develop" + +env: + IMAGE_NAME: "project_badging" + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Build Docker image + run: docker build -t ${{ env.IMAGE_NAME }}:${{ github.sha }} . + + - name: Create image archive + run: docker save ${{ env.IMAGE_NAME }}:${{ github.sha }} -o badging.tar + + - name: Upload image archive using appleboy/scp-action + uses: appleboy/scp-action@v0.1.4 + with: + host: ${{ secrets.HOST }} + username: ${{ secrets.USERNAME }} + password: ${{ secrets.PASSWORD }} + source: badging.tar + target: ~/ + + - name: Extract and load image on droplet + uses: appleboy/ssh-action@v0.1.10 + with: + host: ${{ secrets.HOST }} + username: ${{ secrets.USERNAME }} + password: ${{ secrets.PASSWORD }} + script: | + if docker inspect ${{ env.IMAGE_NAME }} >/dev/null 2>&1; then + docker stop ${{ env.IMAGE_NAME }} + docker rm ${{ env.IMAGE_NAME }} + fi + docker load -i ~/badging.tar + docker run -d \ + -p ${{ secrets.PORT }}:${{ secrets.PORT }} \ + --env-file /home/${{ secrets.USERNAME }}/.env \ + --restart=always \ + --name ${{ env.IMAGE_NAME }} \ + ${{ env.IMAGE_NAME }}:${{ github.sha }}