name: Deploy to Production on: push: tags: - 'v*' jobs: deploy: runs-on: splendid-bear steps: - name: Checkout tag env: GITEA_TOKEN: ${{ gitea.token }} run: | set -e export HOME=/tmp git config --global credential.helper '!f() { echo "username=oauth2"; echo "password=$GITEA_TOKEN"; }; f' git config --global --add safe.directory "${{ vars.PROD_APP_DIR }}" cd "${{ vars.PROD_APP_DIR }}" git remote set-url origin "${{ gitea.server_url }}/${{ gitea.repository }}.git" git fetch --tags --force git checkout "${{ gitea.ref_name }}" - name: Write .env env: PROD_ENV_FILE: ${{ secrets.PROD_ENV_FILE }} run: | printf '%s' "$PROD_ENV_FILE" > "${{ vars.PROD_APP_DIR }}/.env" - name: Build image run: | cd "${{ vars.PROD_APP_DIR }}" docker compose build - name: Deploy env: APP_VERSION: ${{ vars.APP_VERSION }} run: | set -euo pipefail cd "${{ vars.PROD_APP_DIR }}" # --remove-orphans removes retired service containers, not named volumes. docker compose up -d --wait --wait-timeout 180 --remove-orphans docker compose rm -sf rustfs_init