-
Notifications
You must be signed in to change notification settings - Fork 1
130 lines (128 loc) · 3.92 KB
/
python.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
121
122
123
124
125
126
127
128
129
130
name: ci-cd-pipeline
on:
push:
branches:
- main
pull_request:
branches:
- main
release:
types: [published]
jobs:
lint:
runs-on: ubuntu-20.04
container: python:3.8-slim
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: |
pip install poetry
poetry install --extras "all"
- name: Formatting
if: always()
run: |
poetry run black --check --exclude blackboxopt/examples/ .
poetry run black --check --include blackboxopt/examples/ --line-length 80 .
- name: Type Checks
if: always()
run: poetry run mypy --config-file pyproject.toml .
- name: Linting
if: always()
run: |
poetry run ruff check blackboxopt/
poetry run ruff check tests/
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04]
python-version: ["3.8", "3.9", "3.10", "3.11"]
container: python:${{ matrix.python-version }}-slim
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: |
pip install poetry
poetry install --extras "all"
- name: Run tests
if: always()
run: poetry run coverage run --branch -m pytest tests
env:
COVERAGE_FILE: ".coverage.${{ matrix.python-version }}"
- name: Store coverage file
uses: actions/upload-artifact@v3
with:
name: coverage
path: .coverage.${{ matrix.python-version }}
report:
needs: [test]
runs-on: ubuntu-20.04
permissions:
# Gives the action the necessary permissions for publishing new
# comments in pull requests.
pull-requests: write
# Gives the action the necessary permissions for pushing data to the
# python-coverage-comment-action branch, and for editing existing
# comments (to avoid publishing multiple comments in the same PR)
contents: write
steps:
- uses: actions/checkout@v3
- name: Download coverage summary
uses: actions/download-artifact@v3
with:
name: coverage
- name: Coverage comment
id: coverage_comment
uses: py-cov-action/python-coverage-comment-action@v3
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MERGE_COVERAGE_FILES: true
- name: Store Pull Request comment to be posted
uses: actions/upload-artifact@v3
if: steps.coverage_comment.outputs.COMMENT_FILE_WRITTEN == 'true'
with:
name: python-coverage-comment-action
path: python-coverage-comment-action.txt
deploy:
needs: [lint, test]
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-20.04
container: python:3.8-slim
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: |
pip install poetry
- name: Build & release
env:
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
run: |
poetry config pypi-token.pypi $PYPI_TOKEN
poetry publish --build
docs:
needs: [lint, test]
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # fetch all branches, incl. gh-pages
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install dependencies
run: |
pip install poetry
poetry install --extras "all"
- name: Setup git author
run: |
git config --global user.name docs deploy
git config --global user.email docs@github-action.local
- name: Get GIT_TAG_NAME
uses: olegtarasov/get-tag@v2.1
id: tagName
- name: Publish
run: |
poetry run mike deploy --push --update-aliases ${{ env.GIT_TAG_NAME }} latest
poetry run mike set-default --push latest