diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..4882c97 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,16 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file + +version: 2 +updates: + - package-ecosystem: "gomod" + directory: "/" # Location of package manifests + schedule: + interval: "weekly" + + - package-ecosystem: "docker" + directory: "/" # Location of package manifests + schedule: + interval: "weekly" \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..ca2dec6 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,122 @@ +name: CI + +on: ['push', 'pull_request'] + +jobs: + + golang-test: + name: Golang Test + runs-on: ubuntu-22.04 + strategy: + matrix: + go-version: ['1.20', '1.21.x'] + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 1 + - uses: actions/checkout@v4 + - name: Setup Go ${{ matrix.go-version }} + uses: actions/setup-go@v4 + with: + go-version: ${{ matrix.go-version }} + - name: Display Go version + run: go version + - name: Install dependencies + run: go get ./... + - name: Test with Go + run: make test + + golang-lint: + name: Golang Lint + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v4 + with: + go-version: '1.21' + cache: false + - name: golangci-lint + uses: golangci/golangci-lint-action@v3 + with: + # Require: The version of golangci-lint to use. + # When `install-mode` is `binary` (default) the value can be v1.2 or v1.2.3 or `latest` to use the latest version. + # When `install-mode` is `goinstall` the value can be v1.2.3, `latest`, or the hash of a commit. + version: v1.54 + + # Optional: working directory, useful for monorepos + # working-directory: somedir + + # Optional: golangci-lint command line arguments. + # + # Note: By default, the `.golangci.yml` file should be at the root of the repository. + # The location of the configuration file can be changed by using `--config=` + # args: --timeout=30m --config=/my/path/.golangci.yml --issues-exit-code=0 + args: --timeout=30m + + # Optional: show only new issues if it's a pull request. The default value is `false`. + # only-new-issues: true + + # Optional: if set to true, then all caching functionality will be completely disabled, + # takes precedence over all other caching options. + # skip-cache: true + + # Optional: if set to true, then the action won't cache or restore ~/go/pkg. + # skip-pkg-cache: true + + # Optional: if set to true, then the action won't cache or restore ~/.cache/go-build. + # skip-build-cache: true + + # Optional: The mode to install golangci-lint. It can be 'binary' or 'goinstall'. + # install-mode: "goinstall" + + markdown-lint: + name: Markdown Lint + runs-on: ubuntu-22.04 + steps: + - name: Checkout Code + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Lint Code Base + uses: github/super-linter@v4 + env: + VALIDATE_MARKDOWN: true + VALIDATE_ALL_CODEBASE: false + DEFAULT_BRANCH: main + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + LINTER_RULES_PATH: / + MARKDOWN_CONFIG_FILE: .markdownlint.yml + + deploy-operator: + name: Deploy operator + if: github.event_name == 'push' && github.ref_type == 'tag' && github.repository_owner == 'zncdata-labs' + runs-on: ubuntu-22.04 + needs: + - golang-test + - markdown-lint + - golang-lint + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 1 + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + platforms: linux/amd64,linux/arm64 + - name: Login to quay.io + uses: docker/login-action@v2 + with: + registry: quay.io + username: ${{ secrets.QUAY_USERNAME }} + password: ${{ secrets.QUAY_PASSWORD }} + + - name: Build and push operator + run: | + make docker-buildx + + - name: Build and push operator bundle + run: | + make bundle + make bundle-buildx diff --git a/.markdownlint.yml b/.markdownlint.yml new file mode 100644 index 0000000..fcd1dad --- /dev/null +++ b/.markdownlint.yml @@ -0,0 +1,19 @@ +MD007: + indent: 4 + start_indented: false + +MD013: + line_length: 200 + heading_line_length: 80 + code_block_line_length: 200 + code_blocks: true + tables: true + headings: true + strict: false + stern: false + +MD012: + maximum: 20 + +MD046: false +MD051: false diff --git a/Makefile b/Makefile index 65388ff..d1c7044 100644 --- a/Makefile +++ b/Makefile @@ -213,7 +213,8 @@ $(CONTROLLER_GEN): $(LOCALBIN) .PHONY: envtest envtest: $(ENVTEST) ## Download envtest-setup locally if necessary. $(ENVTEST): $(LOCALBIN) - test -s $(LOCALBIN)/setup-envtest || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest + # after v0.0.0-20240320141353-395cfc7486e6, setup-envtest is require go >= 1.22.0 + test -s $(LOCALBIN)/setup-envtest || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@v0.0.0-20240320141353-395cfc7486e6 .PHONY: operator-sdk OPERATOR_SDK ?= $(LOCALBIN)/operator-sdk