Skip to content

Commit

Permalink
add new workflow for two version support
Browse files Browse the repository at this point in the history
Signed-off-by: hlts2 <[email protected]>
  • Loading branch information
hlts2 committed Sep 20, 2023
1 parent d099a08 commit 8203b68
Show file tree
Hide file tree
Showing 11 changed files with 410 additions and 380 deletions.
1 change: 1 addition & 0 deletions .github/actions/detect-docker-image-tags/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ runs:
["vdaas/vald-lb-gateway"]="gateway.lb.image.tag"
["vdaas/vald-manager-index"]="manager.index.image.tag"
["vdaas/vald-helm-operator"]="image.tag"
["vdaas/vald-ci-container"]=""
)
for image in ${IMAGES}
Expand Down
16 changes: 14 additions & 2 deletions .github/actions/setup-e2e/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#
name: "Setup E2E environment"
description: "A action to set up the environment for executing E2E test"

inputs:
require_libhdf5:
description: "If libhdf5 is not required, set this to false"
Expand All @@ -39,7 +40,11 @@ inputs:
target_images:
description: "Image names"
required: false
default: "vdaas/vald-agent-ngt vdaas/vald-discoverer-k8s vdaas/vald-lb-gateway vdaas/vald-manager-index"
default: "vdaas/vald-agent-ngt \
vdaas/vald-discoverer-k8s \
vdaas/vald-lb-gateway \
vdaas/vald-manager-index"

outputs:
HELM_EXTRA_OPTIONS:
description: "Helm extra options that specifies E2E target image tags"
Expand All @@ -60,33 +65,40 @@ runs:
run: |
sudo apt-get update
sudo apt-get install -y libhdf5-dev
- name: Setup Go environment
if: ${{ inputs.require_go == 'true' }}
uses: ./.github/actions/setup-go

- name: Setup Helm environment
if: ${{ inputs.require_helm == 'true' }}
uses: ./.github/actions/setup-helm

- name: Wait for target Docker images
if: startsWith( github.ref, 'refs/tags/')
uses: ./.github/actions/wait-for-docker-image
with:
images: ${{ inputs.target_images }}

- name: Determine Docker image tag
id: determine_tag_name
uses: ./.github/actions/determine-docker-image-tag

- name: Specify container versions
id: specify_container_versions
uses: ./.github/actions/detect-docker-image-tags
with:
tag_name: ${{ steps.determine_tag_name.outputs.PRIMARY_TAG }}
images: ${{ inputs.target_images }}

- uses: ./.github/actions/setup-k3d
if: ${{ inputs.require_k3d == 'true' }}
with:
agents: 3
ingress_port: ${{ inputs.ingress_port }}
options: "--image docker.io/rancher/k3s:latest"

- name: Check Kubernetes cluster
shell: bash
run: |
kubectl cluster-info dump
kubectl cluster-info
133 changes: 133 additions & 0 deletions .github/workflows/_release-pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
#
# Copyright (C) 2019-2023 vdaas.org vald team <[email protected]>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# You may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
name: "Create release PR"
on:
workflow_call:
inputs:
release_branch_name:
type: string
description: "The release branch name. e.g release/v1.7"
required: true
release_tag:
type: string
description: "The release tag"
required: true

jobs:
dump-contexts-to-log:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/dump-context

detect-ci-container:
uses: ./.github/workflows/_detect-ci-container.yml
secrets: inherit

create:
needs:
- dump-contexts-to-log
- detect-ci-container
runs-on: ubuntu-latest
container:
image: ghcr.io/vdaas/vald/vald-ci-container:${{ needs.detect-ci-container.outputs.TAG_NAME }}
env:
RELEASE_BRANCH_NAME: ${{ inputs.release_branch_name }}
PREPARE_RELEASE_BRANCH_NAME: prepare/${{ inputs.release_branch_name }}
RELEASE_TAG: ${{ inputs.release_tag }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
token: ${{ secrets.DISPATCH_TOKEN }}

- name: Set Git config
run: |
git config --global --add safe.directory ${GITHUB_WORKSPACE}
- uses: crazy-max/ghaction-import-gpg@v4
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
git_user_signingkey: true
git_commit_gpgsign: true

- name: Update for new release
id: update_for_new_release
run: |
git checkout ${RELEASE_BRANCH_NAME}
git checkout -b ${PREPARE_RELEASE_BRANCH_NAME} && git push origin ${PREPARE_RELEASE_BRANCH_NAME}
LAST_COMMIT_MESSAGE=`git log --pretty=format:%s -1`
PR_NUM=`echo "${LAST_COMMIT_MESSAGE}" | grep -o "#[[:digit:]]\+" | sed -e 's/#//' | head -1`
PREVIOUS_VERSION=`cat versions/VALD_VERSION`
echo "${RELEASE_TAG}" > versions/VALD_VERSION
sed -i -e "s/^version: .*$/version: ${RELEASE_TAG}/" charts/vald/Chart.yaml
sed -i -r "s/^(\s*)tag\s*:\s*v[0-9]+\.[0-9]+\.[0-9]+\s*$/\1tag: ${RELEASE_TAG}/" charts/vald/values.yaml
sed -i -e "s/^version: .*$/version: ${RELEASE_TAG}/" charts/vald-helm-operator/Chart.yaml
sed -i -r "s/^(\s*)tag\s*:\s*v[0-9]+\.[0-9]+\.[0-9]+\s*$/\1tag: ${RELEASE_TAG}/" charts/vald-helm-operator/values.yaml
make helm/schema/vald
make helm/schema/vald-helm-operator
make helm/schema/crd/vald
make helm/schema/crd/vald-helm-operator
make k8s/manifest/update
make k8s/manifest/helm-operator/update
make helm/docs/vald
make helm/docs/vald-helm-operator
BODY=""
if [ ! -z "${PR_NUM}" ]; then
BODY=`curl -s -H "Authorization: Bearer ${GITHUB_TOKEN}" "https://api.github.com/repos/${GITHUB_REPOSITORY}/pulls/${PR_NUM}" | jq -r '.body'`
fi
if [ -z "$BODY" ]; then
BODY=`git log --pretty=format:'- %s' ${PREVIOUS_VERSION}..${RELEASE_BRANCH_NAME} | grep "#[[:digit:]]\+" | sed -e "s/\[\(patch\|minor\|major\)\] *//g" | sed -e "s%#\([[:digit:]]\+\)%[&](https://github.com/vdaas/vald/pull/\1)%"`
fi
CHANGELOG=`make changelog/next/print BODY="$BODY"`
make changelog/update BODY="$BODY"
make format
git add \
CHANGELOG.md \
charts/vald-helm-operator/Chart.yaml \
charts/vald-helm-operator/README.md \
charts/vald-helm-operator/values.schema.json \
charts/vald-helm-operator/values.yaml \
charts/vald/Chart.yaml \
charts/vald/README.md \
charts/vald/values.schema.json \
charts/vald/values.yaml \
k8s \
versions/VALD_VERSION
git commit -S --signoff -m ":bookmark: :robot: Release ${RELEASE_TAG}"
git push -u origin ${PREPARE_RELEASE_BRANCH_NAME}
curl --include --verbose --fail \
-H "Accept: application/json" \
-H "Content-Type:application/json" \
-H "Authorization: token ${GITHUB_TOKEN}" \
--request POST \
--data "{\"title\": \"Release ${RELEASE_TAG}\", \"head\": \"${PREPARE_RELEASE_BRANCH_NAME}\", \"base\": \"${RELEASE_BRANCH_NAME}\", \"body\": \"Release PR for ${RELEASE_TAG}.\", \"maintainer_can_modify\": true}" \
$API_URL
env:
GITHUB_USER: ${{ secrets.DISPATCH_USER }}
GITHUB_TOKEN: ${{ secrets.DISPATCH_TOKEN }}
API_URL: https://api.github.com/repos/vdaas/vald/pulls
5 changes: 5 additions & 0 deletions .github/workflows/dockers-ci-container-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ on:
- "main"
- "release/v*.*"
- "!release/v*.*.*"
tags:
- "*.*.*"
- "v*.*.*"
- "*.*.*-*"
- "v*.*.*-*"
paths:
- ".github/actions/docker-build/actions.yaml"
- ".github/workflows/_docker-image.yaml"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/dockers-release-branch-image.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
name: Build docker images when the release branch is created
name: "Build docker images when the release branch is created"
on:
push:
branches:
Expand Down
65 changes: 0 additions & 65 deletions .github/workflows/helm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,70 +29,6 @@ jobs:
- uses: actions/checkout@v3
- uses: ./.github/actions/dump-context

update-k8s-manifest:
name: Update k8s manifest
runs-on: ubuntu-latest
container:
image: ghcr.io/vdaas/vald/vald-ci-container:nightly
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Set Git config
run: |
git config --global --add safe.directory ${GITHUB_WORKSPACE}
- uses: crazy-max/ghaction-import-gpg@v4
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
git_user_signingkey: true
git_commit_gpgsign: true

- name: Setup Helm environment
uses: ./.github/actions/setup-helm

- name: Switch new branch
id: switch_to_new_branch
run: |
TIMESTAMP=$(date +%Y%m%d_%H%M%S_%3N)
BRANCH_NAME="documentation/k8s-manifests/update_k8s_manifests_${TIMESTAMP}"
git checkout main
git checkout -b ${BRANCH_NAME}
echo "BRANCH_NAME=${BRANCH_NAME}" >> $GITHUB_OUTPUT
- name: Update k8s-dir
run: |
make k8s/manifest/update
make k8s/manifest/helm-operator/update
- name: Run formatter and license.go
run: |
make format/yaml
make license
- name: Push to main
continue-on-error: true
run: |
git add k8s
git commit -S --signoff -m ":robot: Automatically update k8s manifests"
git remote set-url origin "https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git"
git push -u origin ${BRANCH_NAME}
curl --include --verbose --fail \
-H "Accept: application/json" \
-H "Content-Type:application/json" \
-H "Authorization: token ${GITHUB_TOKEN}" \
--request POST \
--data "{\"title\": \"Update K8s manifests\", \"head\": \"${BRANCH_NAME}\", \"base\": \"main\", \"body\": \"K8s manifests are updated.\", \"maintainer_can_modify\": true}" \
$API_URL
env:
GITHUB_USER: ${{ secrets.DISPATCH_USER }}
GITHUB_TOKEN: ${{ secrets.DISPATCH_TOKEN }}
API_URL: https://api.github.com/repos/vdaas/vald/pulls
BRANCH_NAME: ${{ steps.switch_to_new_branch.outputs.BRANCH_NAME }}

update-helm-chart:
name: Update Helm chart
runs-on: ubuntu-latest
Expand Down Expand Up @@ -157,7 +93,6 @@ jobs:
id: deploy_vald
uses: ./.github/actions/e2e-deploy-vald
with:
default_image_tag: ${{ steps.setup_e2e.outputs.DEFAULT_IMAGE_TAG }}
helm_extra_options: ${{ steps.setup_e2e.outputs.HELM_EXTRA_OPTIONS }}
values: .github/helm/values/values-lb.yaml
wait_for_selector: app=vald-lb-gateway
Expand Down
Loading

0 comments on commit 8203b68

Please sign in to comment.