App: next release #1282
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Testnet Deployment | |
# This workflow: | |
# - Deploys the contracts to the Liquity v2 Testnet | |
# - Deploys the app to Vercel (main branch only, not PRs) | |
# - Deploys the gallery to Vercel (main branch only, not PRs) | |
on: | |
push: | |
branches: [main, dev] | |
paths: | |
- ".github/workflows/testnet-deployment.yml" | |
- "contracts/**" | |
- "frontend/**" | |
pull_request: | |
paths: | |
- ".github/workflows/testnet-deployment.yml" | |
- "contracts/**" | |
env: | |
CI: true | |
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} | |
FOUNDRY_VERSION: nightly | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: false | |
jobs: | |
deploy-contracts: | |
if: false # Contracts can no longer be deployed to Erigon dev chain because it doesn't support recent hardforks | |
name: Deploy contracts | |
runs-on: ubuntu-latest | |
steps: | |
- name: Git checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install pnpm | |
uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- name: Install Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: ".node-version" | |
cache: "pnpm" | |
cache-dependency-path: "pnpm-lock.yaml" | |
- name: Install dependencies | |
run: pnpm install --frozen-lockfile | |
working-directory: ./contracts | |
- name: Install Foundry | |
uses: foundry-rs/foundry-toolchain@v1 | |
with: | |
version: ${{ env.FOUNDRY_VERSION }} | |
- name: Run deployment tool | |
working-directory: ./contracts | |
run: ./deploy liquity-testnet --debug --verify | |
timeout-minutes: 10 | |
env: | |
DEPLOYER: ${{ secrets.DEPLOYER }} | |
- name: Upload deployment context | |
uses: actions/upload-artifact@v4 | |
with: | |
name: deployment-context | |
path: ./contracts/deployment-context-latest.json | |
deploy-app: | |
name: Deploy app | |
runs-on: ubuntu-latest | |
needs: deploy-contracts | |
if: ${{ github.event_name == 'push' && github.ref_name == 'main' }} | |
env: | |
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} | |
steps: | |
- name: Git checkout | |
uses: actions/checkout@v4 | |
- name: Install pnpm | |
uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- name: Install dependencies | |
run: pnpm install --frozen-lockfile | |
- name: Install Vercel CLI | |
run: pnpm install --global vercel@canary | |
- name: Download deployment context | |
uses: actions/download-artifact@v4 | |
with: | |
name: deployment-context | |
path: ./contracts | |
- name: Prepare Environment from Latest Deployment Context | |
working-directory: ./contracts | |
env: | |
APP_ENV_FILE: ../frontend/app/.env.local | |
DEPLOYMENT_CONTEXT_FILE: ./deployment-context-latest.json | |
run: | | |
echo 'NEXT_PUBLIC_CHAIN_ID=1337' >> $APP_ENV_FILE | |
echo 'NEXT_PUBLIC_CHAIN_NAME=Liquity Testnet' >> $APP_ENV_FILE | |
echo 'NEXT_PUBLIC_CHAIN_CURRENCY=Ether|ETH|18' >> $APP_ENV_FILE | |
echo 'NEXT_PUBLIC_CHAIN_RPC_URL=https://testnet.liquity.org/rpc' >> $APP_ENV_FILE | |
echo 'NEXT_PUBLIC_CHAIN_BLOCK_EXPLORER=Liquity Testnet|https://testnet.liquity.org/' >> $APP_ENV_FILE | |
echo 'NEXT_PUBLIC_CHAIN_CONTRACT_MULTICALL=0xffB2BAa708261533b51D18394fd8AFd0E32aBC55|488' >> $APP_ENV_FILE | |
pnpm tsx utils/deployment-artifacts-to-app-env.ts $DEPLOYMENT_CONTEXT_FILE $APP_ENV_FILE --append | |
cat $APP_ENV_FILE | |
- name: Pull Vercel Environment Information | |
run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} | |
- name: Build Project Artifacts | |
run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }} | |
- name: Deploy Project Artifacts to Vercel | |
run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }} | |
deploy-gallery: | |
name: Deploy gallery | |
runs-on: ubuntu-latest | |
if: ${{ github.event_name != 'pull_request' }} | |
env: | |
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_GALLERY_PROJECT_ID }} | |
steps: | |
- name: Git checkout | |
uses: actions/checkout@v4 | |
- name: Install pnpm | |
uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- name: Install dependencies | |
run: pnpm install --frozen-lockfile | |
- name: Install Vercel CLI | |
run: pnpm install --global vercel@canary | |
- name: Pull Vercel Environment Information | |
run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} | |
- name: Build Project Artifacts | |
run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }} | |
- name: Deploy Project Artifacts to Vercel | |
run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }} |