Skip to content

Test & Deploy

Test & Deploy #2330

Workflow file for this run

name: Test & Deploy
on:
pull_request_target:
workflow_dispatch:
workflow_call:
inputs:
release:
required: true
type: boolean
schedule:
- cron: '0 8 * * 1' # M H d m w (Mondays at 8:00)
jobs:
authorize:
environment:
${{ (github.event_name == 'pull_request_target' &&
github.event.pull_request.head.repo.full_name != github.repository) &&
'external' || 'internal' }}
runs-on: ubuntu-latest
steps:
- run: echo ✓
check-lock:
needs: authorize
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha || github.ref }}
- name: npm lock file is v2
run: jq --exit-status .lockfileVersion==2 < package-lock.json
lint:
needs: authorize
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha || github.ref }}
- uses: actions/setup-node@v3
- run: npm ci
- run: npm run lint
test:
needs: authorize
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha || github.ref }}
- uses: actions/setup-node@v3
with:
node-version: 16
- uses: actions/setup-python@v2
with:
python-version: 3.9
- run: |
pip install tensorboard
pip install -I protobuf==3.20.1
- run: npm ci && npm install --global
- run: npm run test
env:
GITHUB_TOKEN: ${{ github.token }}
TEST_GITHUB_TOKEN: ${{ secrets.TEST_GITHUB_TOKEN }}
TEST_GITHUB_REPOSITORY: ${{ vars.TEST_GITHUB_REPOSITORY }}
TEST_GITHUB_COMMIT: ${{ vars.TEST_GITHUB_COMMIT }}
TEST_GITHUB_ISSUE: ${{ vars.TEST_GITHUB_ISSUE }}
TEST_GITLAB_TOKEN: ${{ secrets.TEST_GITLAB_TOKEN }}
TEST_GITLAB_REPOSITORY: ${{ vars.TEST_GITLAB_REPOSITORY }}
TEST_GITLAB_COMMIT: ${{ vars.TEST_GITLAB_COMMIT }}
TEST_GITLAB_ISSUE: ${{ vars.TEST_GITLAB_ISSUE }}
TEST_BITBUCKET_TOKEN: ${{ secrets.TEST_BITBUCKET_TOKEN }}
TEST_BITBUCKET_REPOSITORY: ${{ vars.TEST_BITBUCKET_REPOSITORY }}
TEST_BITBUCKET_COMMIT: ${{ vars.TEST_BITBUCKET_COMMIT }}
TEST_BITBUCKET_ISSUE: ${{ vars.TEST_BITBUCKET_ISSUE }}
test-os:
needs: authorize
name: test-${{ matrix.system }}
strategy:
matrix:
system: [ubuntu, macos, windows]
runs-on: ${{ matrix.system }}-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha || github.ref }}
- if: matrix.system == 'windows'
uses: actions/setup-node@v3
- name: install
shell: bash
run: |
# https://github.com/npm/npm/issues/18503#issuecomment-347579469
npm pack && npm install -g --no-save ./*cml*.tgz
for cmd in '' runner publish pr; do
cml $cmd --version
done
- if: matrix.system != 'windows'
run: |
for cmd in runner publish pr; do
cml-$cmd --version
done
packages:
needs: [lint, test, test-os]
runs-on: ubuntu-latest
outputs:
version: ${{ steps.publish.outputs.version }}
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha || github.ref }}
- uses: actions/setup-node@v3
with:
registry-url: https://registry.npmjs.org
- run: npm install
- id: publish
run: |
VERSION=$(jq -r .version < package.json)
echo "version=$VERSION" >> $GITHUB_OUTPUT
npm install --dry-run @dvcorg/cml@$VERSION ||
npm ${{ inputs.release && 'publish' || 'publish --dry-run' }}
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
# Step required "thanks" to https://github.com/actions/runner-images/issues/6283
- uses: Homebrew/actions/setup-homebrew@3040c87fbdd10e6ec48d90bd23cb0abb6d66152d
- run: brew install ldid
- run: |
cp node_modules/@npcz/magic/dist/magic.mgc assets/magic.mgc
npx --yes pkg --no-bytecode --public-packages "*" --public package.json
for cmd in '' runner publish pr; do build/cml-linux-x64 $cmd --version; done
cp build/cml-linux{-x64,}
cp build/cml-macos{-x64,}
- if: inputs.release
run:
find build -type f | xargs gh release upload
"${GITHUB_HEAD_REF#bump/}"
env:
GITHUB_TOKEN: ${{ github.token }}
images:
needs: packages
secrets: inherit
uses: ./.github/workflows/images.yml
with:
release: ${{ inputs.release || false }}
version: ${{ needs.packages.outputs.version }}