Skip to content

Commit

Permalink
Test ci build
Browse files Browse the repository at this point in the history
  • Loading branch information
tristanmenzel committed Sep 25, 2024
1 parent 332c449 commit f91f293
Show file tree
Hide file tree
Showing 2 changed files with 192 additions and 9 deletions.
174 changes: 174 additions & 0 deletions .github/workflows/node-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
on:
workflow_call:
inputs:
node-version:
required: false
type: string
default: 18.x
working-directory:
required: false
type: string
default: '.'
lint-script:
required: false
type: string
default: npm run lint --if-present
compile-script:
required: false
type: string
default: npm run check-types --if-present
pre-test-script:
required: false
type: string
test-script:
required: false
type: string
default: npm run test --if-present
test-environment-variables:
required: false
type: string
default: '{}'
output-test-results:
required: false
type: boolean
default: false
test-results-file-pattern:
required: false
type: string
default: '**/test-results.xml'
audit-script:
required: false
type: string
default: npm audit
build-script:
required: false
type: string
default: npm run build
run-build:
required: false
type: boolean
default: false
run-commit-lint:
required: false
type: boolean
default: false
commit-lint-script:
required: false
type: string
default: npx commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose
pre-run-script:
required: false
type: string
upload-artifact-name:
required: false
type: string
upload-artifact-path:
required: false
description: The full path to the artifact directory, this path does not take working-directory into account
type: string
default: .

download-artifact-name:
required: false
type: string
download-artifact-path:
required: false
description: The full path to the artifact directory, this path does not take working-directory into account
type: string
default: .

secrets:
npm-auth-token:
description: NPM auth token (don't pass in on a PR build on a public repository)
required: false

jobs:
node-ci:
runs-on: ubuntu-latest

defaults:
run:
shell: bash
working-directory: ${{ inputs.working-directory }}

steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0

# setup node + private repo access
- name: Use Node.js ${{ inputs.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ inputs.node-version }}
registry-url: 'https://npm.pkg.github.com'
scope: '@makerxstudio'
cache: 'npm'
cache-dependency-path: ${{ inputs.working-directory }}/package-lock.json

- name: Download artifacts
if: ${{ inputs.download-artifact-name }}
with:
name: ${{ inputs.download-artifact-name }}
path: ${{ inputs.download-artifact-path }}

- name: Pre-run
if: ${{ inputs.pre-run-script }}
run: ${{ inputs.pre-run-script }}

# run npm ci preventing script access to npm auth token
- run: npm ci --ignore-scripts
env:
NODE_AUTH_TOKEN: ${{ secrets.npm-auth-token || secrets.GITHUB_TOKEN }}
# allow scripts to run without npm auth token
- run: npm rebuild && npm run prepare --if-present

# run all the CI scripts
- name: 'Commit lint'
if: ${{ inputs.run-commit-lint }}
run: ${{ inputs.commit-lint-script }}

- name: Lint
run: ${{ inputs.lint-script }}

- name: Compile
run: ${{ inputs.compile-script }}

- name: Pre-test
if: ${{ inputs.pre-test-script }}
run: ${{ inputs.pre-test-script }}

- name: Test
run: ${{ inputs.test-script }}
env: ${{ fromJson(inputs.test-environment-variables) }}

#Requires permissions.checks: write
- name: Publish test results
if: ${{ inputs.output-test-results }}
uses: phoenix-actions/test-reporting@v10
with:
name: Test results
path: ${{ inputs.test-results-file-pattern }}
reporter: jest-junit
output-to: checks
fail-on-error: false

- name: Audit
run: ${{ inputs.audit-script }}

- name: Build
if: ${{ inputs.run-build }}
run: ${{ inputs.build-script }}
# CDK infrastructure build calls npm ci on /infrastructure/build, which may fail without NODE_AUTH_TOKEN
env:
NODE_AUTH_TOKEN: ${{ secrets.npm-auth-token || secrets.GITHUB_TOKEN }}

- name: Publish artifact
if: ${{ inputs.upload-artifact-name }}
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.upload-artifact-name }}
path: ${{ inputs.upload-artifact-path }}


27 changes: 18 additions & 9 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,24 +14,33 @@ permissions:

jobs:
ci-algo-ts:
uses: makerxstudio/shared-config/.github/workflows/node-ci.yml@main
uses: ./.github/workflows/node-ci.yml
with:
node-version: 20.x
run-build: true
audit-script: npm run audit
working-directory: packages/algo-ts
upload-artifact-name: algo-ts
upload-artifact-path: ./packages/algo-ts/dist
ci-algo-ts-testing:
uses: makerxstudio/shared-config/.github/workflows/node-ci.yml@main
uses: ./.github/workflows/node-ci.yml
needs:
- ci-algo-ts
with:
download-artifact-name: algo-ts
download-artifact-path: ./packages/algo-ts/dist
node-version: 20.x
run-build: true
build-script: npm run install-local-packages && npm run build
audit-script: npm run audit
working-directory: packages/algo-ts-testing
ci-puya-ts:
uses: makerxstudio/shared-config/.github/workflows/node-ci.yml@main
with:
node-version: 20.x
run-build: true
build-script: npm run install-local-packages && npm run build
audit-script: npm run audit
# ci-puya-ts:
# uses: ./.github/workflows/node-ci.yml
# needs:
# - ci-algo-ts
# - ci-algo-ts-testing
# with:
# node-version: 20.x
# run-build: true
# build-script: npm run install-local-packages && npm run build
# audit-script: npm run audit

0 comments on commit f91f293

Please sign in to comment.