55 tags :
66 - " v*"
77
8- permissions :
9- id-token : write
10- contents : write
11-
128jobs :
139 # Build and publish to GitHub, Cloudsmith (zipapp + Docker)
1410 build :
1511 name : Build and publish artifacts
1612 runs-on : ubuntu-latest
13+ permissions :
14+ id-token : write
15+ contents : write
16+ env :
17+ CLOUDSMITH_NAMESPACE : ${{ vars.CLOUDSMITH_NAMESPACE }}
18+ CLOUDSMITH_SVC_SLUG : ${{ vars.CLOUDSMITH_SVC_SLUG }}
19+ DOCKERHUB_USER : ${{ vars.DOCKERHUB_USER }}
1720 steps :
18- - uses : actions/checkout@v4
21+ - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
22+ with :
23+ persist-credentials : false
1924
2025 - name : Set up Python 3.10
21- uses : actions/setup-python@v5
26+ uses : actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
2227 with :
2328 python-version : ' 3.10'
24- cache : ' pip'
2529
2630 - name : Install build dependencies
2731 run : |
3539 - name : Create multi-platform Zipapp with PEX
3640 run : |
3741 pex . \
38- --output-file cloudsmith-${{ env. VERSION }} .pyz \
42+ --output-file " cloudsmith-${VERSION} .pyz" \
3943 --console-script cloudsmith \
4044 --python-shebang "/usr/bin/env python3" \
4145 --venv \
@@ -70,82 +74,75 @@ jobs:
7074 --complete-platform .github/.platforms/macos-arm64-py314.json \
7175 --complete-platform .github/.platforms/windows-x86_64-py314.json
7276
73- - name : Create Release
74- id : create_release
75- uses : actions/create-release@v1
76- env :
77- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
77+ - name : Create Release and Upload Asset
78+ uses : softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2.2.2
7879 with :
79- tag_name : v${{ env.VERSION }}
80- release_name : Release v${{ env.VERSION }}
81- draft : false
82- prerelease : false
83-
84- - name : Upload Release Asset
85- id : upload-release-asset
86- uses : actions/upload-release-asset@v1
80+ name : Release v${{ env.VERSION }}
81+ files : ./cloudsmith-${{ env.VERSION }}.pyz
8782 env :
8883 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
89- with :
90- upload_url : ${{ steps.create_release.outputs.upload_url }}
91- asset_path : ./cloudsmith-${{ env.VERSION }}.pyz
92- asset_name : cloudsmith-${{ env.VERSION }}.pyz
93- asset_content_type : application/zip
9484
9585 - name : Install and authenticate Cloudsmith CLI
96- uses : cloudsmith-io/cloudsmith-cli-action@v1
86+ uses : cloudsmith-io/cloudsmith-cli-action@d8a6f3fe4d45eaee8e8fafae7230e808e1c7f8ab # v2.0.0
9787 with :
9888 oidc-namespace : ${{ vars.CLOUDSMITH_NAMESPACE }}
9989 oidc-service-slug : ${{ vars.CLOUDSMITH_SVC_SLUG }}
10090
10191 - name : Push Zipapp to Cloudsmith
10292 id : push_zipapp
103- run : cloudsmith push raw ${{ vars. CLOUDSMITH_NAMESPACE }} /cli-zipapp ./cloudsmith-${{ env. VERSION }} .pyz --name cloudsmith-cli --version ${{ env. VERSION }}
93+ run : cloudsmith push raw "${ CLOUDSMITH_NAMESPACE} /cli-zipapp" " ./cloudsmith-${VERSION} .pyz" --name cloudsmith-cli --version "${ VERSION}"
10494
10595 - name : Build Python packages
10696 run : python setup.py sdist bdist_wheel
10797
10898 - name : Push source distribution to Cloudsmith
109- run : cloudsmith push python ${{ vars. CLOUDSMITH_NAMESPACE }} /cli dist/cloudsmith-cli-${{ env. VERSION }} .tar.gz
99+ run : cloudsmith push python "${ CLOUDSMITH_NAMESPACE} /cli" " dist/cloudsmith-cli-${VERSION} .tar.gz"
110100
111101 - name : Push wheel to Cloudsmith
112- run : cloudsmith push python ${{ vars. CLOUDSMITH_NAMESPACE }} /cli dist/cloudsmith_cli-${{ env. VERSION }} -py3-none-any.whl
102+ run : cloudsmith push python "${ CLOUDSMITH_NAMESPACE} /cli" " dist/cloudsmith_cli-${VERSION} -py3-none-any.whl"
113103
114104 - name : Set up QEMU for multi-arch
115- uses : docker/setup-qemu-action@v3
105+ uses : docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
116106
117107 - name : Set up Docker Buildx
118- uses : docker/setup-buildx-action@v3
108+ uses : docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
119109
120110 - name : Push Dockerised CLI to Cloudsmith (multi-arch)
121111 id : push_dockerised_cli_cloudsmith
122112 run : |
123- echo "${CLOUDSMITH_API_KEY}" | docker login docker.cloudsmith.io -u ${{ vars. CLOUDSMITH_SVC_SLUG }} --password-stdin
113+ echo "${CLOUDSMITH_API_KEY}" | docker login docker.cloudsmith.io -u "${ CLOUDSMITH_SVC_SLUG}" --password-stdin
124114 docker buildx build \
125115 --platform linux/amd64,linux/arm64 \
126- --build-arg CLOUDSMITH_CLI_VERSION=${{ env. VERSION }} \
127- -t docker.cloudsmith.io/${{ vars. CLOUDSMITH_NAMESPACE }} /cli-zipapp/cloudsmith-cli:${{ env. VERSION }} \
116+ --build-arg " CLOUDSMITH_CLI_VERSION=${VERSION}" \
117+ -t " docker.cloudsmith.io/${CLOUDSMITH_NAMESPACE} /cli-zipapp/cloudsmith-cli:${VERSION}" \
128118 --push .
129119
130120 - name : Push Dockerised CLI to DockerHub (multi-arch)
131121 id : push_dockerised_cli_dockerhub
122+ env :
123+ DOCKERHUB_PAT : ${{ secrets.DOCKERHUB_PAT }}
132124 run : |
133- echo "${{ secrets. DOCKERHUB_PAT }} " | docker login -u ${{ vars. DOCKERHUB_USER }} --password-stdin
125+ echo "${DOCKERHUB_PAT} " | docker login -u "${ DOCKERHUB_USER}" --password-stdin
134126 docker buildx build \
135127 --platform linux/amd64,linux/arm64 \
136- --build-arg CLOUDSMITH_CLI_VERSION=${{ env. VERSION }} \
137- -t cloudsmith/cloudsmith-cli:${{ env. VERSION }} \
128+ --build-arg " CLOUDSMITH_CLI_VERSION=${VERSION}" \
129+ -t " cloudsmith/cloudsmith-cli:${VERSION}" \
138130 --push .
139131
140132 # Publish Python packages to PyPI
141133 publish-pypi :
142134 name : Publish to PyPI
143135 runs-on : ubuntu-latest
136+ permissions :
137+ id-token : write
138+ contents : read
144139 steps :
145- - uses : actions/checkout@v4
140+ - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
141+ with :
142+ persist-credentials : false
146143
147144 - name : Set up Python 3.10
148- uses : actions/setup-python@v5
145+ uses : actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
149146 with :
150147 python-version : ' 3.10'
151148
@@ -158,6 +155,6 @@ jobs:
158155 run : python setup.py sdist bdist_wheel
159156
160157 - name : Publish to PyPI
161- uses : pypa/gh-action-pypi-publish@release/v1
158+ uses : pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # release/v1
162159 with :
163160 packages-dir : dist/
0 commit comments