diff --git a/.github/workflows/release-amd64.yaml b/.github/workflows/release-amd64.yaml index c197da0b56..97ae890e0d 100644 --- a/.github/workflows/release-amd64.yaml +++ b/.github/workflows/release-amd64.yaml @@ -41,8 +41,12 @@ jobs: # We need to do such trick here as the format of the $GITHUB_REF # is "refs/tags/" tag=$(echo $GITHUB_REF | cut -d/ -f3-) - tags=($tag) - tags+=($([[ "$tag" =~ "alpha"|"rc" ]] && echo "latest" || echo "stable")) + if [ "${tag}" = "main" ]; then + tag=$(./tools/packaging/release/release.sh next-release-version) + tags=(${tag} "latest") + else + tags=(${tag}) + fi for tag in ${tags[@]}; do ./tools/packaging/kata-deploy/local-build/kata-deploy-build-and-upload-payload.sh \ $(pwd)/kata-static.tar.xz "docker.io/katadocker/kata-deploy" \ diff --git a/.github/workflows/release-arm64.yaml b/.github/workflows/release-arm64.yaml index fd2c9065ee..c6d663407f 100644 --- a/.github/workflows/release-arm64.yaml +++ b/.github/workflows/release-arm64.yaml @@ -41,8 +41,12 @@ jobs: # We need to do such trick here as the format of the $GITHUB_REF # is "refs/tags/" tag=$(echo $GITHUB_REF | cut -d/ -f3-) - tags=($tag) - tags+=($([[ "$tag" =~ "alpha"|"rc" ]] && echo "latest" || echo "stable")) + if [ "${tag}" = "main" ]; then + tag=$(./tools/packaging/release/release.sh next-release-version) + tags=(${tag} "latest") + else + tags=(${tag}) + fi for tag in ${tags[@]}; do ./tools/packaging/kata-deploy/local-build/kata-deploy-build-and-upload-payload.sh \ $(pwd)/kata-static.tar.xz "docker.io/katadocker/kata-deploy" \ diff --git a/.github/workflows/release-ppc64le.yaml b/.github/workflows/release-ppc64le.yaml index bcdbb39deb..68e7ac19ce 100644 --- a/.github/workflows/release-ppc64le.yaml +++ b/.github/workflows/release-ppc64le.yaml @@ -41,8 +41,12 @@ jobs: # We need to do such trick here as the format of the $GITHUB_REF # is "refs/tags/" tag=$(echo $GITHUB_REF | cut -d/ -f3-) - tags=($tag) - tags+=($([[ "$tag" =~ "alpha"|"rc" ]] && echo "latest" || echo "stable")) + if [ "${tag}" = "main" ]; then + tag=$(./tools/packaging/release/release.sh next-release-version) + tags=(${tag} "latest") + else + tags=(${tag}) + fi for tag in ${tags[@]}; do ./tools/packaging/kata-deploy/local-build/kata-deploy-build-and-upload-payload.sh \ $(pwd)/kata-static.tar.xz "docker.io/katadocker/kata-deploy" \ diff --git a/.github/workflows/release-s390x.yaml b/.github/workflows/release-s390x.yaml index e81ae2392c..be3a46fc59 100644 --- a/.github/workflows/release-s390x.yaml +++ b/.github/workflows/release-s390x.yaml @@ -42,8 +42,12 @@ jobs: # We need to do such trick here as the format of the $GITHUB_REF # is "refs/tags/" tag=$(echo $GITHUB_REF | cut -d/ -f3-) - tags=($tag) - tags+=($([[ "$tag" =~ "alpha"|"rc" ]] && echo "latest" || echo "stable")) + if [ "${tag}" = "main" ]; then + tag=$(./tools/packaging/release/release.sh next-release-version) + tags=(${tag} "latest") + else + tags=(${tag}) + fi for tag in ${tags[@]}; do ./tools/packaging/kata-deploy/local-build/kata-deploy-build-and-upload-payload.sh \ $(pwd)/kata-static.tar.xz "docker.io/katadocker/kata-deploy" \ diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index e54c356f2b..b0e5305b89 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -6,6 +6,9 @@ on: required: true type: string +env: + RELEASE_TYPE: ${{ inputs.release-type }} + jobs: release: runs-on: ubuntu-latest @@ -19,8 +22,6 @@ jobs: run: | release_version=$(./tools/packaging/release/release.sh next-release-version) echo "RELEASE_VERSION=$release_version" >> "$GITHUB_ENV" - env: - RELEASE_TYPE: ${{ inputs.release-type }} - name: Update VERSION file run: | @@ -33,24 +34,28 @@ jobs: GH_TOKEN: ${{ github.token }} build-and-push-assets-amd64: + needs: release uses: ./.github/workflows/release-amd64.yaml with: target-arch: amd64 secrets: inherit build-and-push-assets-arm64: + needs: release uses: ./.github/workflows/release-arm64.yaml with: target-arch: arm64 secrets: inherit build-and-push-assets-s390x: + needs: release uses: ./.github/workflows/release-s390x.yaml with: target-arch: s390x secrets: inherit build-and-push-assets-ppc64le: + needs: release uses: ./.github/workflows/release-ppc64le.yaml with: target-arch: ppc64le @@ -76,17 +81,19 @@ jobs: username: ${{ secrets.QUAY_DEPLOYER_USERNAME }} password: ${{ secrets.QUAY_DEPLOYER_PASSWORD }} + - name: Get the image tags + run: | + release_version=$(./tools/packaging/release/release.sh next-release-version) + echo "KATA_DEPLOY_IMAGE_TAGS=$release_version latest" >> "$GITHUB_ENV" + - name: Push multi-arch manifest run: | - tags="$(cat VERSION) latest" - echo "KATA_DEPLOY_IMAGE_TAGS=\"${tags}\"" >> "$GITHUB_ENV" - ./tools/packaging/release/release.sh publish-multiarch-manifest env: KATA_DEPLOY_REGISTRIES: "quay.io/kata-containers/kata-deploy docker.io/katadocker/kata-deploy" upload-multi-arch-static-tarball: - needs: publish-multi-arch-images + needs: [build-and-push-assets-amd64, build-and-push-assets-arm64, build-and-push-assets-s390x, build-and-push-assets-ppc64le] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -116,7 +123,7 @@ jobs: ./tools/packaging/release/release.sh upload-kata-static-tarball env: GH_TOKEN: ${{ github.token }} - ARCHITECTURE: arm4 + ARCHITECTURE: arm64 - name: download-artifacts-s390x uses: actions/download-artifact@v3 @@ -141,6 +148,7 @@ jobs: ARCHITECTURE: ppc64le upload-versions-yaml: + needs: release runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -151,7 +159,7 @@ jobs: GH_TOKEN: ${{ github.token }} upload-cargo-vendored-tarball: - needs: upload-multi-arch-static-tarball + needs: release runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -162,7 +170,7 @@ jobs: GH_TOKEN: ${{ github.token }} upload-libseccomp-tarball: - needs: upload-cargo-vendored-tarball + needs: release runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/docs/Release-Process.md b/docs/Release-Process.md index 3d9c34c3ac..53a89a1d67 100644 --- a/docs/Release-Process.md +++ b/docs/Release-Process.md @@ -10,8 +10,10 @@ This document lists the tasks required to create a Kata Release. ### Check GitHub Actions We make use of [GitHub actions](https://github.com/features/actions) in the -[minor](../.github/workflows/release-minor.yaml) and -[major](../.github/workflows/release-major.yaml) files from the +[minor](https://github.com/kata-containers/kata-containers/actions/workflows/release-minor.yaml) +and +[major](https://github.com/kata-containers/kata-containers/actions/workflows/release-major.yaml) +files from the `kata-containers/kata-containers` repository to build and upload release artifacts. diff --git a/tools/packaging/release/release-notes.sh b/tools/packaging/release/release-notes.sh deleted file mode 100755 index 078fd53980..0000000000 --- a/tools/packaging/release/release-notes.sh +++ /dev/null @@ -1,224 +0,0 @@ -#!/usr/bin/env bash -# Copyright (c) 2018 Intel Corporation -# -# SPDX-License-Identifier: Apache-2.0 -# - -[ -z "${DEBUG}" ] || set -x -set -o errexit -set -o nounset -set -o pipefail - -script_dir=$(dirname "$0") - -readonly script_name="$(basename "${BASH_SOURCE[0]}")" -readonly script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -readonly project="kata-containers" -readonly tmp_dir=$(mktemp -d -t release-notes-tmp.XXXXXXXXXX) - -# shellcheck source=../scripts/lib.sh -source "${script_dir}/../scripts/lib.sh" - -exit_handler() { - [ -d "${tmp_dir}" ] || rm -rf "${tmp_dir}" -} -trap exit_handler EXIT - -usage() { - return_code=${1:-} - cat < - -Args: - -previous-release: will be used as start point to get release notes -new-release: new release version that will have the - -Example: -./${script_name} 1.2.0 1.2.1 > notes.md - -EOF - exit "${return_code}" -} - -repos=( - "kata-containers" -) - -get_release_info() { - - docker_version=$(get_from_kata_deps "externals.docker.version") - crio_version=$(get_from_kata_deps "externals.crio.version") - containerd_version=$(get_from_kata_deps "externals.containerd.version") - kubernetes_version=$(get_from_kata_deps "externals.kubernetes.version") - oci_spec_version=$(get_from_kata_deps "specs.oci.version") - - libseccomp_version=$(get_from_kata_deps "externals.libseccomp.version") - libseccomp_url=$(get_from_kata_deps "externals.libseccomp.url") - - #Image information - image_info=$(get_from_kata_deps "assets.image") - - # Initrd information - initrd_info=$(get_from_kata_deps "assets.initrd") - - kernel_version=$(get_from_kata_deps "assets.kernel.version") - kernel_url=$(get_from_kata_deps "assets.kernel.url") - - kata_kernel_config_version="${new_release}-kernel-config" - kata_kernel_config_version="${new_release}-kernel-config" - - runtime_version=${new_release} -} - -changes() { - echo "**FIXME - message this section by hand to produce a summary please**" - - echo "### Shortlog" - - echo "
" - echo "Click the icon to show the list of commits included in this release" - - # XXX: Essential to have at least one blank line here. It forces - # GitHub to show each commit on a separate line. - echo - - for cr in $(git log --merges "${previous_release}".."${new_release}" | grep 'Merge:' | awk '{print $2".."$3}'); do - git log --oneline "$cr" - done - - echo "
" -} - -print_release_notes() { - cat <>/dev/null - - cat <>/dev/null - rm -rf "${tmp_dir}/${repo}" - done - - cat <&2 _die "Invalid environment variable \"${1}\"" ;; @@ -41,6 +46,8 @@ function _check_required_env_var() [ -z "${env_var}" ] && \ _die "\"${1}\" environment variable is required but was not set" + + return 0 } function _next_release_version() @@ -76,7 +83,7 @@ function _next_release_version() esac next_release_number="${next_major}.${next_minor}.0" - echo "test-${next_release_number}" + echo "${next_release_number}" } function _update_version_file() @@ -93,12 +100,91 @@ function _update_version_file() git push } +function _create_our_own_notes() +{ + GOPATH=${HOME}/go ./ci/install_yq.sh + export PATH=${HOME}/go/bin:${PATH} + + source "${repo_root_dir}/tools/packaging/scripts/lib.sh" + libseccomp_version=$(get_from_kata_deps "externals.libseccomp.version") + libseccomp_url=$(get_from_kata_deps "externals.libseccomp.url") + + cat >> /tmp/our_notes_${RELEASE_VERSION} <