Skip to content

ci: enhance pull_request workflow #510

ci: enhance pull_request workflow

ci: enhance pull_request workflow #510

Workflow file for this run

name: Pull Request CI
on:
pull_request:
paths-ignore:
- 'docs/**'
- 'design/**'
- 'changelogs/**'
- '*.md'
- 'MAINTAINERS'
branches:
- develop
- 'release/[0-9]+.[0-9]+'
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
- name: Check if the chart follows a valid semver version
run: |
export NIX_PATH=nixpkgs=$(jq '.nixpkgs.url' scripts/nix/sources.json -r)
echo "NIX_PATH=$NIX_PATH" >> $GITHUB_ENV
branch_name="${{ github.event.pull_request.base.ref }}"
nix-shell --pure --run "./scripts/validate-version.sh --branch $branch_name" ./scripts/shell.nix
- name: Run chart-testing (list-changed)
id: list-changed
run: |
changed=$(nix-shell --pure --run "ct list-changed --config ct.yaml" ./scripts/shell.nix)
if [[ -n "$changed" ]]; then
echo "changed=true" >> $GITHUB_OUTPUT
fi
- name: Run chart-testing (lint)
run: nix-shell --pure --run "ct lint --config ct.yaml" ./scripts/shell.nix
unit-tests:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Unit test
run: make test
- name: Upload Coverage Report
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./coverage.txt
name: coverage-$(date +%s)
flags: unittests
bdd-tests:
runs-on: ubuntu-latest
needs: ['unit-tests']
strategy:
fail-fast: true
matrix:
kubernetes: [v1.27.3]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Go 1.19
uses: actions/setup-go@v4
with:
go-version: 1.19.9
cache: false
- name: Build images locally
run: make zfs-driver-image || exit 1;
- name: Setup zfs pools
run: |
sudo apt-get install -y zfsutils-linux
truncate -s 100G /tmp/disk.img
sudo zpool create zfspv-pool `sudo losetup -f /tmp/disk.img --show`
- 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: Setting environment variables
run: |
echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV
echo "OPENEBS_NAMESPACE=openebs" >> $GITHUB_ENV
- name: bootstrap
run: make bootstrap
- name: Running tests
run: |
make ci
make sanity
- name: Upload CI Test Coverage Report
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./tests/bdd_coverage.txt
name: coverage-bdd_coverage-$(date +%s)
flags: bddtests
csi-driver:
runs-on: ubuntu-latest
needs: ['lint', 'bdd-tests']
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: all
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
- name: Build
uses: docker/build-push-action@v5
with:
context: .
file: ./buildscripts/zfs-driver/zfs-driver.Dockerfile
push: false
platforms: linux/amd64, linux/arm64