diff --git a/.github/actions/prepare-release-env/action.yml b/.github/actions/prepare-release-env/action.yml new file mode 100644 index 00000000..8c184925 --- /dev/null +++ b/.github/actions/prepare-release-env/action.yml @@ -0,0 +1,52 @@ +name: Prepare Release Environment +description: Prepare release environment variables and repository matrix + +inputs: + github_ref: + description: GitHub reference + required: true + default: ${{ github.ref }} + +outputs: + MAJOR_RELEASE_VERSION: + description: Major release version + value: ${{ steps.env-vars.outputs.MAJOR_RELEASE_VERSION }} + RELEASE_VERSION: + description: Release version + value: ${{ steps.env-vars.outputs.RELEASE_VERSION }} + TRIMMED_RELEASE_VERSION: + description: Trimmed release version + value: ${{ steps.env-vars.outputs.TRIMMED_RELEASE_VERSION }} + MATRIX: + description: Repository matrix + value: ${{ steps.generate-matrix.outputs.matrix }} + +runs: + using: 'composite' + steps: + - name: get release version + shell: bash + run: | + echo "RELEASE_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV + env: + GITHUB_REF: ${{ inputs.github_ref }} + + - name: get major release version + shell: bash + run: | + echo "MAJOR_RELEASE_VERSION=${RELEASE_VERSION%.*}" >> $GITHUB_ENV + echo "TRIMMED_RELEASE_VERSION=${RELEASE_VERSION#v}" >> $GITHUB_ENV + + - name: set outputs + id: env-vars + shell: bash + run: | + echo "MAJOR_RELEASE_VERSION=${MAJOR_RELEASE_VERSION}" >> $GITHUB_OUTPUT + echo "RELEASE_VERSION=${RELEASE_VERSION}" >> $GITHUB_OUTPUT + echo "TRIMMED_RELEASE_VERSION=${TRIMMED_RELEASE_VERSION}" >> $GITHUB_OUTPUT + + - name: generate matrix + id: generate-matrix + uses: ./go/src/open-cluster-management.io/lab/.github/actions/generate-repo-matrix + with: + repoRoot: go/src/open-cluster-management.io/lab diff --git a/.github/workflows/chart-upload.yml b/.github/workflows/chart-upload.yml index 58c363a9..c35eb6bf 100644 --- a/.github/workflows/chart-upload.yml +++ b/.github/workflows/chart-upload.yml @@ -18,25 +18,16 @@ jobs: fetch-depth: 1 path: go/src/open-cluster-management.io/lab - - name: get release version - run: | - echo "RELEASE_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - - - name: get major release version - run: | - echo "MAJOR_RELEASE_VERSION=${RELEASE_VERSION%.*}" >> $GITHUB_ENV - echo "TRIMMED_RELEASE_VERSION=${RELEASE_VERSION#v}" >> $GITHUB_ENV - - - name: generate matrix - id: generate-matrix - uses: ./go/src/open-cluster-management.io/lab/.github/actions/generate-repo-matrix + - name: prepare release environment + id: prepare-env + uses: ./go/src/open-cluster-management.io/lab/.github/actions/prepare-release-env with: - repoRoot: go/src/open-cluster-management.io/lab + github_ref: ${{ github.ref }} outputs: - MAJOR_RELEASE_VERSION: ${{ env.MAJOR_RELEASE_VERSION }} - RELEASE_VERSION: ${{ env.RELEASE_VERSION }} - TRIMMED_RELEASE_VERSION: ${{ env.TRIMMED_RELEASE_VERSION }} - MATRIX: ${{ steps.generate-matrix.outputs.matrix }} + MAJOR_RELEASE_VERSION: ${{ steps.prepare-env.outputs.MAJOR_RELEASE_VERSION }} + RELEASE_VERSION: ${{ steps.prepare-env.outputs.RELEASE_VERSION }} + TRIMMED_RELEASE_VERSION: ${{ steps.prepare-env.outputs.TRIMMED_RELEASE_VERSION }} + MATRIX: ${{ steps.prepare-env.outputs.MATRIX }} upload: name: upload diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index acf77b7d..faace473 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,25 +29,16 @@ jobs: fetch-depth: 1 path: go/src/open-cluster-management.io/lab - - name: get release version - run: | - echo "RELEASE_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - - - name: get major release version - run: | - echo "MAJOR_RELEASE_VERSION=${RELEASE_VERSION%.*}" >> $GITHUB_ENV - echo "TRIMMED_RELEASE_VERSION=${RELEASE_VERSION#v}" >> $GITHUB_ENV - - - name: generate matrix - id: generate-matrix - uses: ./go/src/open-cluster-management.io/lab/.github/actions/generate-repo-matrix + - name: prepare release environment + id: prepare-env + uses: ./go/src/open-cluster-management.io/lab/.github/actions/prepare-release-env with: - repoRoot: go/src/open-cluster-management.io/lab + github_ref: ${{ github.ref }} outputs: - MAJOR_RELEASE_VERSION: ${{ env.MAJOR_RELEASE_VERSION }} - RELEASE_VERSION: ${{ env.RELEASE_VERSION }} - TRIMMED_RELEASE_VERSION: ${{ env.TRIMMED_RELEASE_VERSION }} - MATRIX: ${{ steps.generate-matrix.outputs.matrix }} + MAJOR_RELEASE_VERSION: ${{ steps.prepare-env.outputs.MAJOR_RELEASE_VERSION }} + RELEASE_VERSION: ${{ steps.prepare-env.outputs.RELEASE_VERSION }} + TRIMMED_RELEASE_VERSION: ${{ steps.prepare-env.outputs.TRIMMED_RELEASE_VERSION }} + MATRIX: ${{ steps.prepare-env.outputs.MATRIX }} release: name: release diff --git a/.github/workflows/releaseimage.yml b/.github/workflows/releaseimage.yml index 77da6b66..ac9be7cc 100644 --- a/.github/workflows/releaseimage.yml +++ b/.github/workflows/releaseimage.yml @@ -30,24 +30,15 @@ jobs: fetch-depth: 1 path: go/src/open-cluster-management.io/lab - - name: get release version - run: | - echo "RELEASE_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - - - name: get major release version - run: | - echo "MAJOR_RELEASE_VERSION=${RELEASE_VERSION%.*}" >> $GITHUB_ENV - echo "TRIMMED_RELEASE_VERSION=${RELEASE_VERSION#v}" >> $GITHUB_ENV - - - name: generate matrix - id: generate-matrix - uses: ./go/src/open-cluster-management.io/lab/.github/actions/generate-repo-matrix + - name: prepare release environment + id: prepare-env + uses: ./go/src/open-cluster-management.io/lab/.github/actions/prepare-release-env with: - repoRoot: go/src/open-cluster-management.io/lab + github_ref: ${{ github.ref }} outputs: - MAJOR_RELEASE_VERSION: ${{ env.MAJOR_RELEASE_VERSION }} - RELEASE_VERSION: ${{ env.RELEASE_VERSION }} - MATRIX: ${{ steps.generate-matrix.outputs.matrix }} + MAJOR_RELEASE_VERSION: ${{ steps.prepare-env.outputs.MAJOR_RELEASE_VERSION }} + RELEASE_VERSION: ${{ steps.prepare-env.outputs.RELEASE_VERSION }} + MATRIX: ${{ steps.prepare-env.outputs.MATRIX }} images: name: images @@ -62,7 +53,7 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 1 - path: go/src/open-cluster-management.io/lab + path: go/src/open-cluster-management.io/lab/${{ matrix.repository }} - name: install Go uses: actions/setup-go@v5 @@ -101,7 +92,7 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 1 - path: go/src/open-cluster-management.io/lab + path: go/src/open-cluster-management.io/lab/${{ matrix.repository }} - name: create run: | diff --git a/README.md b/README.md index 8eb2ea0b..3da7b9c5 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,10 @@ All projects must define the following `make` targets: - `check-diff`: Perform any automated formatting, Helm chart README updates, manifest generation, etc. Return a non-zero exit code if a git diff is produced. - `test-e2e`: Invoke end-to-end tests and return an exit code accordingly. - `test-unit`: Invoke unit tests and return an exit code accordingly. +- `images`: Build all container images. +- `image-push`: Push all container images. +- `image-manifest`: Create multi-architecture manifests for all images. +- `image-manifest-annotate`: Annotate multi-architecture manifests for all images. #### Dockerfiles