name: Deploy to Cloudflare Workers on: push: branches: - '**' permissions: contents: read deployments: write pull-requests: write jobs: deploy: runs-on: ubuntu-latest name: Deploy steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Bun uses: oven-sh/setup-bun@v2 with: bun-version: latest - name: Install dependencies run: bun install --frozen-lockfile - name: Setup Wrangler Types uses: cloudflare/wrangler-action@v3 with: command: types apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} - name: Build run: bun run build env: NUXT_DISCORD_USER_ID: ${{ secrets.NUXT_DISCORD_USER_ID }} NUXT_WAKATIME_CODING: ${{ secrets.NUXT_WAKATIME_CODING }} NUXT_WAKATIME_EDITORS: ${{ secrets.NUXT_WAKATIME_EDITORS }} NUXT_WAKATIME_LANGUAGES: ${{ secrets.NUXT_WAKATIME_LANGUAGES }} NUXT_WAKATIME_OS: ${{ secrets.NUXT_WAKATIME_OS }} NUXT_WAKATIME_USER_ID: ${{ secrets.NUXT_WAKATIME_USER_ID }} NUXT_STATUS_PAGE: ${{ secrets.NUXT_STATUS_PAGE }} STUDIO_GITHUB_CLIENT_ID: ${{ secrets.STUDIO_GITHUB_CLIENT_ID }} STUDIO_GITHUB_CLIENT_SECRET: ${{ secrets.STUDIO_GITHUB_CLIENT_SECRET }} STUDIO_GITHUB_MODERATORS: ${{ secrets.STUDIO_GITHUB_MODERATORS }} - name: Determine Deployment Command id: target run: | if [ "${{ github.ref_name }}" = "main" ] || [ "${{ github.ref_name }}" = "master" ]; then echo "wrangler_command=deploy" >> $GITHUB_OUTPUT echo "env_name=Production" >> $GITHUB_OUTPUT else echo "wrangler_command=versions upload" >> $GITHUB_OUTPUT echo "env_name=Preview" >> $GITHUB_OUTPUT fi - name: Run Cloudflare Wrangler & Capture URL id: wrangler run: | # Exécuter wrangler et rediriger la sortie vers un fichier tout en l'affichant (tee) bunx wrangler ${{ steps.target.outputs.wrangler_command }} | tee wrangler.log # Extraction de l'URL if [ "${{ steps.target.outputs.env_name }}" = "Preview" ]; then PREVIEW_URL=$(grep -o 'https://[^ ]*\.workers\.dev' wrangler.log | head -n 1) echo "DEPLOY_URL=$PREVIEW_URL" >> $GITHUB_OUTPUT else echo "DEPLOY_URL=https://arthurdanjou.fr" >> $GITHUB_OUTPUT fi env: CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} BRANCH_NAME: ${{ github.head_ref || github.ref_name }} - name: Discord Notification uses: sarisia/actions-status-discord@v1 if: always() with: webhook: ${{ secrets.DISCORD_WEBHOOK }} status: ${{ job.status }} title: "Déploiement Portfolio (${{ steps.target.outputs.env_name }})" description: | Build terminé sur la branche **${{ github.ref_name }}**. Environnement : **${{ steps.target.outputs.env_name }}** URL : **${{ steps.wrangler.outputs.DEPLOY_URL }}** Commit: `${{ github.sha }}` par ${{ github.actor }}. nofail: false nodetail: false image: "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png" username: "GitHub Actions"