@@ -116,7 +116,6 @@ jobs:
116116 timeout-minutes : 120
117117 outputs :
118118 wheel_version : ${{ needs.compute-versions.outputs.python_version }}
119- s3_prefix : ${{ steps.upload.outputs.s3_prefix }}
120119 container :
121120 image : ghcr.io/nvidia/openshell/ci:latest
122121 credentials :
@@ -129,10 +128,6 @@ jobs:
129128 MISE_GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
130129 SCCACHE_MEMCACHED_ENDPOINT : ${{ vars.SCCACHE_MEMCACHED_ENDPOINT }}
131130 OPENSHELL_IMAGE_TAG : ${{ needs.compute-versions.outputs.semver }}
132- NAV_PYPI_S3_BUCKET : navigator-pypi-artifacts # TODO: rename bucket to openshell-pypi-artifacts
133- AWS_ACCESS_KEY_ID : ${{ secrets.AWS_ACCESS_KEY_ID }}
134- AWS_SECRET_ACCESS_KEY : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
135- AWS_DEFAULT_REGION : us-west-2
136131 steps :
137132 - uses : actions/checkout@v4
138133 with :
@@ -158,97 +153,13 @@ jobs:
158153 OPENSHELL_CARGO_VERSION="${{ needs.compute-versions.outputs.cargo_version }}" mise run python:build:macos
159154 ls -la target/wheels/*.whl
160155
161- - name : Upload wheels to S3
162- id : upload
163- run : |
164- set -euo pipefail
165- WHEEL_VERSION="${{ needs.compute-versions.outputs.python_version }}"
166- S3_PREFIX="openshell/${WHEEL_VERSION}"
167- aws s3 cp target/wheels/ "s3://${NAV_PYPI_S3_BUCKET}/${S3_PREFIX}/" --recursive --exclude "*" --include "*.whl"
168- aws s3 ls "s3://${NAV_PYPI_S3_BUCKET}/${S3_PREFIX}/"
169- echo "s3_prefix=${S3_PREFIX}" >> "$GITHUB_OUTPUT"
170-
171156 - name : Upload wheel artifacts
172157 uses : actions/upload-artifact@v4
173158 with :
174159 name : python-wheels
175160 path : target/wheels/*.whl
176161 retention-days : 5
177162
178- publish-python :
179- name : Publish Python
180- needs : [build-python-wheels, e2e]
181- runs-on : [self-hosted, nv]
182- timeout-minutes : 10
183- env :
184- MISE_GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
185- NAV_PYPI_S3_BUCKET : navigator-pypi-artifacts # TODO: rename bucket to openshell-pypi-artifacts
186- NAV_PYPI_REPOSITORY_URL : https://urm.nvidia.com/artifactory/api/pypi/nv-shared-pypi-local
187- NAV_PYPI_USERNAME : ${{ secrets.NAV_PYPI_USERNAME }}
188- NAV_PYPI_PASSWORD : ${{ secrets.NAV_PYPI_PASSWORD }}
189- AWS_ACCESS_KEY_ID : ${{ secrets.AWS_ACCESS_KEY_ID }}
190- AWS_SECRET_ACCESS_KEY : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
191- AWS_DEFAULT_REGION : us-west-2
192- steps :
193- - uses : actions/checkout@v4
194- with :
195- ref : ${{ inputs.tag || github.ref }}
196- fetch-depth : 0
197-
198- - uses : actions/setup-python@v5
199- with :
200- python-version : " 3.13"
201-
202- - name : Install publish dependencies
203- run : |
204- set -euo pipefail
205- python -m pip install --upgrade pip uv
206-
207- if ! command -v aws >/dev/null 2>&1; then
208- ARCH="$(uname -m)"
209- case "$ARCH" in
210- x86_64|amd64) AWSCLI_ARCH="x86_64" ;;
211- aarch64|arm64) AWSCLI_ARCH="aarch64" ;;
212- *)
213- echo "Unsupported architecture for AWS CLI installer: $ARCH" >&2
214- exit 1
215- ;;
216- esac
217-
218- rm -rf aws awscliv2.zip
219- curl --fail --silent --show-error --location \
220- "https://awscli.amazonaws.com/awscli-exe-linux-${AWSCLI_ARCH}.zip" \
221- --output awscliv2.zip
222- unzip -q awscliv2.zip
223- ./aws/install --install-dir "$HOME/.local/aws-cli" --bin-dir "$HOME/.local/bin" --update
224- echo "$HOME/.local/bin" >> "$GITHUB_PATH"
225- export PATH="$HOME/.local/bin:$PATH"
226- fi
227-
228- aws --version
229- uv --version
230-
231- - name : List and download versioned wheels from S3
232- run : |
233- set -euo pipefail
234- WHEEL_VERSION="${{ needs.build-python-wheels.outputs.wheel_version }}"
235- S3_PREFIX="${{ needs.build-python-wheels.outputs.s3_prefix }}"
236- OBJECT_COUNT=$(aws s3api list-objects-v2 --bucket "$NAV_PYPI_S3_BUCKET" --prefix "${S3_PREFIX}/" --query "length(Contents)" --output text)
237- if [ "$OBJECT_COUNT" = "None" ] || [ "$OBJECT_COUNT" = "0" ]; then
238- echo "No wheel artifacts found for ${WHEEL_VERSION} at s3://${NAV_PYPI_S3_BUCKET}/${S3_PREFIX}/" >&2
239- exit 1
240- fi
241- aws s3api list-objects-v2 --bucket "$NAV_PYPI_S3_BUCKET" --prefix "${S3_PREFIX}/" --query "Contents[].Key" --output text
242- mkdir -p target/wheels
243- aws s3 cp "s3://${NAV_PYPI_S3_BUCKET}/${S3_PREFIX}/" target/wheels/ --recursive --exclude "*" --include "*.whl"
244- ls -la target/wheels/*.whl
245-
246- - name : Publish wheels to Artifactory
247- run : |
248- set -euo pipefail
249- WHEEL_VERSION="${{ needs.build-python-wheels.outputs.wheel_version }}"
250- uv run python tasks/scripts/release.py python-publish --version "$WHEEL_VERSION"
251-
252163 # ---------------------------------------------------------------------------
253164 # Build CLI binaries (Linux musl — static, native on each arch)
254165 # ---------------------------------------------------------------------------
@@ -413,7 +324,7 @@ jobs:
413324 # ---------------------------------------------------------------------------
414325 release :
415326 name : Release
416- needs : [compute-versions, build-cli-linux, build-cli-macos, build-python-wheels, publish-python, tag-ghcr-release]
327+ needs : [compute-versions, build-cli-linux, build-cli-macos, build-python-wheels, tag-ghcr-release]
417328 runs-on : build-amd64
418329 timeout-minutes : 10
419330 steps :
0 commit comments