diff --git a/.github/workflows/build.yml b/.github/workflows/build_and_push.yml similarity index 60% rename from .github/workflows/build.yml rename to .github/workflows/build_and_push.yml index 04aad9afa..9fb984f4a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build_and_push.yml @@ -1,50 +1,41 @@ -# Copyright 2020 The OpenEBS Authors. All rights reserved. -# -# 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 -# -# http://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: build - -on: - create: +name: Build and Push + +on: push: branches: - - develop - - 'v*' + - develop + - "release/**" paths-ignore: - - 'docs/**' - - 'changelogs/**' - - 'deploy/helm/**' - - 'CHANGELOG.md' + - "docs/**" + - "design/**" + - "changelogs/**" + - "*.md" + - "MAINTAINERS" jobs: lint: - if: ${{ (github.event.ref_type != 'tag') }} # to ignore builds on release runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 + with: + fetch-depth: 0 - - name: Shellcheck - uses: reviewdog/action-shellcheck@v1 + - uses: cachix/install-nix-action@v22 + - uses: rrbutani/use-nix-shell-action@v1.1.0 with: - github_token: ${{ secrets.github_token }} - reporter: github-pr-review - path: '.' - pattern: '*.sh' - exclude: './.git/*' + 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: - if: ${{ (github.event.ref_type != 'tag') }} # to ignore builds on release + unit-tests: runs-on: ubuntu-latest steps: - name: Checkout @@ -54,16 +45,16 @@ jobs: run: make test - name: Upload Coverage Report - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} file: ./coverage.txt name: coverage-$(date +%s) flags: unittests - bdd-test: - needs: ['unit-test'] + bdd-tests: runs-on: ubuntu-latest + needs: ["unit-tests"] strategy: fail-fast: true matrix: @@ -72,19 +63,21 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Installation - run: | - sudo apt-get update -qq - 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: 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 zfsutils-linux -y + 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: @@ -93,89 +86,52 @@ jobs: driver: none kubernetes-version: ${{ matrix.kubernetes }} cni: calico - start-args: '--install-addons=false' + start-args: "--install-addons=false" - name: Setting environment variables run: | echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV echo "OPENEBS_NAMESPACE=openebs" >> $GITHUB_ENV - - name: Build images locally - run: make zfs-driver-image || exit 1; - - name: bootstrap run: make bootstrap - name: Running tests run: | make ci - make sanity + make sanity - name: Upload CI Test Coverage Report - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} file: ./tests/bdd_coverage.txt name: coverage-bdd_coverage-$(date +%s) flags: bddtests - ansible: - runs-on: ubuntu-latest - needs: ['lint', 'unit-test', 'bdd-test'] - 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@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push the ansible image - uses: docker/build-push-action@v5 - with: - file: ./e2e-tests/Dockerfile - push: true - load: false - platforms: linux/amd64 - tags: | - ${{ env.IMAGE_ORG }}/zfs-localpv-e2e:ci - csi-driver: runs-on: ubuntu-latest - needs: ['lint', 'bdd-test'] + needs: ["lint", "bdd-tests"] 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: Set Tag + - name: Set IMAGE_TAG and BRANCH run: | - BRANCH="${GITHUB_REF##*/}" - CI_TAG=${BRANCH#v}-ci - if [ ${BRANCH} = "develop" ]; then - CI_TAG="ci" - fi - echo "TAG=${CI_TAG}" >> $GITHUB_ENV - echo "BRANCH=${BRANCH}" >> $GITHUB_ENV + BRANCH=${{ github.ref_name }} + echo "BRANCH=$BRANCH" >> $GITHUB_ENV + echo "IMAGE_TAG=$(awk -F': ' '/^version:/ {print $$2}' deploy/helm/charts/Chart.yaml)" >> $GITHUB_ENV - name: Set Build Date id: date run: | echo "DATE=$(date -u +'%Y-%m-%dT%H:%M:%S%Z')" >> $GITHUB_OUTPUT - + - name: Docker meta id: docker_meta uses: docker/metadata-action@v4 @@ -187,11 +143,11 @@ jobs: ghcr.io/${{ env.IMAGE_ORG }}/zfs-driver tags: | type=raw,value=latest,enable=false - type=raw,value=${{ env.TAG }} - + type=raw,value=${{ env.IMAGE_TAG }} + - name: Print Tag info run: | - echo "BRANCH: ${BRANCH}" + echo "BRANCH: ${{ env.BRANCH }}" echo "${{ steps.docker_meta.outputs.tags }}" - name: Set up QEMU @@ -204,7 +160,7 @@ jobs: uses: docker/setup-buildx-action@v3 with: version: v0.13.1 - + - name: Login to Docker Hub uses: docker/login-action@v3 with: @@ -239,3 +195,14 @@ jobs: DBUILD_REPO_URL=https://github.com/openebs/zfs-localpv DBUILD_SITE_URL=https://openebs.io BRANCH=${{ env.BRANCH }} + + release-chart: + runs-on: ubuntu-latest + needs: ["csi-driver"] + steps: + - uses: actions/checkout@v4 + - name: Publish zfs localpv develop or prerelease helm chart + uses: stefanprodan/helm-gh-pages@master + with: + token: ${{ secrets.GITHUB_TOKEN }} + charts_dir: ./deploy/helm diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index b3b6a35ba..033fd6894 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -1,16 +1,16 @@ -name: Pull Request CI +name: Pull Request on: pull_request: paths-ignore: - - 'docs/**' - - 'design/**' - - 'changelogs/**' - - '*.md' - - 'MAINTAINERS' + - "docs/**" + - "design/**" + - "changelogs/**" + - "*.md" + - "MAINTAINERS" branches: - develop - - 'release/**' + - "release/**" jobs: lint: @@ -26,18 +26,18 @@ jobs: with: github_token: ${{ secrets.github_token }} reporter: github-pr-review - path: '.' - pattern: '*.sh' - + path: "." + pattern: "*.sh" + - uses: cachix/install-nix-action@v22 - uses: rrbutani/use-nix-shell-action@v1.1.0 with: - file: shell.nix + file: shell.nix - 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 @@ -52,7 +52,7 @@ jobs: run: make test - name: Upload Coverage Report - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} file: ./coverage.txt @@ -61,7 +61,7 @@ jobs: bdd-tests: runs-on: ubuntu-latest - needs: ['unit-tests'] + needs: ["unit-tests"] strategy: fail-fast: true matrix: @@ -70,11 +70,6 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - uses: cachix/install-nix-action@v22 - - uses: rrbutani/use-nix-shell-action@v1.1.0 - with: - file: shell.nix - - name: Set up Go 1.19 uses: actions/setup-go@v4 with: @@ -98,7 +93,7 @@ jobs: driver: none kubernetes-version: ${{ matrix.kubernetes }} cni: calico - start-args: '--install-addons=false' + start-args: "--install-addons=false" - name: Setting environment variables run: | @@ -111,10 +106,10 @@ jobs: - name: Running tests run: | make ci - make sanity + make sanity - name: Upload CI Test Coverage Report - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} file: ./tests/bdd_coverage.txt @@ -123,7 +118,7 @@ jobs: csi-driver: runs-on: ubuntu-latest - needs: ['lint', 'bdd-tests'] + needs: ["lint", "bdd-tests"] steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/release-charts.yml b/.github/workflows/release-charts.yml deleted file mode 100644 index a90a61ec5..000000000 --- a/.github/workflows/release-charts.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Release Charts - -# Disable the workflow till we have the proper CI setup -# on: -# push: -# paths: -# - 'deploy/helm/**' -# branches: -# - develop - -jobs: - release: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Configure Git - run: | - git config user.name "$GITHUB_ACTOR" - git config user.email "$GITHUB_ACTOR@openebs.io" - - - name: Install Helm - uses: azure/setup-helm@v4 - with: - version: v3.14.3 - - - name: Run chart-releaser - uses: helm/chart-releaser-action@v1.6.0 - env: - CR_TOKEN: "${{ secrets.CR_TOKEN }}" - with: - charts_dir: deploy/helm