Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add CI to deploy to preview #496

Merged
merged 3 commits into from
Nov 2, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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}