-
Notifications
You must be signed in to change notification settings - Fork 0
137 lines (117 loc) · 3.43 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
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: package_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
- name: Check if dist folder has contents
id: check_dist
run: |
if [ -d "dist/" ] && [ "$(ls -A dist/)" ]; then
echo "DIST_EXISTS=true" >> $GITHUB_OUTPUT
else
echo "DIST_EXISTS=true" >> $GITHUB_OUTPUT
fi
- name: Publish to TestPyPI
id: test_publish
if: steps.check_dist.outputs.DIST_EXISTS == 'true'
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'