Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test chart version #2

Merged
merged 2 commits into from
Mar 6, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
148 changes: 46 additions & 102 deletions .github/workflows/go-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ env:
GOPATH: '/home/runner/work/managed-serviceaccount/managed-serviceaccount/go'
GITHUB_REF: ${{ github.ref }}
CHART_NAME: managed-serviceaccount
CHART_VERSION_FILE_PATH: ../charts/managed-serviceaccount/Chart.yaml

defaults:
run:
Expand All @@ -32,117 +33,60 @@ jobs:
- name: get major release version
run: |
echo "MAJOR_RELEASE_VERSION=${RELEASE_VERSION%.*}" >> $GITHUB_ENV
echo "TRIMED_RELEASE_VERSION=${RELEASE_VERSION#v}" >> $GITHUB_ENV
echo "TRIMMED_RELEASE_VERSION=${RELEASE_VERSION#v}" >> $GITHUB_ENV
outputs:
MAJOR_RELEASE_VERSION: ${{ env.MAJOR_RELEASE_VERSION }}
RELEASE_VERSION: ${{ env.RELEASE_VERSION }}
TRIMED_RELEASE_VERSION: ${{ env.TRIMED_RELEASE_VERSION }}
images:
name: images
TRIMMED_RELEASE_VERSION: ${{ env.TRIMMED_RELEASE_VERSION }}
increase-chart-version:
runs-on: ubuntu-latest
needs: [ env ]
strategy:
matrix:
arch: [ amd64, arm64 ]
steps:
- name: checkout code
- name: checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 1
path: go/src/open-cluster-management.io/managed-serviceaccount
- name: install Go
uses: actions/setup-go@v2
with:
go-version: ${{ env.GO_VERSION }}
- name: install imagebuilder
run: go install github.com/openshift/imagebuilder/cmd/[email protected]
- name: pull base image
run: docker pull registry.access.redhat.com/ubi8/ubi-minimal:latest --platform=linux/${{ matrix.arch }}
- name: images
run: |
IMAGE_TAG=${{ needs.env.outputs.RELEASE_VERSION }}-${{ matrix.arch }} \
IMAGE_BUILD_EXTRA_FLAGS="--build-arg OS=linux --build-arg ARCH=${{ matrix.arch }}" \
make images
- name: push
run: |
echo ${{ secrets.DOCKER_PASSWORD }} | docker login quay.io --username ${{ secrets.DOCKER_USER }} --password-stdin
docker push quay.io/open-cluster-management/managed-serviceaccount:${{ needs.env.outputs.RELEASE_VERSION }}-${{ matrix.arch }}
image-manifest:
name: image manifest
runs-on: ubuntu-latest
needs: [ env, images ]
steps:
- name: checkout code
uses: actions/checkout@v2
with:
fetch-depth: 1
path: go/src/open-cluster-management.io/managed-serviceaccount
- name: create

- name: calculate next version
id: calculate_next_version
run: |
echo ${{ secrets.DOCKER_PASSWORD }} | docker login quay.io --username ${{ secrets.DOCKER_USER }} --password-stdin
docker manifest create quay.io/open-cluster-management/managed-serviceaccount:${{ needs.env.outputs.RELEASE_VERSION }} \
quay.io/open-cluster-management/managed-serviceaccount:${{ needs.env.outputs.RELEASE_VERSION }}-amd64 \
quay.io/open-cluster-management/managed-serviceaccount:${{ needs.env.outputs.RELEASE_VERSION }}-arm64
- name: annotate
CURRENT_VERSION = "${{ needs.env.outputs.TRIMMED_RELEASE_VERSION }}"
echo "Current version: $CURRENT_VERSION"
# Extract the major and minor version components
MAJOR=$(echo $CURRENT_VERSION | cut -d '.' -f 1)
MINOR=$(echo $CURRENT_VERSION | cut -d '.' -f 2)
# Increment the minor version
NEXT_MINOR=$((MINOR + 1))
# Construct the next version
NEXT_VERSION="$MAJOR.$NEXT_MINOR.0"
echo "::set-output name=next_version::$NEXT_VERSION"

- name: check if pull request already exists
id: check_pull_request
run: |
docker manifest annotate quay.io/open-cluster-management/managed-serviceaccount:${{ needs.env.outputs.RELEASE_VERSION }} \
quay.io/open-cluster-management/managed-serviceaccount:${{ needs.env.outputs.RELEASE_VERSION }}-amd64 --arch amd64
docker manifest annotate quay.io/open-cluster-management/managed-serviceaccount:${{ needs.env.outputs.RELEASE_VERSION }} \
quay.io/open-cluster-management/managed-serviceaccount:${{ needs.env.outputs.RELEASE_VERSION }}-arm64 --arch arm64
- name: push
PR_EXIST=$(gh pr list --state open --base "update-chart-version-${{ steps.calculate_next_version.outputs.next_version }}" | grep "Update version to ${{ steps.calculate_next_version.outputs.next_version }}")
if [ -n "$PR_EXIST" ]; then
echo "Pull request already exists for version ${{ steps.calculate_next_version.outputs.next_version }}. Exiting."
echo "::set-output name=pr_exists::true"
else
echo "No existing pull request found for version ${{ steps.calculate_next_version.outputs.next_version }}. Proceeding with creating a new one."
fi

- name: update chart version file
run: |
docker manifest push quay.io/open-cluster-management/managed-serviceaccount:${{ needs.env.outputs.RELEASE_VERSION }}
release:
name: release
runs-on: ubuntu-latest
needs: [ env, image-manifest ]
steps:
- name: checkout code
uses: actions/checkout@v2
# NEXT_VERSION=$INPUT_NEXT_VERSION
sed -i "s/version: $CURRENT_VERSION/version: $NEXT_VERSION/" VERSION_FILE_PATH

- name: create pull request
if: steps.check_pull_request.outputs.pr_exists != 'true'
uses: peter-evans/create-pull-request@v3
with:
fetch-depth: 1
path: go/src/open-cluster-management.io/managed-serviceaccount
- name: setup helm
uses: azure/setup-helm@v1
- name: chart package
run: |
mkdir -p release
pushd release
helm package ../charts/${{ env.CHART_NAME }}/
popd
- name: generate changelog
run: |
echo "# Managed ServiceAccount ${{ needs.env.outputs.RELEASE_VERSION }}" > /home/runner/work/changelog.txt
- name: publish release
uses: softprops/action-gh-release@v1
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: |
Update chart version to ${{ steps.calculate_next_version.outputs.next_version }}

Signed-off-by: "$GITHUB_ACTOR" "[email protected]"
title: "Update chart version to ${{ steps.calculate_next_version.outputs.next_version }}"
body: "Automatically updating version to ${{ steps.calculate_next_version.outputs.next_version }}"
branch: update-chart-version-${{ steps.calculate_next_version.outputs.next_version }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
body_path: /home/runner/work/changelog.txt
files: |
go/src/open-cluster-management.io/managed-serviceaccount/release/*.tgz
draft: true
prerelease: false
generate_release_notes: true
- name: submit charts to OCM chart repo
uses: actions/github-script@v6
with:
github-token: ${{ secrets.OCM_BOT_PAT }}
script: |
try {
const result = await github.rest.actions.createWorkflowDispatch({
owner: 'open-cluster-management-io',
repo: 'helm-charts',
workflow_id: 'download-chart.yml',
ref: 'main',
inputs: {
repo: "${{ github.repository }}",
version: "${{ needs.env.outputs.TRIMED_RELEASE_VERSION }}",
"chart-name": "${{ env.CHART_NAME }}",
},
})
console.log(result);
} catch(error) {
console.error(error);
core.setFailed(error);
}
CURRENT_VERSION: ${{ needs.env.outputs.TRIMMED_RELEASE_VERSION }}
NEXT_VERSION: ${{ steps.calculate_next_version.outputs.next_version }}
Loading