generated from rochacbruno/python-project-template
-
Notifications
You must be signed in to change notification settings - Fork 1
133 lines (131 loc) · 4.36 KB
/
mini_build.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
name: Test for Build
on:
push: # ci work when pushing main branch
branches:
- main
pull_request: # ci work when creating a PR to main branch
branches:
- main
jobs:
core-build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ['3.9', '3.10', '3.11']
steps:
- uses: actions/checkout@v4
# using cached dependencies to speed up workflow
# ref: https://docs.github.com/en/actions/advanced-guides/caching-dependencies-to-speed-up-workflows
- name: Cache pip modules for Linux
uses: actions/cache@v3
with:
path: ~/.cache/pip
# the key is used to search for cache
# hashFile(paths) return a single hash for the set of files that matches the path pattern
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/**') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Build qtsit
run: |
python -m pip install --upgrade pip
pip install -e .
- name: Import checking
run: python -c "import qtsit"
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ['3.9', '3.10', '3.11']
env:
OS: ${{ matrix.os }}
PYTHON_VERSION: ${{ matrix.python-version }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set commit range (push to the main branch, e.g. merge)
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
run: echo "COMMIT_RANGE=${{ github.event.before }}.." >> $GITHUB_ENV
- name: Set commit range (pull request)
if: github.event_name == 'pull_request'
run: |
git fetch origin main
echo "COMMIT_RANGE=origin/main..." >> $GITHUB_ENV
- name: Cache pip packages for Linux
if: runner.os == 'Linux'
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/**') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Cache pip packages for MacOS
if: runner.os == 'macOS'
uses: actions/cache@v3
with:
path: ~/Library/Caches/pip
key: ${{ matrix.os }}-pip-${{ hashFiles('requirements/**') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Cache pip packages for Windows
if: runner.os == 'Windows'
uses: actions/cache@v3
with:
path: ~\AppData\Local\pip\Cache
key: ${{ matrix.os }}-pip-${{ hashFiles('requirements/**') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Create env.yml for python
shell: bash
run: |
python -m pip install --upgrade pip;
pip install conda-merge;
cd requirements
if [ "$(uname)" == 'Linux' ]; then
conda-merge env_base.yml env_test.yml > env.yml
elif [ "$(uname)" == 'Darwin' ]; then
conda-merge env_base.yml env_test.yml > env.yml
elif [[ "$(uname)" == "MINGW64_NT"* ]]; then
conda-merge env_base.yml env_test.yml > env.yml
fi;
cd ..
cp requirements/env.yml env.yml
- name: Install all dependencies using micromamba
uses: mamba-org/setup-micromamba@main
with:
environment-file: env.yml
environment-name: qtsit
create-args: python=${{ matrix.python-version }}
pypi-build:
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
needs: [core-build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.9'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools wheel twine
- name: Publish (Nightly)
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
run: |
python setup.py sdist bdist_wheel
twine upload dist/*