Kaynağa Gözat

add workflow to deploy any branch

Tienson Qin 1 hafta önce
ebeveyn
işleme
b6ca3097da
1 değiştirilmiş dosya ile 92 ekleme ve 0 silme
  1. 92 0
      .github/workflows/deploy-and-branch.yml

+ 92 - 0
.github/workflows/deploy-and-branch.yml

@@ -0,0 +1,92 @@
+name: Deploy Any Branch to Cloudflare
+
+on:
+  workflow_dispatch:
+    inputs:
+      branch:
+        description: "Git branch to build & deploy"
+        required: true
+        default: "main"
+
+env:
+  CLOJURE_VERSION: "1.11.1.1413"
+  NODE_VERSION: "22"
+  JAVA_VERSION: "11"
+
+jobs:
+  build-and-deploy:
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: Checkout selected branch
+        uses: actions/checkout@v4
+        with:
+          ref: ${{ inputs.branch }}
+          fetch-depth: 0
+
+      - name: Setup Java JDK
+        uses: actions/setup-java@v4
+        with:
+          distribution: "zulu"
+          java-version: ${{ env.JAVA_VERSION }}
+
+      - name: Set up Node
+        uses: actions/setup-node@v4
+        with:
+          node-version: ${{ env.NODE_VERSION }}
+
+      - name: Setup Clojure
+        uses: DeLaGuardo/[email protected]
+        with:
+          cli: ${{ env.CLOJURE_VERSION }}
+
+      - name: Install Yarn deps
+        run: yarn install --frozen-lockfile
+
+      - name: Set build environment flags
+        run: |
+          echo "ENABLE_FILE_SYNC_PRODUCTION=true" >> $GITHUB_ENV
+          echo "ENABLE_RTC_SYNC_PRODUCTION=true" >> $GITHUB_ENV
+
+      - name: Build web + workers
+        run: |
+          yarn gulp:build
+          clojure -M:cljs release app db-worker inference-worker \
+            --config-merge '{:compiler-options {:source-map true :source-map-include-sources-content true :source-map-detail-level :symbols}}'
+          yarn webpack-app-build
+
+          rsync -avz \
+            --exclude node_modules \
+            --exclude android \
+            --exclude ios \
+            --exclude mobile \
+            ./static/ ./public/
+
+          mkdir -p r2
+          mv ./public/js/main.js.map ./r2/${{ inputs.branch }}.main.js.map
+
+          sed -i "s|=main.js.map|=https://assets.logseq.io/${{ inputs.branch }}.main.js.map|g" \
+            ./public/js/main.js
+        env:
+          LOGSEQ_SENTRY_DSN: ${{ secrets.LOGSEQ_SENTRY_DSN }}
+          LOGSEQ_POSTHOG_TOKEN: ${{ secrets.LOGSEQ_POSTHOG_TOKEN }}
+
+      - name: Upload sourcemaps to R2
+        uses: ryand56/r2-upload-action@latest
+        with:
+          r2-account-id: 2553ea8236c11ea0f88de28fce1cbfee
+          r2-access-key-id: ${{ secrets.R2_ACCESS_KEY_ID }}
+          r2-secret-access-key: ${{ secrets.R2_SECRET_ACCESS_KEY }}
+          r2-bucket: ${{ secrets.R2_ASSETS_BUCKET }}
+          source-dir: r2
+          destination-dir: ./
+
+      - name: Publish to Cloudflare Pages
+        uses: cloudflare/pages-action@1
+        with:
+          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
+          accountId: 2553ea8236c11ea0f88de28fce1cbfee
+          projectName: "logseq-any-branch"
+          directory: "public"
+          gitHubToken: ${{ secrets.GITHUB_TOKEN }}
+          branch: ${{ inputs.branch }}