-
Notifications
You must be signed in to change notification settings - Fork 65
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Cherry-pick fixes and CI to release/4.1 (#215)
* fix(analytics): respect environment variable to disable reporting event analytics (#211) Signed-off-by: Ethan Mosbaugh <[email protected]> Signed-off-by: Niladri Halder <[email protected]> * ci: add support for incremental builds and helm charts (#204) Signed-off-by: Prateek Chandra <[email protected]> Signed-off-by: Niladri Halder <[email protected]> * ci: fix build_and_push awk command (#212) Signed-off-by: Niladri Halder <[email protected]> * ci: fix build_and_push and release workflows (#213) Signed-off-by: Niladri Halder <[email protected]> --------- Signed-off-by: Ethan Mosbaugh <[email protected]> Signed-off-by: Niladri Halder <[email protected]> Signed-off-by: Prateek Chandra <[email protected]> Co-authored-by: Ethan Mosbaugh <[email protected]> Co-authored-by: Prateek Chandra <[email protected]>
- Loading branch information
1 parent
689f5cd
commit 7c17151
Showing
19 changed files
with
1,134 additions
and
191 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,131 @@ | ||
name: Branch Preparation | ||
|
||
on: | ||
push: | ||
branches: | ||
- 'release/**' | ||
tags: | ||
- 'v[0-9]+.[0-9]+.[0-9]+**' | ||
|
||
jobs: | ||
update_release_branch_after_release: | ||
runs-on: ubuntu-latest | ||
if: ${{ github.ref_type == 'tag' }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- uses: cachix/install-nix-action@v22 | ||
- name: Pre-populate nix-shell | ||
run: | | ||
export NIX_PATH=nixpkgs=$(jq '.nixpkgs.url' nix/sources.json -r) | ||
echo "NIX_PATH=$NIX_PATH" >> $GITHUB_ENV | ||
nix-shell --pure --run "echo" ./shell.nix | ||
- name: Test the chart version updater script | ||
run: | | ||
nix-shell --pure --run "./scripts/test-update-chart-version.sh" ./shell.nix | ||
- name: Modify the chart version based on the tag | ||
run: | | ||
tag=${{ github.ref_name }} | ||
echo "BASE=$(nix-shell --pure --run "./scripts/update-chart-version.sh --tag $tag" ./shell.nix)" >> $GITHUB_ENV | ||
- name: Create Pull Request to release | ||
if: ${{ env.BASE }} | ||
id: cpr | ||
uses: peter-evans/create-pull-request@v5 | ||
with: | ||
base: ${{ env.BASE }} | ||
commit-message: "chore(ci): update helm chart versions and/or git submodules" | ||
committer: GitHub <[email protected]> | ||
author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com> | ||
title: "Prepare release branch after release ${{ github.ref_name }}" | ||
labels: | | ||
update-release-branch | ||
automated-pr | ||
draft: false | ||
signoff: true | ||
branch: "create-pull-request/patch-${{ env.BASE }}" | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
update_develop_branch_on_release_branch_creation: | ||
runs-on: ubuntu-latest | ||
if: ${{ github.ref_type == 'branch' }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
- run: | | ||
git checkout develop | ||
- uses: cachix/install-nix-action@v22 | ||
- name: Pre-populate nix-shell | ||
run: | | ||
export NIX_PATH=nixpkgs=$(jq '.nixpkgs.url' nix/sources.json -r) | ||
echo "NIX_PATH=$NIX_PATH" >> $GITHUB_ENV | ||
nix-shell --pure --run "echo" ./shell.nix | ||
- name: Test the chart version updater script | ||
run: | | ||
nix-shell --pure --run "./scripts/test-update-chart-version.sh" ./shell.nix | ||
- name: Modify the chart version based on the branch name for develop | ||
run: | | ||
branch_name=${{ github.ref_name }} | ||
nix-shell --pure --run "./scripts/update-chart-version.sh --branch $branch_name --type develop" ./shell.nix | ||
- name: Create Pull Request to develop | ||
id: cpr | ||
uses: peter-evans/create-pull-request@v5 | ||
with: | ||
base: develop | ||
commit-message: "chore(ci): update helm chart versions and/or git submodules" | ||
committer: GitHub <[email protected]> | ||
author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com> | ||
title: "Prepare develop branch on ${{ github.ref_name }} creation" | ||
labels: | | ||
update-develop-branch | ||
automated-pr | ||
draft: false | ||
signoff: true | ||
branch: "create-pull-request/patch-develop" | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
prepare_release_branch_on_creation: | ||
runs-on: ubuntu-latest | ||
if: ${{ github.ref_type == 'branch' }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- uses: cachix/install-nix-action@v22 | ||
- name: Pre-populate nix-shell | ||
run: | | ||
export NIX_PATH=nixpkgs=$(jq '.nixpkgs.url' nix/sources.json -r) | ||
echo "NIX_PATH=$NIX_PATH" >> $GITHUB_ENV | ||
nix-shell --pure --run "echo" ./shell.nix | ||
- name: Test the chart version updater script | ||
run: | | ||
nix-shell --pure --run "./scripts/test-update-chart-version.sh" ./shell.nix | ||
- name: Modify the chart version based on the branch name for release | ||
run: | | ||
branch_name=${{ github.ref_name }} | ||
nix-shell --pure --run "./scripts/update-chart-version.sh --branch $branch_name --type release" ./shell.nix | ||
- name: Create Pull Request to release | ||
id: cpr | ||
uses: peter-evans/create-pull-request@v5 | ||
with: | ||
base: ${{ github.ref_name }} | ||
commit-message: "chore(ci): update helm chart versions and/or git submodules" | ||
committer: GitHub <[email protected]> | ||
author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com> | ||
title: "Prepare ${{ github.ref_name }} branch" | ||
labels: | | ||
prepare-release-branch | ||
automated-pr | ||
draft: false | ||
signoff: true | ||
branch: "create-pull-request/patch-${{ github.ref_name }}" | ||
token: ${{ secrets.GITHUB_TOKEN }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,36 +1,46 @@ | ||
name: build | ||
name: Build and Push | ||
|
||
on: | ||
create: | ||
push: | ||
branches: | ||
- 'develop' | ||
- 'v*' | ||
- 'release/**' | ||
paths-ignore: | ||
- '**.md' | ||
- 'changelogs/**' | ||
- 'deploy/helm/**' | ||
- 'docs/**' | ||
- 'design/**' | ||
- 'LICENSE' | ||
- 'MAINTAINERS' | ||
|
||
jobs: | ||
lint: | ||
# to ignore builds on release | ||
if: ${{ (github.event.ref_type != 'tag') }} | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- uses: cachix/install-nix-action@v22 | ||
- uses: rrbutani/[email protected] | ||
with: | ||
file: shell.nix | ||
|
||
- name: Check if the chart follows a valid semver version | ||
run: | | ||
BRANCH=${{ github.ref_name }} | ||
./scripts/validate-chart-version.sh --branch $BRANCH | ||
- name: Run chart-testing lint | ||
run: | | ||
ct lint --config ct.yaml | ||
unit-test: | ||
# to ignore builds on release | ||
if: ${{ (github.event.ref_type != 'tag') }} | ||
runs-on: ubuntu-latest | ||
needs: ['lint'] | ||
steps: | ||
- name: Set up Go 1.19 | ||
uses: actions/setup-go@v4 | ||
uses: actions/setup-go@v5 | ||
with: | ||
go-version: 1.19.13 | ||
|
||
|
@@ -44,14 +54,69 @@ jobs: | |
run: make verify-src | ||
|
||
- name: Upload Coverage Report | ||
uses: codecov/codecov-action@v1 | ||
uses: codecov/codecov-action@v4 | ||
with: | ||
token: ${{ secrets.CODECOV_TOKEN }} | ||
file: ./coverage.txt | ||
name: coverage-$(date +%s) | ||
flags: unittests | ||
|
||
provisioner-localpv: | ||
integration-test: | ||
runs-on: ubuntu-latest | ||
needs: ['lint', 'unit-test'] | ||
strategy: | ||
matrix: | ||
kubernetes: [v1.27.2] | ||
steps: | ||
- name: Set up Go 1.19 | ||
uses: actions/setup-go@v4 | ||
uses: actions/setup-go@v5 | ||
with: | ||
go-version: 1.19.13 | ||
|
||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Build images locally | ||
run: make provisioner-localpv-image || exit 1; | ||
|
||
- name: Setup Minikube-Kubernetes | ||
uses: medyagh/setup-minikube@latest | ||
with: | ||
cache: false | ||
minikube-version: 1.31.1 | ||
driver: none | ||
kubernetes-version: ${{ matrix.kubernetes }} | ||
cni: calico | ||
start-args: '--install-addons=false' | ||
|
||
- name: Set up infra for integration test | ||
run: | | ||
sudo apt-get update && sudo apt-get install -y xfsprogs quota linux-modules-extra-`uname -r` | ||
go install -mod=mod github.com/onsi/ginkgo/v2/[email protected] | ||
helm install localpv-provisioner ./deploy/helm/charts -n openebs --create-namespace --set localpv.image.pullPolicy=Never --set analytics.enabled=false | ||
kubectl get pods -A | ||
- name: Integration test | ||
run: | | ||
make integration-test | ||
- name: Upload Integration Test Coverage Report | ||
uses: codecov/codecov-action@v4 | ||
with: | ||
token: ${{ secrets.CODECOV_TOKEN }} | ||
file: ./tests/integration_coverage.txt | ||
name: coverage-integration-test-$(date +%s) | ||
flags: integrationtests | ||
|
||
provisioner-localpv: | ||
runs-on: ubuntu-latest | ||
needs: ['integration-test'] | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set up Go 1.19 | ||
uses: actions/setup-go@v5 | ||
with: | ||
go-version: 1.19.13 | ||
|
||
|
@@ -63,11 +128,9 @@ jobs: | |
- name: Set CI Tag | ||
run: | | ||
BRANCH="${GITHUB_REF##*/}" | ||
CI_TAG=${BRANCH#v}-ci | ||
if [ ${BRANCH} = "develop" ]; then | ||
CI_TAG="ci" | ||
fi | ||
BRANCH=${{ github.ref_name }} | ||
echo "BRANCH=$BRANCH" >> $GITHUB_ENV | ||
CI_TAG=$(awk -F': ' '/^version:/ {print $2}' deploy/helm/charts/Chart.yaml) | ||
echo "TAG=${CI_TAG}" >> $GITHUB_ENV | ||
- name: Set Build Date | ||
|
@@ -88,8 +151,9 @@ jobs: | |
type=raw,value=latest,enable=false | ||
type=raw,value=${{ env.TAG }} | ||
- name: Print Tags | ||
- name: Print Tag info | ||
run: | | ||
echo "BRANCH: ${{ env.BRANCH }}" | ||
echo "${{ steps.docker_meta.outputs.tags }}" | ||
- name: Set up QEMU | ||
|
@@ -140,85 +204,15 @@ jobs: | |
DBUILD_DATE=${{ steps.date.outputs.DATE }} | ||
DBUILD_REPO_URL=https://github.com/openebs/dynamic-localpv-provisioner | ||
DBUILD_SITE_URL=https://openebs.io | ||
BRANCH=${{ env.BRANCH }} | ||
integration-test: | ||
release-chart: | ||
runs-on: ubuntu-latest | ||
needs: ['lint', 'unit-test'] | ||
strategy: | ||
matrix: | ||
kubernetes: [v1.27.2] | ||
needs: ['provisioner-localpv'] | ||
steps: | ||
- name: Set up Go 1.19 | ||
uses: actions/setup-go@v4 | ||
- uses: actions/checkout@v4 | ||
- name: Publish provisioner-localpv develop or prerelease helm chart | ||
uses: stefanprodan/helm-gh-pages@master | ||
with: | ||
go-version: 1.19.13 | ||
|
||
- name: Set up Docker Buildx | ||
id: buildx | ||
uses: docker/setup-buildx-action@v2 | ||
with: | ||
version: v0.5.1 | ||
|
||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Build Image | ||
uses: docker/build-push-action@v4 | ||
with: | ||
context: . | ||
file: ./buildscripts/provisioner-localpv/provisioner-localpv.Dockerfile | ||
push: false | ||
load: true | ||
platforms: linux/amd64 | ||
tags: | | ||
openebs/provisioner-localpv:ci | ||
- name: Setup Minikube-Kubernetes | ||
uses: medyagh/setup-minikube@latest | ||
with: | ||
cache: false | ||
minikube-version: 1.31.1 | ||
driver: none | ||
kubernetes-version: ${{ matrix.kubernetes }} | ||
cni: calico | ||
start-args: '--install-addons=false' | ||
|
||
- name: Set up infra for integration test | ||
run: | | ||
sudo apt-get update && sudo apt-get install -y xfsprogs quota linux-modules-extra-`uname -r` | ||
go install -mod=mod github.com/onsi/ginkgo/v2/[email protected] | ||
sed -e '/openebs-provisioner-hostpath/{N;s/IfNotPresent/Never/}' deploy/kubectl/openebs-operator-lite.yaml | kubectl apply -f - | ||
- name: Integration test | ||
run: | | ||
make integration-test | ||
localpv-e2e: | ||
# to ignore builds on release AND build only if the branch is develop | ||
if: ${{ (github.event.ref_type != 'tag') && (github.ref == 'refs/heads/develop') }} | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set Image Org | ||
# sets the default IMAGE_ORG to openebs | ||
run: | | ||
[ -z "${{ secrets.IMAGE_ORG }}" ] && IMAGE_ORG=openebs || IMAGE_ORG=${{ secrets.IMAGE_ORG}} | ||
echo "IMAGE_ORG=${IMAGE_ORG}" >> $GITHUB_ENV | ||
- name: Login to Docker Hub | ||
uses: docker/login-action@v2 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
|
||
- name: Build and push the localpv-e2e image | ||
uses: docker/build-push-action@v4 | ||
with: | ||
file: ./e2e-tests/Dockerfile | ||
push: true | ||
load: false | ||
platforms: linux/amd64 | ||
tags: | | ||
${{ env.IMAGE_ORG }}/localpv-e2e:ci | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
charts_dir: ./deploy/helm |
Oops, something went wrong.