deploy-cloud.yml 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. name: "Deploy: app.torqvoice.com"
  2. on:
  3. workflow_dispatch:
  4. inputs:
  5. tag:
  6. description: "Image tag to deploy (e.g. latest, v1.3.0, dev-abc1234)"
  7. required: false
  8. default: "latest"
  9. jobs:
  10. deploy:
  11. runs-on: [self-hosted, Linux, X64, hetzner]
  12. steps:
  13. - name: Checkout repository
  14. uses: actions/checkout@v4
  15. - name: Log in to GitHub Container Registry
  16. run: echo "${{ secrets.GHCR_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
  17. - name: Write .env file
  18. env:
  19. VIRTUAL_HOST: ${{ secrets.CLOUD_VIRTUAL_HOST }}
  20. DATABASE_URL: ${{ secrets.CLOUD_DATABASE_URL }}
  21. BETTER_AUTH_SECRET: ${{ secrets.CLOUD_BETTER_AUTH_SECRET }}
  22. APP_URL: ${{ secrets.CLOUD_APP_URL }}
  23. STRIPE_SECRET_KEY: ${{ secrets.CLOUD_STRIPE_SECRET_KEY }}
  24. STRIPE_WEBHOOK_SECRET: ${{ secrets.CLOUD_STRIPE_WEBHOOK_SECRET }}
  25. STRIPE_PRO_PRICE_ID: ${{ secrets.CLOUD_STRIPE_PRO_PRICE_ID }}
  26. STRIPE_ENTERPRISE_PRICE_ID: ${{ secrets.CLOUD_STRIPE_ENTERPRISE_PRICE_ID }}
  27. run: env | grep -E '^(VIRTUAL_HOST|DATABASE_URL|BETTER_AUTH_SECRET|APP_URL|STRIPE_)' > .env
  28. - name: Deploy
  29. run: APP_TAG=${{ inputs.tag }} docker compose -f docker-compose.cloud.yml up -d --pull always
  30. - name: Prune old images and build cache
  31. run: docker image prune -f && docker builder prune -f