Nightly build/publish latest docker images #397
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Copyright (C) 2024 Intel Corporation | |
| # SPDX-License-Identifier: Apache-2.0 | |
| name: Nightly build/publish latest docker images | |
| permissions: | |
| actions: read | |
| contents: read | |
| checks: read | |
| deployments: read | |
| discussions: read | |
| issues: read | |
| packages: read | |
| pages: read | |
| pull-requests: read | |
| repository-projects: read | |
| statuses: read | |
| security-events: read | |
| id-token: write | |
| attestations: read | |
| models: read | |
| on: | |
| schedule: | |
| - cron: "30 14 * * 1-5" # UTC time | |
| workflow_dispatch: | |
| env: | |
| EXAMPLES: ${{ vars.NIGHTLY_RELEASE_EXAMPLES }} | |
| TAG: "latest" | |
| PUBLISH_TAGS: "latest" | |
| jobs: | |
| get-build-matrix: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| examples_json: ${{ steps.get-matrix.outputs.examples_json }} | |
| EXAMPLES: ${{ steps.get-matrix.outputs.EXAMPLES }} | |
| TAG: ${{ steps.get-matrix.outputs.TAG }} | |
| PUBLISH_TAGS: ${{ steps.get-matrix.outputs.PUBLISH_TAGS }} | |
| steps: | |
| - name: Create Matrix | |
| id: get-matrix | |
| run: | | |
| examples=($(echo ${EXAMPLES} | tr ',' ' ')) | |
| examples_json=$(printf '%s\n' "${examples[@]}" | sort -u | jq -R '.' | jq -sc '.') | |
| echo "examples_json=$examples_json" >> $GITHUB_OUTPUT | |
| echo "EXAMPLES=$EXAMPLES" >> $GITHUB_OUTPUT | |
| echo "TAG=$TAG" >> $GITHUB_OUTPUT | |
| echo "PUBLISH_TAGS=$PUBLISH_TAGS" >> $GITHUB_OUTPUT | |
| build-comps-base: | |
| permissions: | |
| attestations: read | |
| models: read | |
| security-events: read | |
| needs: [get-build-matrix] | |
| uses: ./.github/workflows/_build_comps_base_image.yml | |
| with: | |
| node: gaudi | |
| build-images: | |
| permissions: | |
| actions: read | |
| contents: read | |
| checks: read | |
| deployments: read | |
| discussions: read | |
| issues: read | |
| packages: read | |
| pages: read | |
| pull-requests: read | |
| repository-projects: read | |
| statuses: read | |
| security-events: read | |
| id-token: write | |
| attestations: read | |
| models: read | |
| needs: [get-build-matrix, build-comps-base] | |
| strategy: | |
| matrix: | |
| example: ${{ fromJSON(needs.get-build-matrix.outputs.examples_json) }} | |
| fail-fast: false | |
| uses: ./.github/workflows/_build_image.yml | |
| with: | |
| node: gaudi | |
| example: ${{ matrix.example }} | |
| inject_commit: true | |
| secrets: inherit | |
| test-example: | |
| needs: [get-build-matrix] | |
| permissions: | |
| actions: read | |
| attestations: read | |
| discussions: read | |
| models: read | |
| checks: read | |
| repository-projects: read | |
| id-token: write | |
| contents: read | |
| issues: write | |
| pages: write | |
| pull-requests: write | |
| security-events: read | |
| if: ${{ needs.get-build-matrix.outputs.examples_json != '' }} | |
| strategy: | |
| matrix: | |
| example: ${{ fromJSON(needs.get-build-matrix.outputs.examples_json) }} | |
| fail-fast: false | |
| uses: ./.github/workflows/_example-workflow.yml | |
| with: | |
| node: xeon | |
| build: false | |
| example: ${{ matrix.example }} | |
| test_compose: true | |
| inject_commit: true | |
| secrets: inherit | |
| get-image-list: | |
| needs: [get-build-matrix] | |
| permissions: | |
| contents: read | |
| uses: ./.github/workflows/_get-image-list.yml | |
| with: | |
| examples: ${{ needs.get-build-matrix.outputs.EXAMPLES }} | |
| publish: | |
| needs: [get-build-matrix, get-image-list, build-images] | |
| if: always() | |
| strategy: | |
| matrix: | |
| image: ${{ fromJSON(needs.get-image-list.outputs.matrix) }} | |
| fail-fast: false | |
| runs-on: "docker-build-gaudi" | |
| steps: | |
| - uses: docker/[email protected] | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USER }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| - name: Image Publish | |
| uses: opea-project/validation/actions/image-publish@main | |
| with: | |
| local_image_ref: ${OPEA_IMAGE_REPO}opea/${{ matrix.image }}:${{ needs.get-build-matrix.outputs.TAG }} | |
| image_name: opea/${{ matrix.image }} | |
| publish_tags: ${{ needs.get-build-matrix.outputs.PUBLISH_TAGS }} |