name: CI/CD on: push: branches: - "main" env: IMAGE_NAME: "project_badging" jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Remove old Docker images 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 }} docker images --filter "reference=${{ env.IMAGE_NAME }}*" -q | xargs docker rmi -f || true fi - 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: | docker load -i ~/badging.tar docker run -d \ -p ${{ secrets.PORT }}:${{ secrets.PORT }} \ --env-file /home/${{ secrets.USERNAME }}/.env \ --network host \ --restart=always \ --name ${{ env.IMAGE_NAME }} \ ${{ env.IMAGE_NAME }}:${{ github.sha }}