Skip to content

Commit

Permalink
chore: Migrate from gerrit to github pipelines (#17)
Browse files Browse the repository at this point in the history
  • Loading branch information
Mykola Serdiuk committed May 3, 2024
1 parent b1b7333 commit 76a621c
Show file tree
Hide file tree
Showing 8 changed files with 196 additions and 10 deletions.
173 changes: 173 additions & 0 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
name: "pull_request"

on:
pull_request:
branches: [master]
types: [opened, synchronize, reopened]

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

env:
GOLANG_VERSION: '1.20'

jobs:

check-commit-message:
runs-on: ubuntu-20.04
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Check Commit Format
uses: gsactions/commit-message-checker@v2
with:
pattern: '^(fix|feat|docs|style|refactor|test|chore){1}(\([\w\-\.]+\))?(!)?: .+( (#\d+))?$'
error: 'Your commit message should be in the format "type: Description (#issue)". Example: "fix: Update build (#33)"'
excludeDescription: 'true'
excludeTitle: 'true'
checkAllCommitMessages: 'true'
accessToken: ${{ secrets.GITHUB_TOKEN }}

- name: Check Line Length
uses: gsactions/commit-message-checker@v2
with:
pattern: '.{0,50}'
error: 'The maximum line length of 50 characters is exceeded.'
excludeDescription: 'true'
excludeTitle: 'true'
checkAllCommitMessages: 'true'
accessToken: ${{ secrets.GITHUB_TOKEN }}

helm-docs:
needs: [check-commit-message]
runs-on: ubuntu-20.04
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GOLANG_VERSION }}

- name: Make Build
run: make validate-docs

helm-lint:
needs: [helm-docs]
runs-on: ubuntu-20.04
env:
CHART_DIR: "deploy-templates"
CT_CONFIGS_DIR: "."
CT_CONFIGS_DIR_DEFAULT: "ct-configs"
CT_FILE_PATH: "ct.yaml"
LINTCONF_FILE_PATH: "lintconf.yaml"
CHART_SCHEMA_FILE_PATH: "chart_schema.yaml"
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Helm
uses: azure/setup-helm@v3
with:
version: v3.12.1

- uses: actions/setup-python@v4
with:
python-version: '3.10'
check-latest: true

- name: Set up chart-testing
uses: helm/[email protected]

- name: Run chart-testing (lint)
run: ct lint --target-branch ${{ github.event.repository.default_branch }} \
--charts ${CHART_DIR}/ \
--config ${CT_FILE_PATH} \
--lint-conf ${LINTCONF_FILE_PATH} \
--chart-yaml-schema ${CHART_SCHEMA_FILE_PATH}

build-and-lint:
needs: [helm-lint]
runs-on: ubuntu-20.04
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GOLANG_VERSION }}

- name: Make Build
run: make build

- name: Make Test
run: make test

- name: Make Lint
run: make lint

docker-lint:
needs: [build-and-lint]
runs-on: ubuntu-20.04
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Run hadolint
uses: hadolint/[email protected]
with:
dockerfile: Dockerfile

e2e-tests:
name: End-to-end tests
needs: [docker-lint]
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
# The e2e tests are run on the lowest and highest supported k8s version.
# All Kubernetes version in between expose the same APIs, hence the operator
# should be compatible with them.
kube-version:
- "1.27"
- "1.28"

steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GOLANG_VERSION }}

- name: "install kuttl"
run: ./hack/install-kuttl.sh

- name: "run tests"
env:
KUBE_VERSION: ${{ matrix.kube-version }}
run: make start-kind KUBE_VERSION=$KUBE_VERSION && make e2e

e2e-tests-check:
runs-on: ubuntu-20.04
if: always()
needs: [e2e-tests]
steps:
- name: Print result
run: echo ${{ needs.e2e-tests.result }}
- name: Interpret result
run: |
if [[ success == ${{ needs.e2e-tests.result }} ]]
then
echo "All matrix jobs passed!"
else
echo "One or more matrix jobs failed."
false
fi
8 changes: 5 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ BUNDLE_METADATA_OPTS ?= $(BUNDLE_CHANNELS) $(BUNDLE_DEFAULT_CHANNEL)
BUNDLE_METADATA_OPTS ?= $(BUNDLE_CHANNELS) $(BUNDLE_DEFAULT_CHANNEL)

# Use kind cluster for testing
CONTAINER_REGISTRY_URL?="repo"
CONTAINER_REGISTRY_SPACE?="edp"
START_KIND_CLUSTER?=true
KIND_CLUSTER_NAME?="sonar-operator"
KUBE_VERSION?=1.26
Expand Down Expand Up @@ -88,9 +90,9 @@ test: fmt vet envtest

## Run e2e tests. Requires kind with running cluster and kuttl tool.
e2e: build
docker build --no-cache -t ${E2E_IMAGE_REPOSITORY}:${E2E_IMAGE_TAG} .
kind load --name $(KIND_CLUSTER_NAME) docker-image ${E2E_IMAGE_REPOSITORY}:${E2E_IMAGE_TAG}
E2E_IMAGE_REPOSITORY=${E2E_IMAGE_REPOSITORY} E2E_IMAGE_TAG=${E2E_IMAGE_TAG} kubectl kuttl test
docker build --no-cache -t ${CONTAINER_REGISTRY_URL}/${CONTAINER_REGISTRY_SPACE}/${E2E_IMAGE_REPOSITORY}:${E2E_IMAGE_TAG} .
kind load --name $(KIND_CLUSTER_NAME) docker-image ${CONTAINER_REGISTRY_URL}/${CONTAINER_REGISTRY_SPACE}/${E2E_IMAGE_REPOSITORY}:${E2E_IMAGE_TAG}
E2E_IMAGE_REPOSITORY=${E2E_IMAGE_REPOSITORY} CONTAINER_REGISTRY_URL=${CONTAINER_REGISTRY_URL} CONTAINER_REGISTRY_SPACE=${CONTAINER_REGISTRY_SPACE} E2E_IMAGE_TAG=${E2E_IMAGE_TAG} kubectl-kuttl test

.PHONY: fmt
fmt: ## Run go fmt
Expand Down
5 changes: 5 additions & 0 deletions hack/install-kuttl.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/bash

sudo curl -Lo /usr/local/bin/kubectl-kuttl https://github.com/kudobuilder/kuttl/releases/download/v0.15.0/kubectl-kuttl_0.15.0_linux_x86_64
sudo chmod +x /usr/local/bin/kubectl-kuttl
export PATH=$PATH:/usr/local/bin
5 changes: 0 additions & 5 deletions hack/kind-1.26.yaml

This file was deleted.

6 changes: 6 additions & 0 deletions hack/kind-1.27.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
image: kindest/node:v1.27.3@sha256:3966ac761ae0136263ffdb6cfd4db23ef8a83cba8a463690e98317add2c9ba72

5 changes: 5 additions & 0 deletions hack/kind-1.28.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
image: kindest/node:v1.28.7
2 changes: 1 addition & 1 deletion sonar-project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ sonar.projectName=sonar-operator
sonar.projectVersion=1.0
sonar.go.coverage.reportPaths=coverage.out
sonar.test.inclusions=**/*_test.go
sonar.exclusions=**/deploy-templates/**,**/config/**,**/*.groovy,**/helm-chart/**,**/.github/**,**/*generated.*.go,**/mocks/**
sonar.exclusions=**/cache/**,**/config/**,**/deploy-templates/**,**/*_controller.go,**/zz_generated.deepcopy.go,**/*_types.go,**/factory.go,**/mock_*.go,**/*.groovy,**/.github/**,**/api/**,**/tests/**,**/hack/**,**/bundle/**
2 changes: 1 addition & 1 deletion tests/e2e/helm-success-path/00-install-operator.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
apiVersion: kuttl.dev/v1beta1
kind: TestStep
commands:
- command: helm install --set image.repository=${E2E_IMAGE_REPOSITORY} --set image.tag=${E2E_IMAGE_TAG} --replace --wait sonar-operator-e2e ../../../deploy-templates
- command: helm install --set image.repository=${CONTAINER_REGISTRY_URL}/${CONTAINER_REGISTRY_SPACE}/${E2E_IMAGE_REPOSITORY} --set image.tag=${E2E_IMAGE_TAG} --replace --wait sonar-operator-e2e ../../../deploy-templates
namespaced: true

0 comments on commit 76a621c

Please sign in to comment.