-
Notifications
You must be signed in to change notification settings - Fork 26
153 lines (134 loc) · 4.29 KB
/
build-riscv64.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
145
146
147
148
149
150
151
152
153
name: QEMU Build and test riscv64 crate
on:
push:
branches:
- main
release:
types: [published]
pull_request:
branches:
- "**"
concurrency:
group: ${{ github.event_name == 'pull_request' && format('{0}-{1}', github.workflow_ref, github.event.pull_request.number) || github.run_id }}
cancel-in-progress: true
permissions:
id-token: write
contents: read
jobs:
build_crate:
name: Build riscv64 crate and run tests
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Set up QEMU on x86_64
id: qemu
uses: docker/setup-qemu-action@v3
with:
platforms: riscv64
- name: Build and Test
run: |
docker run --rm --platform linux/riscv64 \
-v ${{ github.workspace }}:/ws --workdir=/ws \
chianetwork/ubuntu-22.04-risc-builder:latest \
bash -exc '\
cargo test --release -p chia-consensus
'
build_wheels:
name: ${{ matrix.os }} 📦 Build Wheel ${{ matrix.python.major-dot-minor }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
python:
- major-dot-minor: "3.9"
matrix: "3.9"
- major-dot-minor: "3.10"
matrix: "3.10"
- major-dot-minor: "3.11"
matrix: "3.11"
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Set up QEMU on x86_64
id: qemu
uses: docker/setup-qemu-action@v3
with:
platforms: riscv64
- name: Build and Test
run: |
docker run --rm --platform linux/riscv64 \
-v ${{ github.workspace }}:/ws --workdir=/ws \
chianetwork/ubuntu-22.04-risc-builder:latest \
bash -exc '\
pyenv global ${{ matrix.python.matrix }}
python -m venv venv && \
source ./venv/bin/activate && \
pip install --upgrade pip && \
pip install --extra-index-url https://pypi.chia.net/simple/ maturin==1.2.3 && \
maturin build -i python --release -m wheel/Cargo.toml \
'
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: packages-${{ matrix.os }}-${{ matrix.python.major-dot-minor }}
path: ./target/wheels
if-no-files-found: error
upload:
name: Upload to Chia PyPI
runs-on: ubuntu-latest
needs:
- build_wheels
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set Env
uses: Chia-Network/actions/setjobenv@main
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Download artifacts
if: env.RELEASE == 'true'
uses: actions/download-artifact@v4
with:
merge-multiple: true
pattern: packages-*
path: ./target/wheels
- name: Configure AWS credentials
if: env.RELEASE == 'true'
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::${{ secrets.CHIA_AWS_ACCOUNT_ID }}:role/installer-upload
aws-region: us-west-2
- name: List existing wheels
if: env.RELEASE == 'true'
shell: sh
run: |
aws s3 ls s3://download.chia.net/simple/chia-rs/ > existing_wheel_list_raw
cat existing_wheel_list_raw
cat existing_wheel_list_raw | tr -s ' ' | cut -d ' ' -f 4 > existing_wheel_list
- name: List new wheels
if: env.RELEASE == 'true'
shell: sh
run: |
(cd target/wheels/; ls chia_rs-*.whl) > new_wheel_list
cat new_wheel_list | xargs -I % sh -c 'ls -l target/wheels/%'
- name: Choose wheels to upload
if: env.RELEASE == 'true'
shell: sh
run: |
grep -F -x -v -f existing_wheel_list new_wheel_list > upload_wheel_list
cat upload_wheel_list
- name: Upload wheels
if: env.RELEASE == 'true'
shell: sh
run: |
cat upload_wheel_list | xargs -I % sh -c 'aws s3 cp target/wheels/% s3://download.chia.net/simple/chia-rs/'