-
Notifications
You must be signed in to change notification settings - Fork 0
144 lines (123 loc) · 3.85 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
140
141
142
143
144
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
url: https://pypi.org/project/python-sysinformer/
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]
OUTPUT=$(poetry run semantic-release version)
echo "$OUTPUT"
echo "name=RELEASE_OUTPUT" >> "$GITHUB_OUTPUT"
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: Check release output and terminate if no new version
shell: bash
if: contains(steps.release.outputs.RELEASE_OUTPUT, 'No release will be made,') && contains(steps.release.outputs.RELEASE_OUTPUT, 'has already been released!')
run: |
echo "No new version to release. Ending workflow."
exit 0
- name: Publish to TestPyPI
id: test_publish
if: steps.release.outcome == 'success'
uses: pypa/gh-action-pypi-publish@release/v1
with:
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'