From 6d81935dcf43a5b1500c0ffa2bea0d1de46a36aa Mon Sep 17 00:00:00 2001 From: Sebastian Scatularo Date: Tue, 31 Oct 2023 12:18:34 -0300 Subject: [PATCH] add connect manual deployment --- .github/workflows/connect.yml | 258 ++++++++++++++++++++++++++++++++++ 1 file changed, 258 insertions(+) create mode 100644 .github/workflows/connect.yml diff --git a/.github/workflows/connect.yml b/.github/workflows/connect.yml new file mode 100644 index 000000000..ada671c4c --- /dev/null +++ b/.github/workflows/connect.yml @@ -0,0 +1,258 @@ +name: Portal Bridge [Manual] + +on: + workflow_dispatch: + inputs: + connect-repository: + description: 'connect repository bame' + required: true + default: 'wormhole-foundation/wormhole-connect' + connect-branch: + description: 'connect branch bame' + required: true + default: 'portal-bridge' + portal-branch: + description: 'portal branch bame' + required: true + default: 'advance' + network: + type: choice + description: 'cluster branch bame' + required: true + default: 'testnet' + options: + - testnet + - mainnet + +jobs: + branch-sha: + name: Compute Branch Sha + runs-on: ubuntu-latest + outputs: + value: ${{ steps.set-version.outputs._BRANCH_NAME_SHA }} + steps: + - name: Set Version + id: set-version + run: echo "_BRANCH_NAME_SHA=$(echo ${{ inputs.connect-branch }}_${{ inputs.portal-branch }} | sha256sum | cut -c -10)" >> "${GITHUB_OUTPUT}" + + docs: + name: "Build Portal Bridge Documentation" + runs-on: "ubuntu-latest" + concurrency: + group: ${{ github.ref }}-portal-docs-preview + needs: + - branch-sha + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - name: Set up Node environment + uses: actions/setup-node@v3 + with: + node-version: v16.19.1 + - name: Install dependencies + run: | + pushd apps/docs + npm ci + - name: Build + env: + PUBLIC_URL: "/${{ needs.branch-sha.outputs.value }}/docs" + run: | + pushd apps/docs + npm run build + - name: Upload Artifact + uses: actions/upload-artifact@v3 + with: + name: preview-docs-build + path: apps/docs/build + + portal: + name: "Build Portal Bridge (Advance)" + runs-on: xlabs-large-runner + concurrency: + group: ${{ github.ref }}-portal-preview + cancel-in-progress: true + environment: Cloudflare-Preview + needs: + - branch-sha + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + repository: ${{ inputs.connect-repository }} + ref: ${{ inputs.connect-branch }} + path: apps/portal + - name: Set up Node environment + uses: actions/setup-node@v3 + with: + node-version: v18.17.1 + - name: Setup Git + run: | + git config user.name "xLabs CI" + git config user.email "devops@xlabs.xyz" + - name: Install dependencies + run: | + pushd apps/portal + npm install + - name: Set Version + id: set-version + run: | + pushd apps/portal + npm version $(node -p -e "require('./package.json').version")-P$(echo ${{ github.sha }} | cut -c -10) + - name: Build + env: + PUBLIC_URL: "/${{ needs.branch-sha.outputs.value }}/advance" + NODE_OPTIONS: "--max-old-space-size=10240" + REACT_APP_CLUSTER: ${{ inputs.network }} + REACT_APP_SOLANA_API_URL: ${{ vars.REACT_APP_SOLANA_API_URL }} + REACT_APP_COVALENT_API_KEY: ${{ secrets.REACT_APP_COVALENT_API_KEY }} + REACT_APP_WALLET_CONNECT_PROJECT_ID: ${{ secrets.REACT_APP_WALLET_CONNECT_PROJECT_ID }} + run: | + pushd apps/portal + pushd public + npm run set-version + popd + echo 'REACT_APP_VERSION=$npm_package_version' > .env + npm run build + - name: Upload Artifact + uses: actions/upload-artifact@v3 + with: + name: preview-advance-build + path: apps/portal/build + + connect: + name: "Build Portal Bridge" + runs-on: "ubuntu-latest" + concurrency: + group: ${{ github.ref }}-connect-preview + cancel-in-progress: true + environment: Cloudflare-Preview + needs: + - branch-sha + outputs: + pkg-version: ${{ steps.set-version.outputs._PKG_VERSION }} + steps: + - name: Set up Node environment + uses: actions/setup-node@v3 + with: + node-version: v18.17.1 + - name: Checkout Wormhole Connect + uses: actions/checkout@v3 + with: + repository: ${{ inputs.connect-repository }} + ref: ${{ inputs.connect-branch }} + path: wormhole-connect + - name: Checkout Portal Bridge + uses: actions/checkout@v3 + with: + path: portal + - name: Setup Git + run: | + pushd portal + git config user.name "xLabs CI" + git config user.email "devops@xlabs.xyz" + - name: Set Portal Bridge Version + id: set-version + run: | + pushd portal/apps/connect + npm version $(node -p -e "require('./package.json').version")-P$(echo ${{ github.sha }} | cut -c -10) + echo "_PKG_VERSION=$(node -p -e "require('./package.json').version")" >> "${GITHUB_OUTPUT}" + - name: Build Portal Bridge + env: + PUBLIC_URL: "/${{ needs.branch-sha.outputs.value }}" + VITE_APP_VERSION: ${{ steps.set-version.outputs._PKG_VERSION }} + VITE_APP_CLUSTER: ${{ inputs.network }} + VITE_APP_ADVANCE_PATH: "/${{ needs.branch-sha.outputs.value }}/advance" + run: | + npm install -g husky + pushd wormhole-connect + npm ci --workspaces --if-present + npm run build + npm link --workspaces --if-present + popd + pushd portal/apps/connect + npm ci + npm link @wormhole-foundation/wormhole-connect + pushd public + npm run set-version + popd + echo 'VITE_APP_VERSION=$npm_package_version' > .env + npm run build + - name: Upload Portal Bridge Artifact + uses: actions/upload-artifact@v3 + with: + name: preview-connect-build + path: portal/apps/connect/dist + + publish: + name: "Publish" + needs: + - portal + - connect + - docs + runs-on: "ubuntu-latest" + concurrency: + group: ${{ github.ref }}-publish-preview + cancel-in-progress: true + permissions: + contents: read + packages: write + steps: + - name: Download Artifact + uses: actions/download-artifact@v3 + with: + name: preview-connect-build + - name: Download Artifact + uses: actions/download-artifact@v3 + with: + name: preview-advance-build + path: advance + - name: Download Artifact + uses: actions/download-artifact@v3 + with: + name: preview-docs-build + path: docs + - name: Set up GitHub NPM registry + uses: actions/setup-node@v3 + with: + node-version: v16.19.1 + registry-url: https://npm.pkg.github.com + - name: Publish + env: + NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: npm publish + + deploy: + name: "Deploy Preview" + needs: + - publish + - branch-sha + - connect + runs-on: "ubuntu-latest" + concurrency: + group: ${{ github.ref }}-deploy-preview + cancel-in-progress: true + permissions: + contents: write + environment: Cloudflare-Preview + steps: + - name: Checkout preview branch + uses: actions/checkout@v3 + with: + ref: preview + - name: Setup Git + run: | + git config user.name "xLabs CI" + git config user.email "devops@xlabs.xyz" + - name: Trigger a preview Deploy + run: | + sleep 30s + mkdir -p preview/${{ needs.branch-sha.outputs.value }} + pushd preview/${{ needs.branch-sha.outputs.value }} + [[ ! -f .latest ]] && touch .latest + [[ ! -f .artifacts ]] && touch .artifacts + cat .latest >> .artifacts + echo ${{ needs.connect.outputs.pkg-version }} > .latest + git add .artifacts .latest + git commit -m"Update preview artifacts ${{ needs.connect.outputs.pkg-version }}" + git push + echo "The preview URL is: ${{ vars.PREVIEW_ROOT_URL }}/${{ needs.branch-sha.outputs.value }}/" >> ${GITHUB_STEP_SUMMARY}