name: GoRelease permissions: contents: read on: push: tags: - 'v*.*.*' env: GITHUB_REF: ${{ github.ref }} defaults: run: working-directory: go/src/open-cluster-management.io/ocm jobs: env: name: prepare release env runs-on: ubuntu-latest steps: - name: checkout code uses: actions/checkout@v6.0.2 with: fetch-depth: 1 path: go/src/open-cluster-management.io/ocm - 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 outputs: MAJOR_RELEASE_VERSION: ${{ env.MAJOR_RELEASE_VERSION }} RELEASE_VERSION: ${{ env.RELEASE_VERSION }} TRIMMED_RELEASE_VERSION: ${{ env.TRIMMED_RELEASE_VERSION }} release: name: release runs-on: ubuntu-latest needs: [ env ] permissions: contents: write id-token: write attestations: write steps: - name: checkout code uses: actions/checkout@v6.0.2 with: fetch-depth: 1 path: go/src/open-cluster-management.io/ocm - name: set up Python 3.x uses: actions/setup-python@v6 with: # Semantic version range syntax or exact version of a Python version python-version: '3.x' - name: install dependencies run: | python -m pip install --upgrade pip pip install PyGithub - name: generate changelog run: | python hack/changelog.py ${{ secrets.GITHUB_TOKEN }} ${{ needs.env.outputs.RELEASE_VERSION }} > /home/runner/work/changelog.txt cat /home/runner/work/changelog.txt - name: setup helm uses: azure/setup-helm@v5 - name: chart package if: github.event_name != 'pull_request' run: | mkdir -p release pushd release helm package ../deploy/cluster-manager/chart/cluster-manager --app-version ${{ needs.env.outputs.RELEASE_VERSION }} --version ${{ needs.env.outputs.TRIMMED_RELEASE_VERSION }} helm package ../deploy/klusterlet/chart/klusterlet --app-version ${{ needs.env.outputs.RELEASE_VERSION }} --version ${{ needs.env.outputs.TRIMMED_RELEASE_VERSION }} popd - name: publish release if: github.event_name != 'pull_request' uses: softprops/action-gh-release@v3 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: body_path: /home/runner/work/changelog.txt draft: true generate_release_notes: true files: | /home/runner/work/ocm/ocm/go/src/open-cluster-management.io/ocm/release/*.tgz - name: generate helm charts attestation uses: actions/attest-build-provenance@v4 with: subject-path: '/home/runner/work/ocm/ocm/go/src/open-cluster-management.io/ocm/release/*.tgz'