Skip to content

Publish Smoke

Publish Smoke #232

Workflow file for this run

name: Publish Smoke
# Observational smoke must live in a separate workflow. A reusable-workflow call
# job cannot be marked continue-on-error, so keeping smoke inside publish.yml
# turns flaky desktop assertions into a red publish pipeline.
on:
workflow_run:
workflows: ["Publish Bluefin dakota"]
types: [completed]
branches:
- main
- 'gh-readonly-queue/main/**'
- next
- 'gh-readonly-queue/next/**'
- testing
- 'gh-readonly-queue/testing/**'
permissions:
contents: read
packages: write
jobs:
wait-for-images:
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-24.04
permissions:
packages: read
steps:
- name: Wait for immutable image tags
env:
GH_ACTOR: ${{ github.actor }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BUILD_SHA: ${{ github.event.workflow_run.head_sha }}
run: |
set -euo pipefail
for image in dakota dakota-nvidia; do
for attempt in $(seq 1 12); do
if skopeo inspect --no-tags \
--creds "$GH_ACTOR:$GH_TOKEN" \
"docker://ghcr.io/${GITHUB_REPOSITORY_OWNER}/${image}:${BUILD_SHA}" \
> /dev/null 2>&1; then
echo "Verified ${image}:${BUILD_SHA} is readable (attempt ${attempt})"
break
fi
if [ "$attempt" -eq 12 ]; then
echo "ERROR: ${image}:${BUILD_SHA} is unavailable after publish"
exit 1
fi
echo "Waiting for ${image}:${BUILD_SHA} (attempt ${attempt}/12)..."
sleep 10
done
done
smoke:
needs: wait-for-images
if: github.event.workflow_run.conclusion == 'success'
strategy:
fail-fast: false
matrix:
include:
- image: dakota
- image: dakota-nvidia
uses: ./.github/workflows/run-testsuite.yml
with:
image: ghcr.io/${{ github.repository_owner }}/${{ matrix.image }}:${{ github.event.workflow_run.head_sha }}
suites: smoke
secrets: inherit