Skip to content

Commit 39f7b4f

Browse files
committed
test: clean up and improve the workflow & Makefile
1 parent cbcea56 commit 39f7b4f

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

.github/workflows/pr-change-set.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ jobs:
2222
with:
2323
disable-pip-audit: ${{ vars.DISABLE_PIP_AUDIT == 'true' }}
2424

25-
test:
25+
verify_artifacts:
2626
needs: [build]
27-
name: test
27+
name: verify_artifacts
2828
runs-on: ubuntu-latest
2929
permissions:
3030
contents: read
@@ -35,6 +35,10 @@ jobs:
3535
with:
3636
fetch-depth: 0
3737

38+
# Download all uploaded artifacts in the build job into the 'downloads' directory.
39+
# This includes built package distributions and SHA256 hash files from all matrix jobs.
40+
# The `path` input ensures all artifacts are placed under the 'downloads/' folder while
41+
# maintaining their respective artifact subdirectory structure.
3842
- name: Download artifact
3943
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
4044
with:

Makefile

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ SHELL := bash
77
PACKAGE_NAME := package
88
PACKAGE_VERSION := $(shell python -c $$'try: import $(PACKAGE_NAME); print($(PACKAGE_NAME).__version__, end="");\nexcept: print("unknown");')
99

10+
# Determine the OS and architecture.
1011
OS_NAME := "$(shell uname)"
1112
ifeq ($(OS_NAME), "Darwin")
1213
OS := darwin
@@ -16,7 +17,10 @@ else
1617
endif
1718
endif
1819

19-
ARCH := $(shell echo `uname -m` | xargs)# E.g., arm64 or x86_64.
20+
ARCH := $(shell echo `uname -m` | xargs) # E.g., arm64 or x86_64.
21+
22+
# Construct full package identifier.
23+
PACKAGE_FULL_NAME := $(PACKAGE_NAME)-$(PACKAGE_VERSION)-$(OS)-$(ARCH)
2024

2125
# This variable contains the first goal that matches any of the listed goals
2226
# here, else it contains an empty string. The net effect is to filter out
@@ -118,7 +122,7 @@ upgrade-quiet:
118122
# Generate a Software Bill of Materials (SBOM).
119123
.PHONY: sbom
120124
sbom: requirements
121-
cyclonedx-py requirements --output-format json --outfile dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-$(OS)-$(ARCH)-sbom.json
125+
cyclonedx-py requirements --output-format json --outfile dist/$(PACKAGE_FULL_NAME)-sbom.json
122126

123127
# Generate a requirements.txt file containing version and integrity hashes for all
124128
# packages currently installed in the virtual environment. There's no easy way to
@@ -140,14 +144,14 @@ requirements.txt: pyproject.toml
140144
[[ $$pkg =~ (.*)==(.*) ]] && curl -s https://pypi.org/pypi/$${BASH_REMATCH[1]}/$${BASH_REMATCH[2]}/json | python -c "import json, sys; print(''.join(f''' \\\\\n --hash=sha256:{pkg['digests']['sha256']}''' for pkg in json.load(sys.stdin)['urls']));" >> requirements.txt; \
141145
done
142146
echo -e -n "$(PACKAGE_NAME)==$(PACKAGE_VERSION)" >> requirements.txt
143-
if [ -f dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-$(OS)-$(ARCH).tar.gz ]; then \
144-
echo -e -n " \\\\\n $$(python -m pip hash --algorithm sha256 dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-$(OS)-$(ARCH).tar.gz | grep '^\-\-hash')" >> requirements.txt; \
147+
if [ -f dist/$(PACKAGE_FULL_NAME).tar.gz ]; then \
148+
echo -e -n " \\\\\n $$(python -m pip hash --algorithm sha256 dist/$(PACKAGE_FULL_NAME).tar.gz | grep '^\-\-hash')" >> requirements.txt; \
145149
fi
146150
if [ -f dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-py3-$(OS)-$(ARCH).whl ]; then \
147151
echo -e -n " \\\\\n $$(python -m pip hash --algorithm sha256 dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-py3-$(OS)-$(ARCH).whl | grep '^\-\-hash')" >> requirements.txt; \
148152
fi
149153
echo "" >> requirements.txt
150-
cp requirements.txt dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-$(OS)-$(ARCH)-requirements.txt
154+
cp requirements.txt dist/$(PACKAGE_FULL_NAME)-requirements.txt
151155

152156
# Audit the currently installed packages. Skip packages that are installed in
153157
# editable mode (like the one in development here) because they may not have
@@ -186,19 +190,19 @@ test:
186190
# When building these artifacts, we need the environment variable SOURCE_DATE_EPOCH
187191
# set to the build date/epoch. For more details, see: https://flit.pypa.io/en/latest/reproducible.html
188192
.PHONY: dist
189-
dist: dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-py3-none-any.whl dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION).tar.gz dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-docs-html.zip dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-docs-md.zip dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-$(OS)-$(ARCH)-build-epoch.txt
193+
dist: dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-py3-none-any.whl dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION).tar.gz dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-docs-html.zip dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-docs-md.zip dist/$(PACKAGE_FULL_NAME)-build-epoch.txt
190194
dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-py3-none-any.whl:
191195
SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) flit build --setup-py --format wheel
192196
mv dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-py3-none-any.whl dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-py3-$(OS)-$(ARCH).whl
193197
dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION).tar.gz:
194198
SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) flit build --setup-py --format sdist
195-
mv dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION).tar.gz dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-$(OS)-$(ARCH).tar.gz
199+
mv dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION).tar.gz dist/$(PACKAGE_FULL_NAME).tar.gz
196200
dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-docs-html.zip: docs-html
197201
python -m zipfile -c dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-docs-html.zip docs/_build/html/
198202
dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-docs-md.zip: docs-md
199203
python -m zipfile -c dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-docs-md.zip docs/_build/markdown/
200-
dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-$(OS)-$(ARCH)-build-epoch.txt:
201-
echo $(SOURCE_DATE_EPOCH) > dist/$(PACKAGE_NAME)-$(PACKAGE_VERSION)-$(OS)-$(ARCH)-build-epoch.txt
204+
dist/$(PACKAGE_FULL_NAME)-build-epoch.txt:
205+
echo $(SOURCE_DATE_EPOCH) > dist/$(PACKAGE_FULL_NAME)-build-epoch.txt
202206

203207
# Build the HTML and Markdown documentation from the package's source.
204208
DOCS_SOURCE := $(shell git ls-files docs/source)

0 commit comments

Comments
 (0)