-
-
Notifications
You must be signed in to change notification settings - Fork 8
144 lines (132 loc) · 3.93 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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# inspired by:
# https://github.com/messense/rjmespath-py/blob/main/.github/workflows/CI.yml
name: Build package
on:
push:
branches: [ master ]
tags: [ '*' ]
pull_request:
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
jobs:
linux:
name: Build package
runs-on: ubuntu-latest
strategy:
matrix:
target: [x86_64, x86,
# aarch64, armv7, s390x, ppc64le
]
steps:
- uses: actions/checkout@v3
- name: Setup git config
run: git config --global --add safe.directory '*'
- name: Git submodule init
run: git submodule sync --recursive && git submodule update --init --force
# install python & rust
- uses: actions/setup-python@v4
with:
python-version: 3.9
architecture: x64
- uses: dtolnay/rust-toolchain@nightly
# run tests
- name: Setup test dependencies
run: ./ci/prepare-ci-test.sh
- name: Test
run: source .env/bin/activate && ./test.sh
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter
rust-toolchain: nightly
sccache: 'true'
manylinux: auto
before-script-linux: "./ci/prepare-ci-container.sh"
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: dist
build-docs:
name: Build docs
runs-on: ubuntu-latest
steps:
- name: Git checkout
uses: actions/checkout@v3
- name: install, build and upload
uses: withastro/action@v1
with:
# root path
path: docs
# node-version: 18 # The specific version of Node that should be used to build your site. Defaults to 18. (optional)
deploy:
name: Deploy package
runs-on: ubuntu-latest
permissions:
contents: write
if: "startsWith(github.ref, 'refs/tags/')"
needs: [linux]
steps:
- uses: actions/download-artifact@v3
with:
name: wheels
- name: Upload binaries to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ./*.whl
tag: ${{ github.ref }}
overwrite: true
file_glob: true
# body: "This is my release text"
- name: Publish to PyPI
uses: PyO3/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
with:
command: upload
args: --non-interactive --skip-existing *
deploy-docs:
name: Deploy docs
needs: [linux, build-docs]
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1
deploy-package-aur:
name: Deploy packge AUR
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
needs: [linux]
steps:
- name: Git checkout
uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: wheels
path: wheels
- name: Generate PKGBUILD
env:
TARGET: ${{ matrix.target }}
#RELEASE_TAG: ${{ needs.create_release.outputs.release_tag }}
RELEASE_TAG: ${{ github.ref }}
run: ./ci/generate-pkgbuild.py
- name: Publish to AUR
uses: KSXGitHub/github-actions-deploy-aur@v2.5.0
with:
pkgname: python-map2
pkgbuild: ./dist/aur/PKGBUILD
commit_username: ${{ secrets.AUR_USERNAME }}
commit_email: ${{ secrets.AUR_EMAIL }}
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
#commit_message: ${{ needs.create_release.outputs.release_tag }}
commit_message: ${{ github.ref }}
force_push: 'true'