Skip to content

Commit

Permalink
Cherry-pick fixes and CI to release/4.1 (#215)
Browse files Browse the repository at this point in the history
* 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
3 people authored Nov 28, 2024
1 parent 689f5cd commit 7c17151
Show file tree
Hide file tree
Showing 19 changed files with 1,134 additions and 191 deletions.
131 changes: 131 additions & 0 deletions .github/workflows/branch_preparation.yml
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 }}
184 changes: 89 additions & 95 deletions .github/workflows/build.yml → .github/workflows/build_and_push.yml
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

Expand All @@ -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

Expand All @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Loading

0 comments on commit 7c17151

Please sign in to comment.