-
Notifications
You must be signed in to change notification settings - Fork 179
120 lines (114 loc) · 3.37 KB
/
api-test-lint-deploy.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# 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/**'
push:
paths:
- 'api/**'
- 'Makefile'
- 'shared-data/*/**'
- '!shared-data/js/**'
- '.github/workflows/api-test-lint-deploy.yaml'
- '.github/actions/python/**/*'
- '.github/workflows/utils.js'
branches:
- '*'
tags:
- 'v*'
workflow_dispatch:
defaults:
run:
shell: bash
jobs:
lint:
name: 'opentrons package linting'
timeout-minutes: 10
runs-on: 'ubuntu-18.04'
steps:
- uses: 'actions/checkout@v2'
- uses: 'actions/setup-node@v1'
with:
node-version: '14'
- uses: 'actions/setup-python@v2'
with:
python-version: '3.7'
- uses: './.github/actions/python/setup'
with:
project: 'api'
- name: Lint
run: make -C api lint
test:
name: 'opentrons package tests'
timeout-minutes: 30
needs: [lint]
strategy:
matrix:
os: ['windows-latest', 'ubuntu-18.04', 'macos-latest']
runs-on: '${{ matrix.os }}'
steps:
- uses: 'actions/checkout@v2'
- uses: 'actions/setup-node@v1'
with:
node-version: '14'
- uses: 'actions/setup-python@v2'
with:
python-version: '3.7'
- name: 'set complex environment variables'
uses: actions/[email protected]
with:
script: |
const { buildComplexEnvVars, } = require(`${process.env.GITHUB_WORKSPACE}/.github/workflows/utils.js`)
buildComplexEnvVars(core, context)
- uses: './.github/actions/python/setup'
with:
project: 'api'
- name: Test
run: make -C api test
- uses: 'codecov/codecov-action@v2'
with:
files: ./api/coverage.xml
flags: api
deploy:
name: 'deploy opentrons package'
needs: [test]
runs-on: 'ubuntu-18.04'
if: github.event_name == 'push'
steps:
- uses: 'actions/checkout@v2'
- uses: 'actions/setup-node@v1'
with:
node-version: '14'
- uses: 'actions/setup-python@v2'
with:
python-version: '3.7'
- name: 'set complex environment variables'
uses: actions/[email protected]
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.OT_TEST_PYPI_PASSWORD }}'
- 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.OT_PYPI_PASSWORD }}'