-
Notifications
You must be signed in to change notification settings - Fork 49
140 lines (125 loc) · 4.84 KB
/
build_recipes.yaml
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
name: build recipes
on:
push:
branches:
- 'main'
paths:
- 'recipes/**'
pull_request:
paths:
- 'recipes/**'
jobs:
build_recipes:
runs-on: ubuntu-latest
env:
TARGET_PLATFORM: emscripten-wasm32
GITHUB_OWNER: "emscripten-forge"
strategy:
fail-fast: false
steps:
################################################################
# SETUP
################################################################
- name: Checkout repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Maximize build space
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- name: Delete fortran
run: sudo apt-get remove gfortran -y
################################################################
# CONFIG
################################################################
- name: Global config
shell: bash -el {0}
run: git config --global advice.detachedHead false
################################################################
# MAMBA
################################################################
- name: Install micromamba
uses: mamba-org/setup-micromamba@v1
with:
micromamba-version: '1.5.8-0'
environment-file: ci_env.yml
environment-name: ci
init-shell: bash
cache-environment: true
post-cleanup: 'all'
################################################################
# POST ENV INSTALL CONFIG
################################################################
- name: Post env install config
shell: bash -el {0}
run: |
cp $GITHUB_WORKSPACE/.github/workflows/.condarc $HOME
cp $GITHUB_WORKSPACE/conda_build_config.yaml $HOME
################################################################
# PUSH
################################################################
- name: Build recipes with changes PUSH
shell: bash -el {0}
if: github.event_name == 'push'
run: |
python -m emci build changed $GITHUB_WORKSPACE/ origin/main~1 origin/main
################################################################
# PULL_REQUEST
################################################################
- name: Build recipes with changes PULL_REQUEST
shell: bash -el {0}
if: github.event_name == 'pull_request'
run: |
python -m emci build changed $GITHUB_WORKSPACE/ origin/main HEAD
################################################################
# UPLOAD
################################################################
- name: Upload packages to Quetz
if: (github.event_name == 'push' && github.repository == 'emscripten-forge/recipes')
shell: bash -l {0}
env:
QUETZ_API_KEY: ${{ secrets.QUETZ_API_KEY }}
run: |
overall_success=true
# Loop over {emscripten-wasm32, linux-64, noarch}
for platform in emscripten-wasm32 linux-64 noarch; do
if [ -d "${GITHUB_WORKSPACE}/output/${platform}" ]; then
cd "${GITHUB_WORKSPACE}/output/${platform}"
files=$(ls *.tar.bz2 2> /dev/null)
if [ -n "$files" ]; then
for package in $files; do
echo "Uploading ${package} for ${platform}"
FILE_SHA256=$(sha256sum "${package}" | awk '{ print $1 }')
CURL_CMD=(
curl -H "X-API-Key: ${QUETZ_API_KEY}" -X POST
"https://beta.mamba.pm/api/channels/emscripten-forge/upload/${package}?sha256=${FILE_SHA256}&force=false"
--data-binary "@${package}"
-o response_body.txt
-w "%{http_code}"
-s
)
HTTP_STATUS=$( "${CURL_CMD[@]}" )
RESPONSE=$(<response_body.txt)
# Check the HTTP status code and log appropriate message
if [[ "$HTTP_STATUS" -eq 201 ]]; then
echo "Upload succeeded for ${package} on ${platform}"
else
echo "Error: Upload failed with HTTP status $HTTP_STATUS"
echo "Response Body: $RESPONSE"
overall_success=false
fi
rm -f response_body.txt
done
fi
fi
done
# Check if all uploads were successful
if [ "$overall_success" = false ]; then
echo "One or more uploads failed"
exit 1
else
echo "All uploads completed successfully"
fi