name: Build and Deploy on: push: branches: - master jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Login to Gitea Registry run: | echo "${{ secrets.REGISTRY_PASSWORD }}" | \ docker login https://gitea.johannesbot.de -u ${{ secrets.REGISTRY_USER }} --password-stdin - name: Build Image run: docker build -t gitea.johannesbot.de/johannesbot/stupid-apis:latest . - name: Push Image run: docker push gitea.johannesbot.de/johannesbot/stupid-apis:latest deploy: needs: build runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Create deployment directory uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.SSH_HOST }} username: ${{ secrets.SSH_USER }} password: ${{ secrets.SSH_PASSWORD }} port: ${{ secrets.SSH_PORT || 22 }} script: mkdir -p /home/${{ secrets.SSH_USER }}/stupid-apis - name: Copy docker-compose via SCP uses: appleboy/scp-action@v0.1.7 with: host: ${{ secrets.SSH_HOST }} username: ${{ secrets.SSH_USER }} password: ${{ secrets.SSH_PASSWORD }} port: ${{ secrets.SSH_PORT || 22 }} source: "docker-compose.prod.yml" target: "/home/${{ secrets.SSH_USER }}/stupid-apis" - name: Deploy via SSH uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.SSH_HOST }} username: ${{ secrets.SSH_USER }} password: ${{ secrets.SSH_PASSWORD }} port: ${{ secrets.SSH_PORT || 22 }} script: | cd /home/${{ secrets.SSH_USER }}/stupid-apis mv docker-compose.prod.yml docker-compose.yml # Login as root/sudo to ensure we can pull echo "${{ secrets.REGISTRY_PASSWORD }}" | sudo docker login https://gitea.johannesbot.de -u ${{ secrets.REGISTRY_USER }} --password-stdin sudo docker compose pull sudo docker compose up -d --remove-orphans --pull always sudo docker image prune -f