-
Notifications
You must be signed in to change notification settings - Fork 8
138 lines (118 loc) · 4.19 KB
/
release.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
130
131
132
133
134
135
136
137
138
name: tests
on:
push:
branches:
- master
pull_request:
branches: [ master ]
jobs:
tests:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version: [ "3.10", "3.11", "3.12" ]
os: [ ubuntu-latest, macOS-latest, windows-latest]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Set up PostgreSQL on Linux
if: startsWith(runner.os, 'linux')
run: |
sudo systemctl start postgresql.service
pg_isready
sudo -u postgres psql --command="ALTER USER postgres WITH PASSWORD '123456'" --command="\du"
- name: Setup PostgreSQL on macOS
if: startsWith(runner.os, 'macos')
run: |
brew install postgresql@16
brew services start postgresql@16
export PATH="/opt/homebrew/opt/postgresql@16/bin:$PATH"
echo "Check PostgreSQL service is running"
i=10
COMMAND='pg_isready'
while [ $i -gt 0 ]; do
echo "Check PostgreSQL service status"
eval $COMMAND && break
((i--))
if [ $i == 0 ]; then
echo "PostgreSQL service not ready, all attempts exhausted"
exit 1
fi
echo "PostgreSQL service not ready, wait 10 more sec, attempts left: $i"
sleep 10
done
psql --command="CREATE USER postgres PASSWORD '123456'" --command="\du" postgres
- name: Start PostgreSQL on Windows
if: startsWith(runner.os, 'windows')
run: |
$pgService = Get-Service -Name postgresql*
Set-Service -InputObject $pgService -Status running -StartupType automatic
Start-Process -FilePath "$env:PGBIN\pg_isready" -Wait -PassThru
& $env:PGBIN\psql --command="ALTER USER postgres WITH PASSWORD '123456'" --command="\du"
- name: Upgrade install tools
run: python -m pip install --upgrade setuptools wheel
- name: Install dependencies
run: |
pip install -r requirements.txt
pip install -r dev_requirements.txt
- name: Run tests
run: |
python -m unittest discover -s tests -t tests
coveralls:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.12'
- name: Install dependencies
run: |
pip install -r requirements.txt
pip install -r dev_requirements.txt
pip install coveralls
pip install coverage
- name: Set up PostgreSQL on Linux
if: startsWith(runner.os, 'linux')
run: |
sudo systemctl start postgresql.service
pg_isready
sudo -u postgres psql --command="ALTER USER postgres WITH PASSWORD '123456'" --command="\du"
- name: Run tests
run: coverage run -m unittest discover -s tests -t tests
- name: Upload coverage data to coveralls.io
run: coveralls --service=github
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
release:
name: Release
runs-on: ubuntu-latest
needs: [ tests, coveralls ]
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: '20'
- name: Setup
run: npm install -g semantic-release @semantic-release/github @semantic-release/changelog @semantic-release/commit-analyzer @semantic-release/git @semantic-release/release-notes-generator semantic-release-pypi
- name: Set up python
uses: actions/setup-python@v2
with:
python-version: '3.12'
- name: Install setuptools
run: python -m pip install --upgrade setuptools wheel twine
- name: Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
run: npx semantic-release