feat(api, robot-server): Plate Reader CSV output functionality (#16495) #19454
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This workflow runs tests and lint on pull requests that touch the api/ | |
# project or its CI configuration. | |
name: 'API test/lint/deploy' | |
on: | |
# Most of the time, we run on pull requests, which lets us handle external PRs | |
pull_request: | |
paths: | |
- 'api/**/*' | |
- 'Makefile' | |
- 'shared-data/**/*' | |
- '!shared-data/js/**' | |
- 'hardware/**/*' | |
- 'scripts/**/*.mk' | |
- 'scripts/**/*.py' | |
- '.github/workflows/api-test-lint-deploy.yaml' | |
- '.github/actions/python/**/*' | |
- '.github/workflows/utils.js' | |
push: | |
paths: | |
- 'api/**' | |
- 'Makefile' | |
- 'shared-data/**/*' | |
- '!shared-data/js/**/*' | |
- 'hardware/**/*' | |
- 'scripts/**/*.mk' | |
- 'scripts/**/*.py' | |
- '.github/workflows/api-test-lint-deploy.yaml' | |
- '.github/actions/python/**/*' | |
- '.github/workflows/utils.js' | |
branches: | |
- 'edge' | |
- 'release' | |
- '*hotfix*' | |
tags: | |
- 'v*' | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-${{ github.ref_name != 'edge' || github.run_id}}-${{ github.ref_type != 'tag' || github.run_id }} | |
cancel-in-progress: true | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
lint: | |
name: 'opentrons package linting' | |
timeout-minutes: 10 | |
runs-on: 'ubuntu-22.04' | |
steps: | |
- uses: 'actions/checkout@v3' | |
with: | |
fetch-depth: 0 | |
- uses: 'actions/setup-node@v3' | |
with: | |
node-version: '18.19.0' | |
- uses: 'actions/setup-python@v4' | |
with: | |
python-version: '3.10' | |
- uses: './.github/actions/python/setup' | |
with: | |
project: 'api' | |
- name: Lint with opentrons_hardware | |
run: make -C api lint | |
test: | |
name: 'opentrons package tests on ${{ matrix.os }}, python ${{ matrix.python }}' | |
timeout-minutes: 30 | |
needs: [lint] | |
strategy: | |
matrix: | |
os: ['windows-2022', 'ubuntu-22.04', 'macos-latest'] | |
# TODO(mc, 2022-02-24): expand this matrix to 3.8 and 3.9, | |
# preferably in a nightly cronjob on edge or something | |
python: ['3.10'] | |
with-ot-hardware: ['true', 'false'] | |
exclude: | |
- os: 'windows-2022' | |
with-ot-hardware: 'true' | |
- os: 'macos-latest' | |
with-ot-hardware: 'true' | |
runs-on: '${{ matrix.os }}' | |
steps: | |
- uses: 'actions/checkout@v3' | |
with: | |
fetch-depth: 0 | |
# https://github.com/actions/checkout/issues/290 | |
- name: 'Fix actions/checkout odd handling of tags' | |
if: startsWith(github.ref, 'refs/tags') | |
run: | | |
git fetch -f origin ${{ github.ref }}:${{ github.ref }} | |
git checkout ${{ github.ref }} | |
- uses: 'actions/setup-node@v3' | |
with: | |
node-version: '18.19.0' | |
- uses: 'actions/setup-python@v4' | |
with: | |
python-version: ${{ matrix.python }} | |
- name: 'set complex environment variables' | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const { buildComplexEnvVars, } = require(`${process.env.GITHUB_WORKSPACE}/.github/workflows/utils.js`) | |
buildComplexEnvVars(core, context) | |
- uses: './.github/actions/python/setup' | |
with: | |
project: 'api' | |
python-version: ${{ matrix.python }} | |
- if: ${{ matrix.with-ot-hardware == 'false' }} | |
name: Remove OT-3 hardware package | |
run: make -C api setup-ot2 | |
env: | |
OT_VIRTUALENV_VERSION: ${{ matrix.python }} | |
- if: ${{ matrix.with-ot-hardware == 'false' }} | |
name: Test without opentrons_hardware | |
run: make -C api test-ot2 | |
- if: ${{ matrix.with-ot-hardware == 'true' }} | |
name: Test with opentrons_hardware | |
run: make -C api test-cov | |
- name: Ensure assets build | |
run: make -C api sdist wheel | |
- name: Upload coverage report | |
uses: 'codecov/codecov-action@v3' | |
with: | |
files: ./api/coverage.xml | |
flags: api | |
deploy: | |
name: 'deploy opentrons package' | |
needs: [test] | |
runs-on: 'ubuntu-22.04' | |
if: github.event_name == 'push' | |
steps: | |
- uses: 'actions/checkout@v3' | |
with: | |
fetch-depth: 0 | |
# https://github.com/actions/checkout/issues/290 | |
- name: 'Fix actions/checkout odd handling of tags' | |
if: startsWith(github.ref, 'refs/tags') | |
run: | | |
git fetch -f origin ${{ github.ref }}:${{ github.ref }} | |
git checkout ${{ github.ref }} | |
- uses: 'actions/setup-node@v3' | |
with: | |
node-version: '18.19.0' | |
- uses: 'actions/setup-python@v4' | |
with: | |
python-version: '3.10' | |
- name: 'set complex environment variables' | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const { buildComplexEnvVars, } = require(`${process.env.GITHUB_WORKSPACE}/.github/workflows/utils.js`) | |
buildComplexEnvVars(core, context) | |
- uses: './.github/actions/python/setup' | |
with: | |
project: 'api' | |
# creds and repository configuration for deploying python wheels | |
- if: ${{ !env.OT_TAG }} | |
name: 'upload to test pypi' | |
uses: './.github/actions/python/pypi-deploy' | |
with: | |
project: 'api' | |
repository_url: 'https://test.pypi.org/legacy/' | |
password: '${{ secrets.TEST_PYPI_DEPLOY_TOKEN_OPENTRONS }}' | |
- if: startsWith(env.OT_TAG, 'v') | |
name: 'upload to real pypi' | |
uses: './.github/actions/python/pypi-deploy' | |
with: | |
project: 'api' | |
repository_url: 'https://upload.pypi.org/legacy/' | |
password: '${{ secrets.PYPI_DEPLOY_TOKEN_OPENTRONS }}' |