Skip to content

Add form bounty template #8

Add form bounty template

Add form bounty template #8

name: Build and Deploy
on:
push:
branches:
- main
workflow_dispatch:
env:
PAGODA_CONSOLE_URL: https://developer-console-api-prod-k2zt32g7mq-ue.a.run.app
CONTRACT_WASM_PATH: contract/target/wasm32-unknown-unknown/release/hello_near.wasm
PREBUILT_CONTRACT_WASM_PATH: prebuilt-assets/hello_near.wasm
FRONTEND_PACKAGE_NAME: Boilerplate Frontend
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Set env
run: |
TEMP_SECRET="${{secrets.PAGODA_CONSOLE_TOKEN}}"
TEMP=$(echo ${TEMP_SECRET:6} | base64 --decode)
echo "GITHUB_REPO_FULL_NAME=$(echo ${TEMP%:*})" >> $GITHUB_ENV
echo "NUMBER_OF_COMMITS=$(curl -I -k "https://api.github.com/repos/${{ github.repository }}/commits?per_page=1" -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" | sed -n '/^[Ll]ink:/ s/.*"next".*page=\([0-9]*\).*"last".*/\1/p')" >> $GITHUB_ENV
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: "18.x"
- name: Cache node modules
id: cache-npm
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: |
**/node_modules
key: node-modules-${{ hashFiles('**/package-lock.json') }}
- name: Install 🔧
if: steps.cache-npm.outputs.cache-hit != 'true'
run: |
npm install --frozen-lockfile
- if: env.NUMBER_OF_COMMITS > 1
name: Build Contract 🔧
run: |
npm run build:contract
- name: Upload File
id: upload
uses: jon-lewis/upload-file-action@master
with:
url: '${{ env.PAGODA_CONSOLE_URL }}/deploys/deployWasm'
forms: '{"githubRepoFullName":"${{ env.GITHUB_REPO_FULL_NAME }}","commitMessage": "${{ github.event.head_commit.message }}", "commitHash": "${{ github.sha }}"}'
customHeaders: '{"Authorization": "${{ secrets.PAGODA_CONSOLE_TOKEN }}"}'
fileForms: '{"main.wasm":"${{ env.NUMBER_OF_COMMITS > 1 && env.CONTRACT_WASM_PATH || env.PREBUILT_CONTRACT_WASM_PATH }}"}'
- name: Build Frontend 🔧
run: |
cd frontend
npx next build
npx next export
env:
NEXT_PUBLIC_CONTRACT_NAME: "${{ fromJson(steps.upload.outputs.output).data.contractDeployments[0].contractDeployConfig.nearAccountId }}"
# CONTRACT_NAME is temporary until the repo is updated to use NextJS variables
CONTRACT_NAME: "${{ fromJson(steps.upload.outputs.output).data.contractDeployments[0].contractDeployConfig.nearAccountId }}"
NEXT_PUBLIC_NEAR_NETWORK: testnet
- name: Upload Frontend
id: uploadFrontend
uses: jon-lewis/upload-directory-action@master
with:
url: '${{ env.PAGODA_CONSOLE_URL }}/ipfs/add'
forms: '{}'
customHeaders: '{"Authorization": "${{ secrets.PAGODA_CONSOLE_TOKEN }}"}'
directory: frontend/out
- name: Update frontend url
id: update-frontend-url
uses: fjogeleit/http-request-action@v1
with:
url: '${{ env.PAGODA_CONSOLE_URL }}/deploys/addFrontend'
method: 'POST'
data: '{"repoDeploymentSlug": "${{ fromJson(steps.upload.outputs.output).data.slug }}", "cid": "${{ fromJson(steps.uploadFrontend.outputs.output).data.cid }}", "packageName": "${{ env.FRONTEND_PACKAGE_NAME }}" }'
customHeaders: '{"Authorization": "${{ secrets.PAGODA_CONSOLE_TOKEN }}"}'