From 70d279d8073e956239598dc83921aafd16a78fcf Mon Sep 17 00:00:00 2001 From: James Sumners Date: Fri, 28 Jun 2024 12:43:57 -0400 Subject: [PATCH] chore: Updated CI to use native arm64 runner --- .github/workflows/ci-workflow.yml | 68 +++++++++++-------------------- 1 file changed, 24 insertions(+), 44 deletions(-) diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index 1f4cd1f..94f1016 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -10,7 +10,7 @@ on: workflow_dispatch: concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: "${{ github.workflow }}-${{ github.ref }}" cancel-in-progress: true jobs: @@ -28,7 +28,7 @@ jobs: with: node-version: ${{ matrix.node-version }} - name: Install Dependencies - run: npm install + run: npm install - name: Run Linting run: npm run lint - name: Inspect Lockfile @@ -44,7 +44,7 @@ jobs: # Ubuntu does not ship x86 builds. - { os: ubuntu-latest, arch: x86 } runs-on: ${{ matrix.os }} - name: ${{ matrix.os }} / Node ${{ matrix.node }} ${{ matrix.arch }} + name: "${{ matrix.os }} / Node ${{ matrix.node }} ${{ matrix.arch }}" steps: - name: Checkout uses: actions/checkout@v4 @@ -56,7 +56,7 @@ jobs: - uses: actions/cache@v4 with: path: ${{ github.workspace }}/node_modules - key: ${{ matrix.os }}-${{ matrix.arch }}-node-${{ matrix.node }}-${{ hashFiles('./package.json') }} + key: "${{ matrix.os }}-${{ matrix.arch }}-node-${{ matrix.node }}-${{ hashFiles('./package.json') }}" - name: Install run: npm install - name: Unit Test @@ -86,14 +86,14 @@ jobs: node: [ 16, 18, 20, 22 ] arch: [ arm64 ] runs-on: ${{ matrix.os }} - name: ${{ matrix.os }} / Node ${{ matrix.node }} ${{ matrix.arch }} + name: "${{ matrix.os }} / Node ${{ matrix.node }} ${{ matrix.arch }}" steps: - name: Checkout uses: actions/checkout@v4 - uses: actions/cache@v4 with: path: ${{ github.workspace }}/node_modules - key: ${{ matrix.os }}-${{ matrix.arch }}-node-${{ matrix.node }}-${{ hashFiles('./package.json') }} + key: "${{ matrix.os }}-${{ matrix.arch }}-node-${{ matrix.node }}-${{ hashFiles('./package.json') }}" - name: Use node ${{ matrix.node }} uses: actions/setup-node@v4 with: @@ -144,43 +144,23 @@ jobs: with: path: ${{ github.workspace }}/node_modules key: linux-arm-node-${{ matrix.node }}-${{ env.CACHE_KEY }} - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - with: - platforms: arm64 - - uses: docker/setup-buildx-action@v3 - - uses: docker/build-push-action@v5 - with: - context: . - build-args: | - NODE_VERSION=${{ matrix.node }} - file: linux_arm.dockerfile - tags: linux_arm:node-${{ matrix.node }} - load: true - push: false - platforms: linux/arm64 - cache-from: type=gha - cache-to: type=gha,mode=max - - name: Run test - uses: addnab/docker-run-action@v3 + - name: Install + run: npm install + - name: Unit Test + run: npm run unit + - name: Post Unit Test Coverage + uses: codecov/codecov-action@v4 with: - image: linux_arm:node-${{ matrix.node }} - options: --platform linux/arm64 -v ${{ github.workspace }}:/host - run: | - cp -R /host/node_modules . 2>/dev/null - rm -rf /host/node_modules 2>/dev/null - # npm install will fail on Node 18 every time unless we use this - # very odd fix: - # https://github.com/npm/cli/issues/4652#issuecomment-1126672629 - npm install --verbose --maxsockets 1 - cp -R node_modules /host/ - npm run unit - # Skipping integration until we can get native arm64 runners - # npm run integration - - name: Update modules cache - uses: actions/cache/save@v4 - # We always want to run this step even if the "test" step failed. - if: ${{ steps.cache_restore.outputs.cache-hit != 'true' && !cancelled() }} + token: ${{ secrets.CODECOV_TOKEN }} + directory: ./coverage/unit/ + files: lcov.info + flags: unit-tests-${{ matrix.node }}-linux-arm64 + - name: Integration Test + run: npm run integration + - name: Post Integration Test Coverage + uses: codecov/codecov-action@v4 with: - path: ${{ github.workspace }}/node_modules - key: linux-arm-node-${{ matrix.node }}-${{ env.CACHE_KEY }} + token: ${{ secrets.CODECOV_TOKEN }} + directory: ./coverage/integration + files: lcov.info + flags: integration-tests-${{ matrix.node }}-linux-arm64