-
Notifications
You must be signed in to change notification settings - Fork 0
139 lines (120 loc) · 3.59 KB
/
ci.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
131
132
133
134
135
136
137
138
139
name: CI
on:
push:
branches:
- main
pull_request:
jobs:
Test:
environment:
name: production
runs-on: ubuntu-latest
name: Build and Test
# env:
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: '3.11.2'
- name: Install poetry
shell: bash
run: |
python -m pip install poetry==1.5.1
- name: Configure poetry
shell: bash
run: |
python -m poetry config virtualenvs.in-project true
- name: Cache the virtualenv
uses: actions/cache@v3
with:
path: ./.venv
key: ${{ runner.os }}-venv-${{ hashFiles('**/poetry.lock') }}
- name: Install dependencies
shell: bash
run: |
python -m poetry install --no-root
# - name: Code quality checks
# shell: bash
# run: |
# poetry run python -m black --check .
- name: Run unit tests
shell: bash
run: |
poetry run python -m pytest -xvvv tests/
- name: Test run the tool
if: success()
shell: bash
run: |
export PYTHONPATH="${PYTHONPATH}:./src"
python -m poetry run python src/main.py run -a
Release:
needs: Test
environment:
name: production
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
name: Release
concurrency: Release
permissions:
id-token: write
contents: write
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: '3.11.2'
- name: Install poetry
shell: bash
run: |
python -m pip install poetry==1.5.1
- name: Install dependencies
shell: bash
run: |
python -m poetry install --no-root
- name: Prepare package for release
id: release
shell: bash
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git config user.name github-actions
git config user.email [email protected]
poetry run semantic-release version
poetry run semantic-release changelog
poetry run semantic-release publish
# Unable to use at the moment due to the python version used by the action
# - name: Run Python Semantic Release
# id: release
# uses: python-semantic-release/python-semantic-release@master
# with:
# github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Publish to TestPyPI
id: test_publish
if: steps.release.outcome == 'success'
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.TEST_PYPI_API_TOKEN }}
repository-url: https://test.pypi.org/legacy/
- name: Test install from TestPyPI
if: steps.test_publish.outcome == 'success'
shell: bash
id: test_install
run: |
python -m pip install \
--index-url https://test.pypi.org/simple/ \
--extra-index-url https://pypi.org/simple \
python-sysinformer
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
if: steps.test_install.outcome == 'success'
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
repository-url: https://upload.pypi.org/legacy/