Skip to content

ci: add support for incremental builds and helm charts #498

ci: add support for incremental builds and helm charts

ci: add support for incremental builds and helm charts #498

Workflow file for this run

name: ci
on:
pull_request:
branches:
# on pull requests to develop and release branches
- 'develop'
- 'release/**'
paths-ignore:
- '**.md'
- 'changelogs/**'
#- 'deploy/helm/**'
- 'docs/**'
- 'design/**'
- 'LICENSE'
- 'MAINTAINERS'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Shellcheck
uses: reviewdog/action-shellcheck@v1
with:
github_token: ${{ secrets.github_token }}
reporter: github-pr-review
path: "."
pattern: "*.sh"
- uses: cachix/install-nix-action@v22
- uses: rrbutani/[email protected]
with:
file: shell.nix
- name: Set up Go 1.19
uses: actions/setup-go@v5
with:
go-version: 1.19.13
cache: false
# - name: Lint Check
# uses: golangci/golangci-lint-action@v4
# with:
# version: v1.56.2
# args: -E exportloopref,dupl,revive,bodyclose,goconst,misspell -D structcheck --timeout 5m0s
- name: Check if the chart follows a valid semver version
run: |
branch_name="${{ github.event.pull_request.base.ref }}"
./scripts/validate-chart-version.sh --branch $branch_name
- name: Run chart-testing lint
run: |
ct lint --config ct.yaml
unit-test:
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.19
uses: actions/setup-go@v5
with:
go-version: 1.19.13
- name: Checkout
uses: actions/checkout@v4
- name: Unit test
run: make test
- name: Verify corrections
run: make verify-src
- name: Upload Coverage Report
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./coverage.txt
name: coverage-$(date +%s)
flags: unittests
provisioner-localpv:
runs-on: ubuntu-latest
needs: ['lint', 'unit-test']
steps:
- name: Set up Go 1.19
uses: actions/setup-go@v5
with:
go-version: 1.19.13
- name: Setup QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: all
- 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 multi-arch Image
uses: docker/build-push-action@v4
with:
context: .
file: ./buildscripts/provisioner-localpv/provisioner-localpv.Dockerfile
push: false
load: false
platforms: linux/amd64, linux/arm64, linux/arm/v7, linux/ppc64le
tags: |
openebs/provisioner-localpv:ci
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@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: |
OPENEBS_NAMESPACE="openebs"
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_NAMESPACE --create-namespace --set localpv.image.pullPolicy=Never --set analytics.enabled=false
kubectl get pods -A
- name: Integration test
run: |
make integration-test