Skip to content

Commit bc19b25

Browse files
authored
Merge pull request #43 from danabens/workflow-updates
lint and test concurrently
2 parents a815544 + cef2d58 commit bc19b25

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed

.github/workflows/test_release.yml

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
name: Test and Release
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- master
7+
release:
8+
types: [published]
9+
push:
10+
paths:
11+
- 'src/**'
12+
- 'tests/**'
13+
14+
jobs:
15+
lint:
16+
runs-on: ubuntu-latest
17+
steps:
18+
- uses: actions/checkout@v1
19+
- name: Setup Python
20+
uses: actions/setup-python@v1
21+
- name: Install Dependencies
22+
run: pip install tox
23+
- name: Flake8
24+
run: tox -e flake8
25+
- name: Black Check
26+
run: tox -e black-check
27+
- name: Pylint
28+
run: tox -e pylint
29+
30+
test:
31+
runs-on: ubuntu-latest
32+
steps:
33+
- uses: actions/checkout@v1
34+
- name: Setup Python 3.5
35+
uses: actions/setup-python@v1
36+
with:
37+
python-version: 3.5
38+
- name: Setup Python 3.6
39+
uses: actions/setup-python@v1
40+
with:
41+
python-version: 3.6
42+
- name: Setup Python 3.7
43+
uses: actions/setup-python@v1
44+
with:
45+
python-version: 3.7
46+
- name: Install Dependencies
47+
run: pip install tox
48+
# runs unit tests for each python version
49+
- name: Unit Tests
50+
run: tox -- tests/unit
51+
env:
52+
AWS_DEFAULT_REGION: us-west-2
53+
- name: Integration Tests
54+
# pull requests are untrusted and do not have access to secrets needed for integ tests
55+
if: github.event_name != 'pull_request'
56+
run: tox -e py36 -- tests/integ
57+
env:
58+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
59+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
60+
AWS_DEFAULT_REGION: us-west-2
61+
COVERAGE_FILE: .coverage.integ
62+
IGNORE_COVERAGE: '-'
63+
- name: Upload Code Coverage
64+
if: github.event_name == 'release'
65+
run: |
66+
coverage combine .coverage*
67+
codecov -t {env:CODECOV_UPLOAD_TOKEN}
68+
env:
69+
CODECOV_UPLOAD_TOKEN: ${{ secrets.AWS_ACCESS_KEY_ID }}
70+
71+
release:
72+
needs: [test, lint]
73+
if: github.event_name == 'release' && github.repository == 'aws/sagemaker-experiments'
74+
runs-on: ubuntu-latest
75+
steps:
76+
- uses: actions/checkout@v1
77+
- name: Setup Python
78+
uses: actions/setup-python@v1
79+
with:
80+
python-version: '3.x'
81+
- name: Install Dependencies
82+
run: pip install setuptools wheel twine tox
83+
- name: Create Distribution
84+
run: python setup.py bdist_wheel
85+
- name: Sign Release
86+
run: |
87+
echo "${{ secrets.PYPI_SIGN_PRIVATE_KEY }}" | gpg --batch --import --no-default-keyring --keyring ./sessionring.gpg
88+
gpg --no-default-keyring --keyring ./sessionring.gpg --pinentry-mode loopback --passphrase ""${{ secrets.PYPI_SIGN_PASSPHRASE }}"" --detach-sign -ao /dev/null dist/*
89+
- name: Twine Check
90+
run: twine check dist/*
91+
- name: Publish to Test PyPi
92+
run: twine upload dist/*
93+
env:
94+
TWINE_USERNAME: __token__
95+
TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }}
96+
TWINE_REPOSITORY_URL: https://test.pypi.org/legacy/
97+
- name: Publish to PyPi
98+
run: twine upload dist/*
99+
env:
100+
TWINE_USERNAME: __token__
101+
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}

0 commit comments

Comments
 (0)