-
Notifications
You must be signed in to change notification settings - Fork 1
129 lines (109 loc) · 3.09 KB
/
ci.yml
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
name: CI
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
test-and-lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install dependencies
run: |
pip install poetry
poetry install
- name: Run pytest
run: poetry run pytest
- name: Run flake8
run: poetry run flake8
semver-action:
needs: test-and-lint
outputs:
tag: ${{ steps.semver-action.outputs.tag }}
version: ${{ steps.semver-action.outputs.version }}
release_notes: ${{ steps.semver-action.outputs.release_notes }}
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Semver Action
id: semver-action
run: python .github/scripts/semver.py
build-and-release:
needs: semver-action
runs-on: ubuntu-latest
if: needs.semver-action.outputs.version != ''
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Update pyproject.toml version
run: |
pip install poetry
poetry version ${{ needs.semver-action.outputs.version }}
- name: Commit version changes
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git add pyproject.toml
git commit -m "chore: bump version to ${{ needs.semver-action.outputs.tag }}"
git tag ${{ needs.semver-action.outputs.tag }}
- name: Push changes
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ github.ref }}
tags: true
- name: Build package
run: poetry build
- name: Store the distribution packages
uses: actions/upload-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Create Release
id: create-release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ needs.semver-action.outputs.tag }}
body: ${{ needs.semver-action.outputs.release_notes }}
files: |
dist/*.whl
dist/*.tar.gz
publish-to-pypi:
name: >-
Publish Python 🐍 distribution 📦 to PyPI
if: needs.semver-action.outputs.version != ''
needs:
- build-and-release
- semver-action
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/pinecil
permissions:
id-token: write
steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1