Skip to content

Commit

Permalink
Merge pull request #12 from red-hat-storage/sync_ds--master
Browse files Browse the repository at this point in the history
Syncing latest changes from master for noobaa-operator
  • Loading branch information
Nikhil-Ladha authored Oct 9, 2024
2 parents 12789a1 + 07b1f1a commit 62b961d
Show file tree
Hide file tree
Showing 278 changed files with 35,138 additions and 7,900 deletions.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/ns-fs-bug-report.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name: NS FS Bug Report
about: Create a report to help us improve the NS FS project
title: ''
labels: NS FS
labels: NS-FS
assignees: ''

---
Expand Down
19 changes: 13 additions & 6 deletions .github/workflows/golangci-lint.yml
Original file line number Diff line number Diff line change
@@ -1,23 +1,30 @@
name: golangci-lint

on: [push, pull_request]
on: [push, pull_request, workflow_dispatch]

jobs:
golangci:
name: golangci-lint
runs-on: ubuntu-latest
timeout-minutes: 90
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: golangci-lint
uses: golangci/golangci-lint-action@v2
uses: golangci/golangci-lint-action@v3
with:
# Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version.
version: v1.29
version: v1.55

# Optional: if set to true then the all caching functionality will be complete disabled,
# takes precedence over all other caching options.
# skip-cache: true

# Optional: working directory, useful for monorepos
# working-directory: somedir

# Optional: golangci-lint command line arguments.
args: --disable-all -E varcheck,structcheck,typecheck,errcheck,gosimple,unused,deadcode,ineffassign,staticcheck --timeout=4m
args: --disable-all --print-issued-lines -E typecheck,errcheck,gosimple,unused,ineffassign,staticcheck --timeout=4m
# Optional: show only new issues if it's a pull request. The default value is `false`.
# only-new-issues: true
69 changes: 54 additions & 15 deletions .github/workflows/manual-build.yml
Original file line number Diff line number Diff line change
@@ -1,48 +1,57 @@
name: Manual Operator Build Dispatch

on:
on:
workflow_dispatch:
inputs:
branch:
description: 'Branch to Build From'
description: "Branch to Build From"
required: true
tag:
description: 'Additional tag for the build (such as alpha, beta, etc.) - Optional'
default: ''
description: "Additional tag for the build (such as alpha, beta, etc.) - Optional"
default: ""

jobs:
publish-image:
runs-on: ubuntu-latest
timeout-minutes: 90
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.branch }}
- uses: actions/setup-go@v5
with:
go-version: "1.21"

- name: Get Current Date
id: date
run: echo "::set-output name=date::$(date +'%Y%m%d')"
run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT

- name: Prepare Suffix
id: suffix
if: ${{ github.event.inputs.tag != '' }}
run: echo ::set-output name=suffix::"-${{ github.event.inputs.tag }}"
run: echo suffix="-${{ github.event.inputs.tag }}" >> $GITHUB_OUTPUT

- name: Prepare Tags
id: prep
run: |
DOCKER_OPERATOR_IMAGE=noobaa/noobaa-operator
DOCKER_OPERATOR_BUNDLE_IMAGE=noobaa/noobaa-operator-bundle
VERSION="${{ steps.date.outputs.date }}"
echo "::warning ${VERSION}"
echo ::set-output name=version::${VERSION}
echo "version=${VERSION}" >> $GITHUB_OUTPUT
OPERATOR_TAGS="${DOCKER_OPERATOR_IMAGE}:${{ github.event.inputs.branch }}-${VERSION}${{ steps.suffix.outputs.suffix }}"
OPERATOR_BUNDLE_TAGS="${DOCKER_OPERATOR_BUNDLE_IMAGE}:${{ github.event.inputs.branch }}-${VERSION}${{ steps.suffix.outputs.suffix }}"
OPERATOR_OCS_DEV_TAG="ocs-dev/noobaa-operator:${{ github.event.inputs.branch }}-latest"
echo "::warning ${CORE_TAGS}"
echo ::set-output name=operatortags::${OPERATOR_TAGS}
echo "operatortags=${OPERATOR_TAGS}" >> $GITHUB_OUTPUT
echo "operatorbundletags=${OPERATOR_BUNDLE_TAGS}" >> $GITHUB_OUTPUT
echo "ocsdevlatest=${OPERATOR_OCS_DEV_TAG}" >> $GITHUB_OUTPUT
- name: Update Core Release
id: update-release
run: |
curl --silent -f -lSL "https://index.docker.io/v1/repositories/noobaa/noobaa-core/tags/${{ github.event.inputs.branch }}-${{ steps.prep.outputs.version }}${{ steps.suffix.outputs.suffix }}" > /dev/null || exit 1
sudo docker manifest inspect noobaa/noobaa-core:${{ github.event.inputs.branch }}-${{ steps.prep.outputs.version }}${{ steps.suffix.outputs.suffix }} > /dev/null || exit 1
echo "::found version ${{ github.event.inputs.branch }}-${{ steps.prep.outputs.version }}${{ steps.suffix.outputs.suffix }}, updating image version"
- name: Login to DockerHub Registry
Expand All @@ -61,16 +70,46 @@ jobs:
# git config --local user.name "GitHub Action"
# git commit -m "Auto update core image" -a
- name: Build & Push Docker Image
- name: Build & Push Docker Image to DockerHub
env:
DOCKERHUB_OWNER: ${{ secrets.GHACTIONSDOCKERHUBNAME }}
run: |
make image VERSION=latest
docker tag noobaa/noobaa-operator ${{ steps.prep.outputs.operatortags }}
docker push ${{ steps.prep.outputs.operatortags }}
make image VERSION=latest
docker tag noobaa/noobaa-operator ${{ steps.prep.outputs.operatortags }}
docker push ${{ steps.prep.outputs.operatortags }}
- name: Build Bundle
run: |
make bundle-image \
csv-name=noobaa-operator.clusterserviceversion.yaml \
core-image=quay.io/${{ github.event.inputs.branch }}-${{ steps.prep.outputs.version }}${{ steps.suffix.outputs.suffix }} \
operator-image=quay.io/${{ steps.prep.outputs.operatortags }} \
db-image=centos/postgresql-15-centos7 \
psql-12-image=centos/postgresql-12-centos7 \
obc-crd="owned" \
BUNDLE_IMAGE=quay.io/${{ steps.prep.outputs.operatorbundletags }}
- name: Login to Quay.io Registry
run: echo ${{ secrets.GHACTIONQUAYTOKEN }} | docker login quay.io -u ${{ secrets.GHACTIONQUAYNAME }} --password-stdin

- name: Push Docker Images to Quay
env:
DOCKERHUB_OWNER: ${{ secrets.GHACTIONQUAYNAME }}
run: |
docker tag ${{ steps.prep.outputs.operatortags }} quay.io/${{ steps.prep.outputs.operatortags }}
docker push quay.io/${{ steps.prep.outputs.operatortags }}
docker push quay.io/${{ steps.prep.outputs.operatorbundletags }}
- name: Push to ocs-dev as latest
env:
DOCKERHUB_OWNER: ${{ secrets.GHACTIONQUAYNAME }}
run: |
docker login -u="${{ secrets.OCSDEVCIUSER }}" -p="${{ secrets.OCSDEVCITOKEN }}" quay.io
docker tag ${{ steps.prep.outputs.operatortags }} quay.io/${{ steps.prep.outputs.ocsdevlatest }}
docker push quay.io/${{ steps.prep.outputs.ocsdevlatest }}
- name: Push CLI Binary
run: |
run: |
make cli
make release-cli VERSION=-${{ github.event.inputs.branch }}-${{ steps.prep.outputs.version }}${{ steps.suffix.outputs.suffix }}
#noobaa-operator-cli
Expand Down
48 changes: 48 additions & 0 deletions .github/workflows/releaser.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Releaser

on:
workflow_dispatch:
inputs:
base_branch:
description: 'The base branch to release from'
required: true

permissions:
contents: write

jobs:
releaser:
runs-on: ubuntu-latest
timeout-minutes: 90
steps:
- name: Set branch
run: echo "BRANCH=${{ github.event.inputs.base_branch }}" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ env.BRANCH }}
- name: Fetch all tags
run: git fetch --force --tags
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: 1.21
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GHACTION_TOKEN_WRITE }}
DOCKERHUB_USERNAME: ${{ secrets.GHACTIONSDOCKERHUBNAME }}
DOCKERHUB_TOKEN: ${{ secrets.GHACTIONSDOCKERHUB }}
QUAY_USERNAME: ${{ secrets.GHACTIONQUAYNAME }}
QUAY_TOKEN: ${{ secrets.GHACTIONQUAYTOKEN }}
HOMEBREW_CORE_REPO: "noobaa/homebrew-noobaa"
OCI_ORG: ${{ secrets.GHACTIONSDOCKERHUBNAME }}
OPERATOR_HUB_REPO: "k8s-operatorhub/community-operators"
TAG: "1"
run: |
git config --global user.email "[email protected]"
git config --global user.name "NooBaa GitHub Action"
bash build/tools/builder.sh --oci-org $OCI_ORG --gh-org noobaa --gh-repo noobaa-operator || exit 1
bash build/tools/releaser.sh --oci-org $OCI_ORG --gh-org noobaa --gh-repo noobaa-operator || exit 1
# - name: "Krew Release"
# uses: rajatjindal/[email protected]
96 changes: 96 additions & 0 deletions .github/workflows/run_admission_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: Admission Webhook Tests
on: [push, pull_request, workflow_dispatch]

jobs:
run-admission-test:
runs-on: ubuntu-latest
timeout-minutes: 90
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
steps:
- name: Checkout noobaa-operator
uses: actions/checkout@v4
with:
repository: "noobaa/noobaa-operator"
path: "noobaa-operator"

- name: Setup Go on runner
uses: actions/setup-go@v5
with:
go-version: "1.21"

- name: Set environment variables
run: |
echo PATH=$PATH:$HOME/go/bin >> $GITHUB_ENV
echo OPERATOR_IMAGE=noobaa/noobaa-operator:integration >> $GITHUB_ENV
echo CHANGE_MINIKUBE_NONE_USER=true >> $GITHUB_ENV
- name: Deploy dependencies
run: |
set -x
cd ./noobaa-operator
sudo bash .travis/install-minikube.sh
go get -v github.com/onsi/ginkgo/v2
go install -v github.com/onsi/ginkgo/v2/ginkgo
ginkgo version
- name: Change settings for k8s and minikube
run: |
sudo mv /root/.kube /root/.minikube $HOME
sudo chown -R $USER $HOME/.kube $HOME/.minikube
sed "s/root/home\/$USER/g" $HOME/.kube/config > tmp; mv tmp $HOME/.kube/config
- name: Build operator image
run: |
set -x
cd ./noobaa-operator
make cli
make image
sudo docker tag noobaa/noobaa-operator:$(go run cmd/version/main.go) $OPERATOR_IMAGE
- name: Install noobaa system
run: |
cd ./noobaa-operator
./build/_output/bin/noobaa-operator crd create -n test
./build/_output/bin/noobaa-operator operator install --operator-image=$OPERATOR_IMAGE --admission --test-env -n test
./build/_output/bin/noobaa-operator system create \
--db-resources='{ "limits": {"cpu": "80m","memory": "1G"}, "requests": {"cpu": "80m","memory": "1G"}}' \
--core-resources='{ "limits": {"cpu": "80m","memory": "1G"}, "requests": {"cpu": "80m","memory": "1G"}}' \
--endpoint-resources='{ "limits": {"cpu": "80m","memory": "1G"}, "requests": {"cpu": "80m","memory": "1G"}}' \
-n test
./build/_output/bin/noobaa-operator status -n test
- name: Wait for phase Ready in the backingstore pod
run: |
cd ./noobaa-operator
./.travis/number_of_pods_in_system.sh --namespace test --pods 5
kubectl wait --for=condition=available backingstore/noobaa-default-backing-store --timeout=10m -n test
- name: Run Admission test
run: |
set -x
cd ./noobaa-operator
make test-admission
- name: Collect logs
if: ${{ failure() }}
run: |
set -x
cd ./noobaa-operator
kubectl get events --sort-by='.metadata.creationTimestamp' -A > logs_kubectl_events.txt
./build/_output/bin/noobaa-operator diagnostics collect --db-dump --dir=admission-tests-logs -n test
mv logs_kubectl_events.txt ./admission-tests-logs
- name: Save logs
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: admission-tests-logs
path: noobaa-operator/admission-tests-logs

# Uncomment this step in case where you want to connect to the VM of this workflow using SSH.
# Pay attention that this workflow was configured with a timeout, and you might change it for this step.
# - name: Setup tmate session
# if: ${{ failure() }}
# uses: mxschmitt/action-tmate@v3
52 changes: 43 additions & 9 deletions .github/workflows/run_ci.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: Run Operator Unit Tests

# Run on each new PR and each new push to existing PR
on: [push, pull_request]

on: [push, pull_request, workflow_dispatch]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: "true"
GO111MODULE: "on"
Expand All @@ -12,12 +12,13 @@ env:
jobs:
run-tests:
runs-on: ubuntu-latest
timeout-minutes: 90
steps:
- name: checkout
uses: actions/checkout@v2
- uses: actions/setup-go@v2
uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: "1.16"
go-version: "1.21"

- name: Deploy Dependencies
id: deploy
Expand All @@ -40,13 +41,17 @@ jobs:

- name: Run Test OLM
id: run-test-olm
run: sudo make test-olm || exit 1
run: sudo env "PATH=$PATH" make test-olm || exit 1

run-cli-tests:
runs-on: ubuntu-latest
timeout-minutes: 90
steps:
- name: checkout
uses: actions/checkout@v2
uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: "1.21"

- name: Deploy Dependencies
id: deploy
Expand All @@ -66,3 +71,32 @@ jobs:
- name: Run Test CLI
id: run-test-cli
run: sudo make test-cli-flow || exit 1

run-core-config-map-tests:
runs-on: ubuntu-latest
timeout-minutes: 90
steps:
- name: checkout
uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: "1.21"

- name: Deploy Dependencies
id: deploy
run: |
bash .travis/install-tools.sh
bash .travis/install-python.sh
sudo bash .travis/install-minikube.sh
- name: Run Build CLI
id: run-build-cli
run: make cli || exit 1

- name: Run Build Image
id: run-build-image
run: make image || exit 1

- name: Run Test Core config map
id: run-test-core-config-map-flow
run: sudo make test-core-config-map-flow || exit 1
Loading

0 comments on commit 62b961d

Please sign in to comment.