Skip to content

Build & Test

Build & Test #167

Workflow file for this run

name: "Build & Test"
on:
push:
pull_request:
schedule:
- cron: 0 0 * * 0
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- uses: oven-sh/setup-bun@v1
- name: Install node dependencies
working-directory: app
run: bun install
- name: Lint
working-directory: app
run: |
bun run typecheck
bun run lint
- name: Build
working-directory: app
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
run: |
bun run build
tar cfJ micropad.tar.xz build/*
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: micropad
path: 'app/micropad.tar.xz'
test:
name: Test
runs-on: ubuntu-latest
needs: [build]
steps:
- name: Checkout repository
uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- uses: oven-sh/setup-bun@v1
- uses: actions/download-artifact@v3
with:
name: micropad
- name: Install node dependencies
working-directory: app
run: |
bun install
bun run playwright install
- name: Run Micropad in background for testing
run: |
mkdir micropad
tar xf micropad.tar.xz -C micropad
cd micropad/build
python3 -m http.server 3000 &
- name: Test
working-directory: app
run: bun run test
deploy:
name: Deploy
runs-on: ubuntu-latest
environment:
name: production
url: "https://web.getmicropad.com"
needs: [build, test]
if: github.ref == 'refs/heads/master' && github.repository == 'micropad/Micropad-Core'
steps:
- uses: actions/download-artifact@v3
with:
name: micropad
- run: |
mkdir app
tar xf micropad.tar.xz -C app
- name: Upload files
uses: oracle-actions/run-oci-cli-command@v1.1
env:
OCI_CLI_USER: ${{ secrets.OCI_CLI_USER }}
OCI_CLI_TENANCY: ${{ secrets.OCI_CLI_TENANCY }}
OCI_CLI_FINGERPRINT: ${{ secrets.OCI_CLI_FINGERPRINT }}
OCI_CLI_KEY_CONTENT: ${{ secrets.OCI_CLI_KEY_CONTENT }}
OCI_CLI_REGION: ${{ secrets.OCI_CLI_REGION }}
with:
command: os object sync -bn micropad-js --content-type auto --src-dir app/build
canary-deploy:
name: Canary Deploy
runs-on: ubuntu-latest
environment:
name: next
url: "https://next.getmicropad.com"
needs: [build, test]
if: github.ref == 'refs/heads/next-dev' && github.repository == 'micropad/Micropad-Core'
steps:
- uses: actions/download-artifact@v3
with:
name: micropad
- run: |
mkdir app
tar xf micropad.tar.xz -C app
- name: Upload files
uses: oracle-actions/run-oci-cli-command@v1.1
env:
OCI_CLI_USER: ${{ secrets.OCI_CLI_USER }}
OCI_CLI_TENANCY: ${{ secrets.OCI_CLI_TENANCY }}
OCI_CLI_FINGERPRINT: ${{ secrets.OCI_CLI_FINGERPRINT }}
OCI_CLI_KEY_CONTENT: ${{ secrets.OCI_CLI_KEY_CONTENT }}
OCI_CLI_REGION: ${{ secrets.OCI_CLI_REGION }}
with:
command: os object sync -bn micropad-js-next --content-type auto --src-dir app/build
release:
name: Publish Release on GitHub
runs-on: ubuntu-latest
needs: [build, test]
if: github.ref == 'refs/heads/master' && github.event_name != 'schedule'
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Get micropad version
id: micropad-version
working-directory: app
run: echo "version=v$(npm pkg get version | sed 's/"//g')" >> $GITHUB_OUTPUT
- uses: actions/download-artifact@v3
with:
name: micropad
- uses: dev-drprasad/delete-tag-and-release@v0.2.1
with:
delete_release: true
tag_name: ${{ steps.micropad-version.outputs.version }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Release
uses: softprops/action-gh-release@v1
with:
files: micropad.tar.xz
tag_name: ${{ steps.micropad-version.outputs.version }}
target_commitish: master