From d82e9f7d30e6ebd1808ce7ddd29d884e369f80f7 Mon Sep 17 00:00:00 2001 From: Aliaksandr Adziareika <8034372+alexadereyko@users.noreply.github.com> Date: Wed, 7 Oct 2026 16:33:45 +0200 Subject: [PATCH 1/3] Publish stagings with the core revision The staging workflow takes an opendaq-ref input; empty, it uses the opendaq_ref file. The ref is resolved to a commit, which the core staging is found by and which the module records as dependencies/opendaq/revision in its metadata. The core staging check asks for the core by its revision. The workflows take openDAQ-CI from jira/TBBAS-3547-staging-pull-by-annotations and cmake-utils from jira/TBBAS-3548-staging-metadata-fields until the reviews land and the v3 and v1.1.2 tags are set. --- .github/workflows/check-core-staging.yml | 8 +++-- .github/workflows/ci-downstream.yml | 2 +- .github/workflows/cleanup.yml | 2 +- .github/workflows/stage.yml | 43 +++++++++++++++++------- cmake/CMakeLists.txt | 2 +- 5 files changed, 38 insertions(+), 19 deletions(-) diff --git a/.github/workflows/check-core-staging.yml b/.github/workflows/check-core-staging.yml index 7a55867..70c5586 100644 --- a/.github/workflows/check-core-staging.yml +++ b/.github/workflows/check-core-staging.yml @@ -18,18 +18,20 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: openDAQ/openDAQ-CI/.github/actions/resolve-channel@v3 + - uses: openDAQ/openDAQ-CI/.github/actions/resolve-channel@jira/TBBAS-3547-staging-pull-by-annotations id: channel - name: Read the pinned core ref shell: bash run: echo "CORE_REF=$(cat opendaq_ref)" >> "$GITHUB_ENV" - - uses: openDAQ/openDAQ-CI/.github/actions/staging-check@v3 + - uses: openDAQ/openDAQ-CI/.github/actions/staging-check@jira/TBBAS-3547-staging-pull-by-annotations env: CHANNEL: ${{ steps.channel.outputs.channel }} with: packages: >- [ - { "path": "ghcr.io/openDAQ/$CHANNEL/staging/opendaq", "tag": "$CORE_REF" } + { "packages": [ + { "path": "ghcr.io/openDAQ/$CHANNEL/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "$CORE_REF" } } + ] } ] diff --git a/.github/workflows/ci-downstream.yml b/.github/workflows/ci-downstream.yml index 6b2a436..d573698 100644 --- a/.github/workflows/ci-downstream.yml +++ b/.github/workflows/ci-downstream.yml @@ -12,7 +12,7 @@ on: jobs: call-opendaq-reusable: name: LT Streaming Modern - uses: openDAQ/openDAQ-CI/.github/workflows/reusable.yml@v3 + uses: openDAQ/openDAQ-CI/.github/workflows/reusable.yml@jira/TBBAS-3547-staging-pull-by-annotations with: opendaq-ref: ${{ github.event.inputs.opendaq-ref || '' }} include-jobs: > diff --git a/.github/workflows/cleanup.yml b/.github/workflows/cleanup.yml index f124f32..98f0a4f 100644 --- a/.github/workflows/cleanup.yml +++ b/.github/workflows/cleanup.yml @@ -15,7 +15,7 @@ jobs: name: Stagings permissions: packages: write - uses: openDAQ/openDAQ-CI/.github/workflows/staging-cleanup.yml@v3 + uses: openDAQ/openDAQ-CI/.github/workflows/staging-cleanup.yml@jira/TBBAS-3547-staging-pull-by-annotations with: dry-run: ${{ inputs.dry-run || false }} staging-retentions: >- diff --git a/.github/workflows/stage.yml b/.github/workflows/stage.yml index 86775aa..0e328ca 100644 --- a/.github/workflows/stage.yml +++ b/.github/workflows/stage.yml @@ -4,6 +4,10 @@ on: schedule: - cron: '0 2 * * 1' workflow_dispatch: + inputs: + opendaq-ref: + description: "openDAQ commit, branch or tag. If empty, uses the opendaq_ref file from the repo." + default: "" jobs: @@ -16,13 +20,25 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: openDAQ/openDAQ-CI/.github/actions/resolve-channel@v3 + - uses: openDAQ/openDAQ-CI/.github/actions/resolve-channel@jira/TBBAS-3547-staging-pull-by-annotations id: channel - - name: Read the pinned core ref + # the input, or else opendaq_ref; a branch or a tag is resolved to the commit, which is + # what the core staging is found by and what this staging records + - name: Resolve the core commit id: core shell: bash - run: echo "ref=$(cat opendaq_ref)" >> "$GITHUB_OUTPUT" + env: + REF: ${{ inputs.opendaq-ref }} + run: | + ref="${REF:-$(cat opendaq_ref)}" + sha="$ref" + if ! [[ "$ref" =~ ^[0-9a-f]{40}$ ]]; then + sha=$(git ls-remote https://github.com/openDAQ/openDAQ "$ref" "$ref^{}" | sort -k2 | tail -1 | cut -f1) + fi + [ -n "$sha" ] || { echo "::error::$ref names no openDAQ commit"; exit 1; } + echo "core: $ref -> $sha" + echo "ref=$sha" >> "$GITHUB_OUTPUT" stage: needs: resolve @@ -30,19 +46,19 @@ jobs: permissions: contents: read packages: write - uses: openDAQ/openDAQ-CI/.github/workflows/stage.yml@v3 + uses: openDAQ/openDAQ-CI/.github/workflows/stage.yml@jira/TBBAS-3547-staging-pull-by-annotations with: timeout: '[{"timeout-minutes": 180}]' staging-pull: >- [ - { "artifact": "core-windows-2022-x86_64-msvs-v143-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "tag": "${{ needs.resolve.outputs.core-ref }}", "annotations": { "com.opendaq.custom.platform": "windows", "com.opendaq.settings.arch": "x86_64" } }] }, - { "artifact": "core-windows-2022-x86-msvs-v143-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "tag": "${{ needs.resolve.outputs.core-ref }}", "annotations": { "com.opendaq.custom.platform": "windows", "com.opendaq.settings.arch": "x86" } }] }, - { "artifact": "core-manylinux_2_28-x86_64-ninja-gcc-14-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "tag": "${{ needs.resolve.outputs.core-ref }}", "annotations": { "com.opendaq.custom.platform": "manylinux_2_28", "com.opendaq.settings.arch": "x86_64" } }] }, - { "artifact": "core-manylinux_2_28-armv8-ninja-gcc-14-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "tag": "${{ needs.resolve.outputs.core-ref }}", "annotations": { "com.opendaq.custom.platform": "manylinux_2_28", "com.opendaq.settings.arch": "armv8" } }] }, - { "artifact": "core-ubuntu-22.04-x86_64-ninja-gcc-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "tag": "${{ needs.resolve.outputs.core-ref }}", "annotations": { "com.opendaq.custom.platform": "linux", "com.opendaq.settings.arch": "x86_64" } }] }, - { "artifact": "core-ubuntu-22.04-armv8-ninja-gcc-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "tag": "${{ needs.resolve.outputs.core-ref }}", "annotations": { "com.opendaq.custom.platform": "linux", "com.opendaq.settings.arch": "armv8" } }] }, - { "artifact": "core-macos-26-x86_64-ninja-appleclang-21-release","packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "tag": "${{ needs.resolve.outputs.core-ref }}", "annotations": { "com.opendaq.custom.platform": "macos", "com.opendaq.settings.arch": "x86_64" } }] }, - { "artifact": "core-macos-26-armv8-ninja-appleclang-21-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "tag": "${{ needs.resolve.outputs.core-ref }}", "annotations": { "com.opendaq.custom.platform": "macos", "com.opendaq.settings.arch": "armv8" } }] } + { "artifact": "core-windows-2022-x86_64-msvs-v143-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.core-ref }}", "com.opendaq.custom.platform": "windows", "com.opendaq.settings.arch": "x86_64" } }] }, + { "artifact": "core-windows-2022-x86-msvs-v143-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.core-ref }}", "com.opendaq.custom.platform": "windows", "com.opendaq.settings.arch": "x86" } }] }, + { "artifact": "core-manylinux_2_28-x86_64-ninja-gcc-14-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.core-ref }}", "com.opendaq.custom.platform": "manylinux_2_28", "com.opendaq.settings.arch": "x86_64" } }] }, + { "artifact": "core-manylinux_2_28-armv8-ninja-gcc-14-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.core-ref }}", "com.opendaq.custom.platform": "manylinux_2_28", "com.opendaq.settings.arch": "armv8" } }] }, + { "artifact": "core-ubuntu-22.04-x86_64-ninja-gcc-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.core-ref }}", "com.opendaq.custom.platform": "linux", "com.opendaq.settings.arch": "x86_64" } }] }, + { "artifact": "core-ubuntu-22.04-armv8-ninja-gcc-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.core-ref }}", "com.opendaq.custom.platform": "linux", "com.opendaq.settings.arch": "armv8" } }] }, + { "artifact": "core-macos-26-x86_64-ninja-appleclang-21-release","packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.core-ref }}", "com.opendaq.custom.platform": "macos", "com.opendaq.settings.arch": "x86_64" } }] }, + { "artifact": "core-macos-26-armv8-ninja-appleclang-21-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.core-ref }}", "com.opendaq.custom.platform": "macos", "com.opendaq.settings.arch": "armv8" } }] } ] include-jobs: >- [ @@ -77,7 +93,8 @@ jobs: "configure-preset": "stage", "cache-variables": { - "CMAKE_PREFIX_PATH": "${sourceDir}/staging-deps;${sourceDir}/staging-deps/opt/opendaq" + "CMAKE_PREFIX_PATH": "${sourceDir}/staging-deps;${sourceDir}/staging-deps/opt/opendaq", + "CPACK_OPENDAQ_META_FIELDS": "dependencies/opendaq/revision=${{ needs.resolve.outputs.core-ref }}" } }, { diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 5f8b1c0..141e39b 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -8,7 +8,7 @@ include(FetchContent) FetchContent_Declare( opendaq-cmake-utils GIT_REPOSITORY https://github.com/openDAQ/opendaq-cmake-utils.git - GIT_TAG v1.1.1 + GIT_TAG jira/TBBAS-3548-staging-metadata-fields GIT_PROGRESS ON ) FetchContent_MakeAvailable(opendaq-cmake-utils) From 40d6a6db6703f52d2145a7c8da01c0e4d17bd4a8 Mon Sep 17 00:00:00 2001 From: Aliaksandr Adziareika <8034372+alexadereyko@users.noreply.github.com> Date: Thu, 8 Oct 2026 13:50:33 +0200 Subject: [PATCH 2/3] Name the resolved core commit opendaq-ref The output of the resolve job and the variable of the core staging check take the name of the input and of the opendaq_ref file. --- .github/workflows/check-core-staging.yml | 4 ++-- .github/workflows/stage.yml | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/check-core-staging.yml b/.github/workflows/check-core-staging.yml index 70c5586..0a4434e 100644 --- a/.github/workflows/check-core-staging.yml +++ b/.github/workflows/check-core-staging.yml @@ -23,7 +23,7 @@ jobs: - name: Read the pinned core ref shell: bash - run: echo "CORE_REF=$(cat opendaq_ref)" >> "$GITHUB_ENV" + run: echo "OPENDAQ_REF=$(cat opendaq_ref)" >> "$GITHUB_ENV" - uses: openDAQ/openDAQ-CI/.github/actions/staging-check@jira/TBBAS-3547-staging-pull-by-annotations env: @@ -32,6 +32,6 @@ jobs: packages: >- [ { "packages": [ - { "path": "ghcr.io/openDAQ/$CHANNEL/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "$CORE_REF" } } + { "path": "ghcr.io/openDAQ/$CHANNEL/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "$OPENDAQ_REF" } } ] } ] diff --git a/.github/workflows/stage.yml b/.github/workflows/stage.yml index 0e328ca..1b466a5 100644 --- a/.github/workflows/stage.yml +++ b/.github/workflows/stage.yml @@ -15,7 +15,7 @@ jobs: name: Resolve the core commit runs-on: ubuntu-latest outputs: - core-ref: ${{ steps.core.outputs.ref }} + opendaq-ref: ${{ steps.core.outputs.ref }} channel: ${{ steps.channel.outputs.channel }} steps: - uses: actions/checkout@v4 @@ -51,14 +51,14 @@ jobs: timeout: '[{"timeout-minutes": 180}]' staging-pull: >- [ - { "artifact": "core-windows-2022-x86_64-msvs-v143-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.core-ref }}", "com.opendaq.custom.platform": "windows", "com.opendaq.settings.arch": "x86_64" } }] }, - { "artifact": "core-windows-2022-x86-msvs-v143-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.core-ref }}", "com.opendaq.custom.platform": "windows", "com.opendaq.settings.arch": "x86" } }] }, - { "artifact": "core-manylinux_2_28-x86_64-ninja-gcc-14-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.core-ref }}", "com.opendaq.custom.platform": "manylinux_2_28", "com.opendaq.settings.arch": "x86_64" } }] }, - { "artifact": "core-manylinux_2_28-armv8-ninja-gcc-14-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.core-ref }}", "com.opendaq.custom.platform": "manylinux_2_28", "com.opendaq.settings.arch": "armv8" } }] }, - { "artifact": "core-ubuntu-22.04-x86_64-ninja-gcc-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.core-ref }}", "com.opendaq.custom.platform": "linux", "com.opendaq.settings.arch": "x86_64" } }] }, - { "artifact": "core-ubuntu-22.04-armv8-ninja-gcc-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.core-ref }}", "com.opendaq.custom.platform": "linux", "com.opendaq.settings.arch": "armv8" } }] }, - { "artifact": "core-macos-26-x86_64-ninja-appleclang-21-release","packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.core-ref }}", "com.opendaq.custom.platform": "macos", "com.opendaq.settings.arch": "x86_64" } }] }, - { "artifact": "core-macos-26-armv8-ninja-appleclang-21-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.core-ref }}", "com.opendaq.custom.platform": "macos", "com.opendaq.settings.arch": "armv8" } }] } + { "artifact": "core-windows-2022-x86_64-msvs-v143-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.opendaq-ref }}", "com.opendaq.custom.platform": "windows", "com.opendaq.settings.arch": "x86_64" } }] }, + { "artifact": "core-windows-2022-x86-msvs-v143-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.opendaq-ref }}", "com.opendaq.custom.platform": "windows", "com.opendaq.settings.arch": "x86" } }] }, + { "artifact": "core-manylinux_2_28-x86_64-ninja-gcc-14-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.opendaq-ref }}", "com.opendaq.custom.platform": "manylinux_2_28", "com.opendaq.settings.arch": "x86_64" } }] }, + { "artifact": "core-manylinux_2_28-armv8-ninja-gcc-14-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.opendaq-ref }}", "com.opendaq.custom.platform": "manylinux_2_28", "com.opendaq.settings.arch": "armv8" } }] }, + { "artifact": "core-ubuntu-22.04-x86_64-ninja-gcc-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.opendaq-ref }}", "com.opendaq.custom.platform": "linux", "com.opendaq.settings.arch": "x86_64" } }] }, + { "artifact": "core-ubuntu-22.04-armv8-ninja-gcc-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.opendaq-ref }}", "com.opendaq.custom.platform": "linux", "com.opendaq.settings.arch": "armv8" } }] }, + { "artifact": "core-macos-26-x86_64-ninja-appleclang-21-release","packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.opendaq-ref }}", "com.opendaq.custom.platform": "macos", "com.opendaq.settings.arch": "x86_64" } }] }, + { "artifact": "core-macos-26-armv8-ninja-appleclang-21-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.opendaq-ref }}", "com.opendaq.custom.platform": "macos", "com.opendaq.settings.arch": "armv8" } }] } ] include-jobs: >- [ @@ -94,7 +94,7 @@ jobs: "cache-variables": { "CMAKE_PREFIX_PATH": "${sourceDir}/staging-deps;${sourceDir}/staging-deps/opt/opendaq", - "CPACK_OPENDAQ_META_FIELDS": "dependencies/opendaq/revision=${{ needs.resolve.outputs.core-ref }}" + "CPACK_OPENDAQ_META_FIELDS": "dependencies/opendaq/revision=${{ needs.resolve.outputs.opendaq-ref }}" } }, { From 4571f7b2fa8360711a6e1c50dee8a54bda5240da Mon Sep 17 00:00:00 2001 From: Aliaksandr Adziareika <8034372+alexadereyko@users.noreply.github.com> Date: Thu, 8 Oct 2026 16:00:47 +0200 Subject: [PATCH 3/3] Request the openDAQ stagings by triplet, from one table of jobs The resolve job lists each job with the triplet of the openDAQ staging it builds against, and gives the jobs, the staging-pull requests and the artifacts of the packages input from that table. A staging is asked for by its triplet, which names the compiler and its version, and the pulled artifacts are named opendaq-. --- .github/workflows/stage.yml | 75 ++++++++++++++++++++++--------------- 1 file changed, 44 insertions(+), 31 deletions(-) diff --git a/.github/workflows/stage.yml b/.github/workflows/stage.yml index 1b466a5..be7dee6 100644 --- a/.github/workflows/stage.yml +++ b/.github/workflows/stage.yml @@ -17,6 +17,9 @@ jobs: outputs: opendaq-ref: ${{ steps.core.outputs.ref }} channel: ${{ steps.channel.outputs.channel }} + jobs: ${{ steps.stagings.outputs.jobs }} + staging-pull: ${{ steps.stagings.outputs.staging-pull }} + opendaq-artifacts: ${{ steps.stagings.outputs.opendaq-artifacts }} steps: - uses: actions/checkout@v4 @@ -40,6 +43,44 @@ jobs: echo "core: $ref -> $sha" echo "ref=$sha" >> "$GITHUB_OUTPUT" + # the jobs to build, and the openDAQ staging each of them builds against + - name: Request the openDAQ stagings + id: stagings + shell: python3 {0} + env: + CHANNEL: ${{ steps.channel.outputs.channel }} + OPENDAQ_REF: ${{ steps.core.outputs.ref }} + run: | + import json, os + + # job -> the openDAQ staging it builds against, by triplet + opendaq = { + "windows-2022-x86_64-msvs-v143-release": "x86_64-windows-msvc-143-release", + "windows-2022-x86-msvs-v143-release": "x86-windows-msvc-143-release", + "manylinux_2_28-x86_64-ninja-gcc-14-release": "x86_64-manylinux_2_28-gcc-14-release", + "manylinux_2_28-armv8-ninja-gcc-14-release": "armv8-manylinux_2_28-gcc-14-release", + "ubuntu-22.04-x86_64-ninja-gcc-release": "x86_64-linux-gcc-11-release", + "ubuntu-22.04-armv8-ninja-gcc-release": "armv8-linux-gcc-11-release", + "macos-26-x86_64-ninja-appleclang-21-release": "x86_64-macos-apple-clang-21-release", + "macos-26-armv8-ninja-appleclang-21-release": "armv8-macos-apple-clang-21-release", + } + + # each staging, of the resolved commit, as an artifact of its own ... + pull = [{"artifact": f"opendaq-{triplet}", "packages": [{ + "path": f"ghcr.io/openDAQ/{os.environ['CHANNEL']}/staging/opendaq", + "annotations": {"org.opencontainers.image.revision": os.environ["OPENDAQ_REF"], + "com.opendaq.package.triplet": triplet}}]} + for triplet in opendaq.values()] + + # ... which its job unpacks into staging-deps + artifacts = [{"match-jobs": [job], "artifacts": [{"name": f"opendaq-{triplet}", "dir": "staging-deps"}]} + for job, triplet in opendaq.items()] + + with open(os.environ["GITHUB_OUTPUT"], "a") as f: + f.write(f"jobs={json.dumps(list(opendaq))}\n") + f.write(f"staging-pull={json.dumps(pull)}\n") + f.write(f"opendaq-artifacts={json.dumps(artifacts)[1:-1]}\n") # no brackets: it goes inside packages + stage: needs: resolve name: LtStreamingModulesModern @@ -49,39 +90,11 @@ jobs: uses: openDAQ/openDAQ-CI/.github/workflows/stage.yml@jira/TBBAS-3547-staging-pull-by-annotations with: timeout: '[{"timeout-minutes": 180}]' - staging-pull: >- - [ - { "artifact": "core-windows-2022-x86_64-msvs-v143-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.opendaq-ref }}", "com.opendaq.custom.platform": "windows", "com.opendaq.settings.arch": "x86_64" } }] }, - { "artifact": "core-windows-2022-x86-msvs-v143-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.opendaq-ref }}", "com.opendaq.custom.platform": "windows", "com.opendaq.settings.arch": "x86" } }] }, - { "artifact": "core-manylinux_2_28-x86_64-ninja-gcc-14-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.opendaq-ref }}", "com.opendaq.custom.platform": "manylinux_2_28", "com.opendaq.settings.arch": "x86_64" } }] }, - { "artifact": "core-manylinux_2_28-armv8-ninja-gcc-14-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.opendaq-ref }}", "com.opendaq.custom.platform": "manylinux_2_28", "com.opendaq.settings.arch": "armv8" } }] }, - { "artifact": "core-ubuntu-22.04-x86_64-ninja-gcc-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.opendaq-ref }}", "com.opendaq.custom.platform": "linux", "com.opendaq.settings.arch": "x86_64" } }] }, - { "artifact": "core-ubuntu-22.04-armv8-ninja-gcc-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.opendaq-ref }}", "com.opendaq.custom.platform": "linux", "com.opendaq.settings.arch": "armv8" } }] }, - { "artifact": "core-macos-26-x86_64-ninja-appleclang-21-release","packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.opendaq-ref }}", "com.opendaq.custom.platform": "macos", "com.opendaq.settings.arch": "x86_64" } }] }, - { "artifact": "core-macos-26-armv8-ninja-appleclang-21-release", "packages": [{ "path": "ghcr.io/openDAQ/${{ needs.resolve.outputs.channel }}/staging/opendaq", "annotations": { "org.opencontainers.image.revision": "${{ needs.resolve.outputs.opendaq-ref }}", "com.opendaq.custom.platform": "macos", "com.opendaq.settings.arch": "armv8" } }] } - ] - include-jobs: >- - [ - "windows-2022-x86_64-msvs-v143-release", - "windows-2022-x86-msvs-v143-release", - "manylinux_2_28-x86_64-ninja-gcc-14-release", - "manylinux_2_28-armv8-ninja-gcc-14-release", - "ubuntu-22.04-x86_64-ninja-gcc-release", - "ubuntu-22.04-armv8-ninja-gcc-release", - "macos-26-x86_64-ninja-appleclang-21-release", - "macos-26-armv8-ninja-appleclang-21-release" - ] + include-jobs: ${{ needs.resolve.outputs.jobs }} + staging-pull: ${{ needs.resolve.outputs.staging-pull }} packages: >- [ - { "match-jobs": ["windows-2022-x86_64-msvs-v143-release"], "artifacts": [{ "name": "core-windows-2022-x86_64-msvs-v143-release", "dir": "staging-deps" }] }, - { "match-jobs": ["windows-2022-x86-msvs-v143-release"], "artifacts": [{ "name": "core-windows-2022-x86-msvs-v143-release", "dir": "staging-deps" }] }, - { "match-jobs": ["manylinux_2_28-x86_64-ninja-gcc-14-release"], "artifacts": [{ "name": "core-manylinux_2_28-x86_64-ninja-gcc-14-release", "dir": "staging-deps" }] }, - { "match-jobs": ["manylinux_2_28-armv8-ninja-gcc-14-release"], "artifacts": [{ "name": "core-manylinux_2_28-armv8-ninja-gcc-14-release", "dir": "staging-deps" }] }, - { "match-jobs": ["ubuntu-22.04-x86_64-ninja-gcc-release"], "artifacts": [{ "name": "core-ubuntu-22.04-x86_64-ninja-gcc-release", "dir": "staging-deps" }] }, - { "match-jobs": ["ubuntu-22.04-armv8-ninja-gcc-release"], "artifacts": [{ "name": "core-ubuntu-22.04-armv8-ninja-gcc-release", "dir": "staging-deps" }] }, - { "match-jobs": ["macos-26-x86_64-ninja-appleclang-21-release"],"artifacts": [{ "name": "core-macos-26-x86_64-ninja-appleclang-21-release", "dir": "staging-deps" }] }, - { "match-jobs": ["macos-26-armv8-ninja-appleclang-21-release"], "artifacts": [{ "name": "core-macos-26-armv8-ninja-appleclang-21-release", "dir": "staging-deps" }] }, - + ${{ needs.resolve.outputs.opendaq-artifacts }}, { "match-jobs": ["ubuntu-*"], "apt-install": ["libssl-dev"] }, { "match-jobs": ["manylinux*"], "yum-install": ["openssl-devel"] }, { "match-jobs": ["windows-*-x86-*"], "run": "vcpkg install openssl:x86-windows; Add-Content -Path $env:GITHUB_PATH -Value C:\\vcpkg\\installed\\x86-windows\\bin -Encoding utf8" }