Skip to content

Commit 715ffae

Browse files
Backport 21985 : Fix build wheels (#22045)
* update python version * add .github/workflows/scripts/resolve_deps_define_diff_commits.sh file * fix permissions * add .github/workflows/scripts/resolve_deps_check_should_run.sh --------- Co-authored-by: dd-octo-sts[bot] <200755185+dd-octo-sts[bot]@users.noreply.github.com>
1 parent 2b797b2 commit 715ffae

File tree

3 files changed

+87
-72
lines changed

3 files changed

+87
-72
lines changed

.github/workflows/resolve-build-deps.yaml

Lines changed: 40 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -27,39 +27,36 @@ env:
2727
# https://reproducible-builds.org/specs/source-date-epoch/
2828
SOURCE_DATE_EPOCH: "1580601600"
2929

30-
jobs:
30+
jobs:
3131
# measure-disk-usage.yml depends on this workflow being triggered and completed,
3232
# so it can wait for the build to calculate dependency sizes.
3333
# The 'on' setting ensures it runs, but this job cancels it if no dependency changes are detected.
3434

35-
check-dependency-changes:
36-
name: Check dependency changes
35+
check-should-run:
36+
name: Check if build should run
3737
runs-on: ubuntu-22.04
3838
permissions:
3939
actions: write
40+
contents: read
4041
outputs:
41-
dependency_changed: ${{ steps.dependency-check.outputs.dependency_changed }}
4242
builder_changed: ${{ steps.dependency-check.outputs.builder_changed }}
43+
should_run_build: ${{ steps.dependency-check.outputs.should_run_build }}
4344
steps:
45+
- name: Checkout code
46+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
47+
4448
- name: Define diff commits
4549
id: set_sha
46-
run: |
47-
if [ "${{ github.event_name }}" == "pull_request" ]; then
48-
PREV_SHA=${{ github.event.pull_request.base.sha }}
49-
CURR_SHA=${{ github.event.pull_request.head.sha }}
50-
else
51-
PREV_SHA=${{ github.event.before }}
52-
CURR_SHA=${{ github.sha }}
53-
fi
54-
55-
echo "prev_sha=$PREV_SHA" >> $GITHUB_OUTPUT
56-
echo "curr_sha=$CURR_SHA" >> $GITHUB_OUTPUT
57-
58-
echo "Current SHA: $CURR_SHA"
59-
echo "Previous SHA: $PREV_SHA"
50+
if: github.event_name != 'workflow_dispatch'
51+
run: .github/workflows/scripts/resolve_deps_define_diff_commits.sh
52+
env:
53+
PR_BASE_SHA: ${{ github.event.pull_request.base.sha }}
54+
PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
55+
EVENT_BEFORE: ${{ github.event.before }}
6056

6157
- name: Get changed files
6258
id: changed-files
59+
if: github.event_name != 'workflow_dispatch'
6360
run: |
6461
REPO="${{ github.repository }}"
6562
@@ -71,50 +68,24 @@ jobs:
7168
env:
7269
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
7370

74-
- name: Check for dependency changes
71+
- name: Check if build should run
7572
id: dependency-check
76-
run: |
77-
FILES_CHANGED="${{ steps.changed-files.outputs.files_changed }}"
78-
79-
cat << EOF > dependency_files.txt
80-
agent_requirements\.in
81-
\.github/workflows/resolve-build-deps\.yaml
82-
\.builders/
83-
EOF
84-
85-
cat <<EOF > builder_files.txt
86-
\.builders/
87-
EOF
88-
89-
DEPENDENCY_CHANGED=$(
90-
echo "$FILES_CHANGED" | \
91-
grep -qf dependency_files.txt \
92-
&& echo "true" || echo "false"
93-
)
94-
95-
BUILDER_CHANGED=$(
96-
echo "$FILES_CHANGED" | \
97-
grep -qf builder_files.txt \
98-
&& echo "true" || echo "false"
99-
)
100-
101-
102-
echo "dependency_changed=$DEPENDENCY_CHANGED" | tee -a $GITHUB_OUTPUT
103-
echo "builder_changed=$BUILDER_CHANGED" | tee -a $GITHUB_OUTPUT
104-
73+
run: .github/workflows/scripts/resolve_deps_check_should_run.sh
10574
env:
10675
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
76+
FILES_CHANGED: ${{ steps.changed-files.outputs.files_changed }}
10777

10878
test:
10979
name: Run tests
11080
needs:
111-
- check-dependency-changes
112-
if: needs.check-dependency-changes.outputs.dependency_changed == 'true'
81+
- check-should-run
82+
if: needs.check-should-run.outputs.should_run_build == 'true'
11383
runs-on: ubuntu-22.04
11484
steps:
11585
- name: Checkout code
11686
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
117-
- name: Set up Python ${{ env.PYTHON_VERSION }}
87+
88+
- name: Set up Python ${{ env.PYTHON_VERSION }}
11889
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
11990
with:
12091
python-version: ${{ env.PYTHON_VERSION }}
@@ -130,8 +101,8 @@ jobs:
130101
build:
131102
name: Target ${{ matrix.job.image }} on ${{ matrix.job.os }}
132103
needs:
133-
- check-dependency-changes
134-
if: needs.check-dependency-changes.outputs.dependency_changed == 'true'
104+
- check-should-run
105+
if: needs.check-should-run.outputs.should_run_build == 'true'
135106
runs-on: ${{ matrix.job.os }}
136107
strategy:
137108
fail-fast: false
@@ -162,8 +133,7 @@ jobs:
162133
python-version: ${{ env.PYTHON_VERSION }}
163134

164135
- name: Install management dependencies
165-
run: |
166-
pip install -r .builders/deps/host_dependencies.txt
136+
run: pip install -r .builders/deps/host_dependencies.txt
167137

168138
- name: Log in to GitHub Packages
169139
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
@@ -173,29 +143,28 @@ jobs:
173143
password: ${{ secrets.GITHUB_TOKEN }}
174144

175145
- name: Build image and wheels
176-
if: needs.check-dependency-changes.outputs.builder_changed == 'true'
177-
run: |-
178-
python .builders/build.py ${{ matrix.job.image }} --python 3 ${{ env.OUT_DIR }}/py3
146+
if: needs.check-should-run.outputs.builder_changed == 'true'
147+
run: python .builders/build.py ${{ matrix.job.image }} --python 3 ${{ env.OUT_DIR }}/py3
179148

180149
- name: Pull image and build wheels
181-
if: needs.check-dependency-changes.outputs.builder_changed == 'false'
182-
run: |-
150+
if: needs.check-should-run.outputs.builder_changed == 'false'
151+
run: |
183152
digest=$(jq -r '.["${{ matrix.job.image }}"]' .deps/image_digests.json)
184153
python .builders/build.py ${{ matrix.job.image }} --python 3 ${{ env.OUT_DIR }}/py3 --digest $digest
185154
186155
- name: Publish image
187-
if: github.event_name == 'push' && needs.check-dependency-changes.outputs.builder_changed == 'true'
156+
if: github.event_name == 'push' && needs.check-should-run.outputs.builder_changed == 'true'
188157
run: ${DOCKER} push ${{ env.BUILDER_IMAGE }}
189158

190159
- name: Save new image digest
191-
if: github.event_name == 'push' && needs.check-dependency-changes.outputs.builder_changed == 'true'
160+
if: github.event_name == 'push' && needs.check-should-run.outputs.builder_changed == 'true'
192161
run: >-
193162
${DOCKER} inspect --format "{{index .RepoDigests 0}}" ${{ env.BUILDER_IMAGE }}
194163
| cut -d '@' -f 2
195164
> ${{ env.OUT_DIR }}/image_digest
196165
197166
- name: Persist current image digest
198-
if: github.event_name == 'push' && needs.check-dependency-changes.outputs.builder_changed == 'false'
167+
if: needs.check-should-run.outputs.builder_changed == 'false'
199168
run: >-
200169
jq -r '.["${{ matrix.job.image }}"]' .deps/image_digests.json
201170
> ${{ env.OUT_DIR }}/image_digest
@@ -209,8 +178,8 @@ jobs:
209178
build-macos:
210179
name: Target macOS/${{ matrix.job.arch }} on ${{ matrix.job.os }}
211180
needs:
212-
- check-dependency-changes
213-
if: needs.check-dependency-changes.outputs.dependency_changed == 'true'
181+
- check-should-run
182+
if: needs.check-should-run.outputs.should_run_build == 'true'
214183
runs-on: ${{ matrix.job.os }}
215184
strategy:
216185
fail-fast: false
@@ -230,7 +199,7 @@ jobs:
230199

231200
steps:
232201
- name: Set up environment
233-
run: |-
202+
run: |
234203
# We remove everything that comes pre-installed via Homebrew to avoid depending on or shipping stuff that
235204
# comes in the runner through Homebrew to better control what might get shipped in the wheels via `delocate`
236205
brew remove --force --ignore-dependencies $(brew list --formula)
@@ -256,16 +225,15 @@ jobs:
256225
id: cache-builder-root
257226
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
258227
with:
259-
path: |
260-
~/builder_root
228+
path: ~/builder_root
261229
key: macos-${{ matrix.job.arch }}-deps-builder-root-cache-${{ hashFiles('./.builders/images/macos/*', './.builders/images/*', './.builders/deps/*', './.builders/build.py', './.github/workflows/resolve-build-deps.yml') }}
262230

263231
- name: Run the build
264232
env:
265233
# This sets the minimum macOS version compatible for all built artifacts
266234
MACOSX_DEPLOYMENT_TARGET: "11.0" # https://docs.datadoghq.com/agent/supported_platforms/?tab=macos
267235
CACHE_HIT: ${{ steps.cache-builder-root.outputs.cache-hit }}
268-
run: |-
236+
run: |
269237
# If we hit the cache, we can skip the builder setup
270238
if [[ ${CACHE_HIT} == "true" ]]; then
271239
${DD_PYTHON3} .builders/build.py ${{ env.TARGET_NAME }} --builder-root ~/builder_root --python 3 ${{ env.OUT_DIR }}/py3 --skip-setup
@@ -283,11 +251,11 @@ jobs:
283251

284252
publish:
285253
name: Publish artifacts and update lockfiles via PR
286-
if: needs.check-dependency-changes.outputs.dependency_changed == 'true' && (github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && (github.ref_name == github.event.repository.default_branch || startsWith(github.ref_name, '7.'))))
254+
if: needs.check-should-run.outputs.should_run_build == 'true' && (github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && (github.ref_name == github.event.repository.default_branch || startsWith(github.ref_name, '7.'))))
287255
needs:
288256
- build
289257
- build-macos
290-
- check-dependency-changes
258+
- check-should-run
291259
runs-on: ubuntu-latest
292260

293261
permissions:
@@ -329,7 +297,7 @@ jobs:
329297
run: python .builders/lock.py targets
330298

331299
- name: Clean up repository
332-
run: |-
300+
run: |
333301
rm ${{ steps.auth.outputs.credentials_file_path }}
334302
rm -rf targets
335303
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#!/bin/bash
2+
3+
if [ "$GITHUB_EVENT_NAME" == 'workflow_dispatch' ]; then
4+
builder_changed="false"
5+
should_run_build="true"
6+
else
7+
8+
cat << EOF > dependency_files.txt
9+
agent_requirements\.in
10+
\.github/workflows/resolve-build-deps\.yaml
11+
\.builders/
12+
EOF
13+
14+
cat <<EOF > builder_files.txt
15+
\.builders/
16+
EOF
17+
18+
should_run_build=$(
19+
echo "$FILES_CHANGED" | \
20+
grep -qf dependency_files.txt \
21+
&& echo "true" || echo "false"
22+
)
23+
24+
builder_changed=$(
25+
echo "$FILES_CHANGED" | \
26+
grep -qf builder_files.txt \
27+
&& echo "true" || echo "false"
28+
)
29+
fi
30+
31+
echo "should_run_build=$should_run_build" | tee -a $GITHUB_OUTPUT
32+
echo "builder_changed=$builder_changed" | tee -a $GITHUB_OUTPUT
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/bash
2+
3+
if [ "$GITHUB_EVENT_NAME" == "pull_request" ]; then
4+
prev_sha=$PR_BASE_SHA
5+
curr_sha=$PR_HEAD_SHA
6+
else
7+
prev_sha=$EVENT_BEFORE
8+
curr_sha=$GITHUB_SHA
9+
fi
10+
11+
echo "prev_sha=$prev_sha" >> $GITHUB_OUTPUT
12+
echo "curr_sha=$curr_sha" >> $GITHUB_OUTPUT
13+
14+
echo "Current SHA: $curr_sha"
15+
echo "Previous SHA: $prev_sha"

0 commit comments

Comments
 (0)