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 gh actions for building and testing the repo #1310

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
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
18 changes: 18 additions & 0 deletions .github/actions/yarn-install/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Install Dependencies
inputs:
node-version:
required: false
default: '20.x'

runs:
using: "composite"
steps:
- uses: actions/setup-node@v4
with:
node-version: ${{ inputs.node-version }}
cache: yarn
cache-dependency-path: yarn.lock
check-latest: true
- name: Install Dependencies
run: yarn install --frozen-lockfile --non-interactive --ignore-scripts
shell: bash
16 changes: 16 additions & 0 deletions .github/scripts/install_codecov.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/sh

# Install Codecov Uploader
# See https://docs.codecov.com/docs/codecov-uploader#using-the-uploader-with-codecovio-cloud

CODECOV_URL="https://uploader.codecov.io"

curl "${CODECOV_URL}/verification.gpg" | gpg --no-default-keyring --keyring trustedkeys.gpg --import
curl -Os "${CODECOV_URL}/latest/linux/codecov"
curl -Os "${CODECOV_URL}/latest/linux/codecov.SHA256SUM"
curl -Os "${CODECOV_URL}/latest/linux/codecov.SHA256SUM.sig"

gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
shasum -a 256 -c codecov.SHA256SUM

chmod +x codecov
51 changes: 51 additions & 0 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: facebook/metro/build-and-test
on:
pull_request:
types: [opened, synchronize]

# head_ref is per PR, so this ensures that updating the latest PR commit
# will cancel the previous run of the workflow and trigger a new one
concurrency:
group: "build-and-test-${{ github.head_ref }}"
cancel-in-progress: true

defaults:
run:
shell: bash
huntie marked this conversation as resolved.
Show resolved Hide resolved

jobs:
run-js-checks:
runs-on: ubuntu-latest
name: "Type check, lint, smoke test"
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/yarn-install
- run: yarn typecheck
- run: yarn typecheck-ts
- run: yarn lint
- run: yarn test-smoke

test-with-coverage:
runs-on: ubuntu-latest
name: "Tests with coverage"
steps:
Comment on lines +30 to +31
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wait, this indentation looks wrong. Can we triple-check this, and enable Prettier on YAML files in our repo?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We already have validation on yml.

Both idents are valid in yml apparently: https://stackoverflow.com/questions/17014460/yaml-indentation-for-array-in-hash
Also, evidently it works.

However, I'll make sure they are formatted the same across the file regardless. Thx for noticing.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, but can we please enable auto-formatting? 🥹 Good to go 👍🏻

- uses: actions/checkout@v4
- uses: ./.github/actions/yarn-install
- run: yarn test-coverage
- run: "./.github/scripts/install_codecov.sh"
- run: "./codecov -t ${{ secrets.CODECOV_TOKEN }} -f ./coverage/coverage-final.json"

test:
strategy:
matrix:
runs-on: ['ubuntu-latest']
node-version: ['18.0', '18.x', '20.x']
name: "Tests [Node.js ${{ matrix.node-version }}, ${{ matrix.runs-on }}]"
runs-on: ${{ matrix.runs-on }}
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/yarn-install
with:
node-version: ${{ matrix.node-version }}
- name: Run Jest Tests
run: yarn jest --ci --maxWorkers 4 --reporters=default --reporters=jest-junit --rootdir='./'
Loading