@@ -22,30 +22,29 @@ jobs:
2222 with :
2323 python-version : ' 3.10'
2424 cache : ' pip'
25- - name : Cache PEX dependencies
26- uses : actions/cache@v4
27- with :
28- path : ~/.pex
29- key : pex-${{ runner.os }}-${{ hashFiles('setup.py', 'requirements.txt') }}
30- restore-keys : |
31- pex-${{ runner.os }}-
32- - name : Install dependencies
25+
26+ - name : Install build dependencies
3327 run : |
3428 python -m pip install --upgrade pip
35- pip install pex
29+ pip install pex setuptools wheel
3630
3731 - name : Get version
3832 id : get_version
3933 run : echo "VERSION=$(cat cloudsmith_cli/data/VERSION)" >> $GITHUB_ENV
4034
41- - name : Create Zipapp
35+ - name : Create multi-platform Zipapp with PEX
4236 run : |
43- pex . \
44- -o cloudsmith-${{ env.VERSION }}.pyz \
45- --console-script cloudsmith \
46- --python-shebang "/usr/bin/env python3" \
47- --venv \
48- --interpreter-constraint "CPython>=3.10,<3.15"
37+ pex . \
38+ --output-file cloudsmith-${{ env.VERSION }}.pyz \
39+ --console-script cloudsmith \
40+ --python-shebang "/usr/bin/env python3" \
41+ --venv \
42+ --complete-platform .github/.platforms/linux-x86_64-py310.json \
43+ --complete-platform .github/.platforms/linux-aarch64-py310.json \
44+ --complete-platform .github/.platforms/linux-x86_64-musl-py310.json \
45+ --complete-platform .github/.platforms/linux-aarch64-musl-py310.json \
46+ --complete-platform .github/.platforms/macos-arm64-py310.json \
47+ --complete-platform .github/.platforms/windows-x86_64-py310.json
4948
5049 - name : Create Release
5150 id : create_release
7978 id : push_zipapp
8079 run : cloudsmith push raw ${{ vars.CLOUDSMITH_NAMESPACE }}/cli-zipapp ./cloudsmith-${{ env.VERSION }}.pyz --name cloudsmith-cli --version ${{ env.VERSION }}
8180
82- - name : Install build dependencies for Python packages
83- run : pip install setuptools wheel
84-
8581 - name : Build Python packages
8682 run : python setup.py sdist bdist_wheel
8783
@@ -91,24 +87,31 @@ jobs:
9187 - name : Push wheel to Cloudsmith
9288 run : cloudsmith push python ${{ vars.CLOUDSMITH_NAMESPACE }}/cli dist/cloudsmith_cli-${{ env.VERSION }}-py3-none-any.whl
9389
90+ - name : Set up QEMU for multi-arch
91+ uses : docker/setup-qemu-action@v3
92+
9493 - name : Set up Docker Buildx
9594 uses : docker/setup-buildx-action@v3
9695
97- - name : Login to Cloudsmith Docker Registry
98- run : echo "${CLOUDSMITH_API_KEY}" | docker login docker.cloudsmith.io -u ${{ vars.CLOUDSMITH_SVC_SLUG }} --password-stdin
99-
100- - name : Login to DockerHub
101- run : echo "${{ secrets.DOCKERHUB_PAT }}" | docker login -u ${{ vars.DOCKERHUB_USER }} --password-stdin
102-
103- - name : Build and push Docker images
96+ - name : Push Dockerised CLI to Cloudsmith (multi-arch)
97+ id : push_dockerised_cli_cloudsmith
98+ run : |
99+ echo "${CLOUDSMITH_API_KEY}" | docker login docker.cloudsmith.io -u ${{ vars.CLOUDSMITH_SVC_SLUG }} --password-stdin
100+ docker buildx build \
101+ --platform linux/amd64,linux/arm64 \
102+ --build-arg CLOUDSMITH_CLI_VERSION=${{ env.VERSION }} \
103+ -t docker.cloudsmith.io/${{ vars.CLOUDSMITH_NAMESPACE }}/cli-zipapp/cloudsmith-cli:${{ env.VERSION }} \
104+ --push .
105+
106+ - name : Push Dockerised CLI to DockerHub (multi-arch)
107+ id : push_dockerised_cli_dockerhub
104108 run : |
105- docker buildx build \
106- --platform linux/amd64,linux/arm64 \
107- --build-arg CLOUDSMITH_CLI_VERSION=${{ env.VERSION }} \
108- -t docker.cloudsmith.io/${{ vars.CLOUDSMITH_NAMESPACE }}/cli-zipapp/cloudsmith-cli:${{ env.VERSION }} \
109- -t cloudsmith/cloudsmith-cli:${{ env.VERSION }} \
110- --push \
111- .
109+ echo "${{ secrets.DOCKERHUB_PAT }}" | docker login -u ${{ vars.DOCKERHUB_USER }} --password-stdin
110+ docker buildx build \
111+ --platform linux/amd64,linux/arm64 \
112+ --build-arg CLOUDSMITH_CLI_VERSION=${{ env.VERSION }} \
113+ -t cloudsmith/cloudsmith-cli:${{ env.VERSION }} \
114+ --push .
112115
113116 # Publish Python packages to PyPI
114117 publish-pypi :
0 commit comments