diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 04aad9afa..000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,241 +0,0 @@ -# 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: - push: - branches: - - develop - - 'v*' - paths-ignore: - - 'docs/**' - - 'changelogs/**' - - 'deploy/helm/**' - - 'CHANGELOG.md' - -jobs: - lint: - if: ${{ (github.event.ref_type != 'tag') }} # to ignore builds on release - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Shellcheck - uses: reviewdog/action-shellcheck@v1 - with: - github_token: ${{ secrets.github_token }} - reporter: github-pr-review - path: '.' - pattern: '*.sh' - exclude: './.git/*' - - - unit-test: - if: ${{ (github.event.ref_type != 'tag') }} # to ignore builds on release - 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-test: - needs: ['unit-test'] - runs-on: ubuntu-latest - strategy: - fail-fast: true - matrix: - kubernetes: [v1.27.3] - steps: - - 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: 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: Build images locally - run: make zfs-driver-image || exit 1; - - - 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 - - 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'] - 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 - 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 - - - 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 - with: - # add each registry to which the image needs to be pushed here - images: | - ${{ env.IMAGE_ORG }}/zfs-driver - quay.io/${{ env.IMAGE_ORG }}/zfs-driver - ghcr.io/${{ env.IMAGE_ORG }}/zfs-driver - tags: | - type=raw,value=latest,enable=false - type=raw,value=${{ env.TAG }} - - - name: Print Tag info - run: | - echo "BRANCH: ${BRANCH}" - echo "${{ steps.docker_meta.outputs.tags }}" - - - 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 - with: - version: v0.13.1 - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Login to Quay - uses: docker/login-action@v3 - with: - registry: quay.io - username: ${{ secrets.QUAY_USERNAME }} - password: ${{ secrets.QUAY_TOKEN }} - - - name: Login to GHCR - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Build & Push Image - uses: docker/build-push-action@v5 - with: - context: . - file: ./buildscripts/zfs-driver/zfs-driver.Dockerfile - push: true - platforms: linux/amd64, linux/arm64 - tags: | - ${{ steps.docker_meta.outputs.tags }} - build-args: | - DBUILD_DATE=${{ steps.date.outputs.DATE }} - DBUILD_REPO_URL=https://github.com/openebs/zfs-localpv - DBUILD_SITE_URL=https://openebs.io - BRANCH=${{ env.BRANCH }} diff --git a/.github/workflows/build_and_push.yml b/.github/workflows/build_and_push.yml new file mode 100644 index 000000000..3e7d3339f --- /dev/null +++ b/.github/workflows/build_and_push.yml @@ -0,0 +1,208 @@ +name: Build and Push + +on: + push: + branches: + - develop + - 'release/**' + paths-ignore: + - 'docs/**' + - 'design/**' + - 'changelogs/**' + - '*.md' + - 'MAINTAINERS' + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: cachix/install-nix-action@v22 + - uses: rrbutani/use-nix-shell-action@v1.1.0 + 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-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 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: + 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 Image Org + run: | + [ -z "${{ secrets.IMAGE_ORG }}" ] && IMAGE_ORG=openebs || IMAGE_ORG=${{ secrets.IMAGE_ORG}} + echo "IMAGE_ORG=${IMAGE_ORG}" >> $GITHUB_ENV + + - name: Set IMAGE_TAG and BRANCH + run: | + 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 + with: + # add each registry to which the image needs to be pushed here + images: | + ${{ env.IMAGE_ORG }}/zfs-driver + quay.io/${{ env.IMAGE_ORG }}/zfs-driver + ghcr.io/${{ env.IMAGE_ORG }}/zfs-driver + tags: | + type=raw,value=latest,enable=false + type=raw,value=${{ env.IMAGE_TAG }} + + - name: Print Tag info + run: | + echo "BRANCH: ${{ env.BRANCH }}" + echo "${{ steps.docker_meta.outputs.tags }}" + + - 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 + with: + version: v0.13.1 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Login to Quay + uses: docker/login-action@v3 + with: + registry: quay.io + username: ${{ secrets.QUAY_USERNAME }} + password: ${{ secrets.QUAY_TOKEN }} + + - name: Login to GHCR + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build & Push Image + uses: docker/build-push-action@v5 + with: + context: . + file: ./buildscripts/zfs-driver/zfs-driver.Dockerfile + push: true + platforms: linux/amd64, linux/arm64 + tags: | + ${{ steps.docker_meta.outputs.tags }} + build-args: | + DBUILD_DATE=${{ steps.date.outputs.DATE }} + 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..d82150105 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -1,4 +1,4 @@ -name: Pull Request CI +name: Pull Request on: pull_request: @@ -28,7 +28,7 @@ jobs: reporter: github-pr-review path: '.' pattern: '*.sh' - + - uses: cachix/install-nix-action@v22 - uses: rrbutani/use-nix-shell-action@v1.1.0 with: @@ -37,7 +37,7 @@ jobs: 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 @@ -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: 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