name: Deploy Local on: workflow_dispatch: env: REGISTRY: ${{ vars.CONTAINER_REGISTRY }} REGISTRY_USERNAME: ${{ vars.CONTAINER_REGISTRY_USERNAME }} REGISTRY_PASSWORD: ${{ secrets.CONTAINER_REGISTRY_PASSWORD }} CONTAINER_IMAGE_NAME: ${{ vars.CONTAINER_REGISTRY }}/${{ vars.CONTAINER_IMAGE_OWNER }}/${{ vars.CONTAINER_IMAGE_NAME }}:latest jobs: build-deploy: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Login to Docker Registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ env.REGISTRY_USERNAME }} password: ${{ env.REGISTRY_PASSWORD }} - name: Setup Docker Buildx uses: docker/setup-buildx-action@v2 with: config-inline: | [registry."${{ env.REGISTRY }}"] ca=["/etc/ssl/certs/ca-certificates.crt"] - name: Build and Push Docker Image uses: docker/build-push-action@v3 with: context: . platforms: linux/amd64 tags: ${{ env.CONTAINER_IMAGE_NAME }} push: true - name: Remote Deploy uses: appleboy/ssh-action@v1.2.1 with: host: ${{ vars.SSH_DEPLOY_HOST }} port: ${{ vars.SSH_DEPLOY_PORT }} username: ${{ secrets.SSH_DEPLOY_USER }} password: ${{ secrets.SSH_DEPLOY_PASSWORD }} script: eval "${{ secrets.SSH_DEPLOY_CMD }}" - name: Notify Discord Success if: success() run: | curl -H "Content-Type: application/json" -X POST \ -d '{ "embeds": [{ "title": "✅ Gitea Local Deployment Success!", "description": "**Details:**\n- Image: `${{ env.CONTAINER_IMAGE_NAME }}`\n- Deployed by: `${{ github.actor }}`", "color": 3066993, "footer": { "text": "Local Release Notification", "icon_url": "https://example.com/success-icon.png" }, "timestamp": "'$(date -u +%Y-%m-%dT%H:%M:%SZ)'" }] }' \ ${{ secrets.DISCORD_WEBHOOK }} - name: Notify Discord Failure if: failure() run: | curl -H "Content-Type: application/json" -X POST \ -d '{ "embeds": [{ "title": "❌ Gitea Local Deployment Failed!", "description": "**Details:**\n- Image: `${{ env.CONTAINER_IMAGE_NAME }}`\n- Attempted by: `${{ github.actor }}`", "color": 15158332, "footer": { "text": "Local Release Notification", "icon_url": "https://example.com/failure-icon.png" }, "timestamp": "'$(date -u +%Y-%m-%dT%H:%M:%SZ)'" }] }' \ ${{ secrets.DISCORD_WEBHOOK }}