Skip to content

Merge pull request #444 from MicroPad/next-dev #99

Merge pull request #444 from MicroPad/next-dev

Merge pull request #444 from MicroPad/next-dev #99

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'
- name: Get yarn cache directory path
id: yarn-cache-dir-path
working-directory: app
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
- name: Cache Yarn Packages
id: yarn-cache
uses: actions/cache@v3
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: yarn-cache-folder-${{ hashFiles('app/yarn.lock', 'app/.yarnrc.yml') }}
restore-keys: |
yarn-cache-folder-
- name: Install node dependencies
working-directory: app
run: |
yarn
- name: Lint
working-directory: app
run: |
yarn typecheck
yarn lint
- name: Build
working-directory: app
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
run: |
yarn 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'
- name: Get yarn cache directory path
id: yarn-cache-dir-path
working-directory: app
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
- name: Cache Yarn Packages
id: yarn-cache
uses: actions/cache@v3
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: yarn-cache-folder-${{ hashFiles('app/yarn.lock', 'app/.yarnrc.yml') }}
restore-keys: |
yarn-cache-folder-
- uses: actions/download-artifact@v3
with:
name: micropad
- name: Install node dependencies
working-directory: app
run: |
yarn
- 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: |
yarn 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/[email protected]
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/[email protected]
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/[email protected]
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