Skip to content

Commit

Permalink
add CI to deploy to preview (#496)
Browse files Browse the repository at this point in the history
* add connect manual deployment

* upadte runner

* add fixes
  • Loading branch information
sebastianscatularo authored Nov 2, 2023
1 parent 20feb80 commit f502249
Showing 1 changed file with 248 additions and 0 deletions.
248 changes: 248 additions & 0 deletions .github/workflows/connect.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,248 @@
name: Portal Bridge [Manual]

on:
workflow_dispatch:
inputs:
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: "ubuntu-latest"
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: xlabs/portal-bridge-ui
ref: ${{ inputs.portal-branch }}
- 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 "[email protected]"
- name: Install dependencies
run: npm install
- name: Set Version
id: set-version
run: 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 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: build

connect:
name: "Build Portal Bridge [Connect]"
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: wormhole-foundation/wormhole-connect
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 "[email protected]"
- 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 "[email protected]"
- 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}

0 comments on commit f502249

Please sign in to comment.