diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..10c8016 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,110 @@ +# 定义工作流的名称 +name: CI + +on: + workflow_dispatch: # 允许手动触发工作流 + push: # 当有代码推送事件发生时 + branches: + - main # 只有推送到 main 分支时才触发 + tags: + - '*' + pull_request: + + +# 定义工作流的任务 +jobs: + build: + # 定义运行此任务的环境:最新版本的 ubuntu + runs-on: ubuntu-latest + + # 定义任务中的步骤 + steps: + # 检出代码。只检出最新的1次提交 + - uses: actions/checkout@v3 + with: + fetch-depth: 1 + + # 设置 QEMU 模拟器,这通常用于多平台的 Docker 构建 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + # 设置 Docker Buildx,用于构建多平台的 Docker 镜像 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - run: | + make docker-build + + linting: + name: Lint Code Base + runs-on: ubuntu-latest + steps: + - name: Checkout Code + uses: actions/checkout@v3 + with: + # Full git history is needed to get a proper list of changed files within `super-linter` + 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 + + main: + if: github.event_name == 'push' && github.ref == 'refs/heads/main' && github.repository == 'bococ/redis-operator' + runs-on: ubuntu-latest + needs: + - build + - linting + + steps: + # 检出代码。只检出最新的1次提交 + - uses: actions/checkout@v3 + with: + fetch-depth: 1 + + # 登录到 QUAY Hub + - name: Login to quay.io + uses: docker/login-action@v2 + with: + registry: quay.io + username: ${{ secrets.QUAY_USERNAME }} # 使用存储在 GitHub Secrets 中的 QUAY 用户名 + password: ${{ secrets.QUAY_PASSWORD }} # 使用存储在 GitHub Secrets 中的 QUAY 密码 + + - name: Build and push Docker image + run: | + make docker-buildx + make bundle + make bundle-buildx + + tags: + if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') && github.repository == 'bococ/redis-operator' + runs-on: ubuntu-latest + needs: + - build + - linting + + steps: + # 检出代码。只检出最新的1次提交 + - uses: actions/checkout@v3 + with: + fetch-depth: 1 + + # 登录到 QUAY Hub + - name: Login to quay.io + uses: docker/login-action@v2 + with: + registry: quay.io + username: ${{ secrets.QUAY_USERNAME }} # 使用存储在 GitHub Secrets 中的 QUAY 用户名 + password: ${{ secrets.QUAY_PASSWORD }} # 使用存储在 GitHub Secrets 中的 QUAY 密码 + + - name: Build and push Docker image + run: | + export VERSION=$GITHUB_REF_NAME + make docker-buildx + make bundle + make bundle-buildx \ No newline at end of file diff --git a/.markdownlint.yml b/.markdownlint.yml new file mode 100644 index 0000000..45d588e --- /dev/null +++ b/.markdownlint.yml @@ -0,0 +1,20 @@ +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 + headers: true + strict: false + stern: false + +MD012: + maximum: 20 + +MD046: false +MD051: false \ No newline at end of file diff --git a/Makefile b/Makefile index 1a0edcb..0707e09 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ # To re-generate a bundle for another specific version without changing the standard setup, you can: # - use the VERSION as arg of the bundle target (e.g make bundle VERSION=0.0.2) # - use environment variables to overwrite this value (e.g export VERSION=0.0.2) -VERSION ?= 0.0.2 +VERSION ?= 0.0.1-alpha # CHANNELS define the bundle channels used in the bundle. # Add a new line here if you would like to change its default config. (E.g CHANNELS = "candidate,fast,stable") @@ -260,7 +260,7 @@ ifeq (,$(shell which opm 2>/dev/null)) set -e ;\ mkdir -p $(dir $(OPM)) ;\ OS=$(shell go env GOOS) && ARCH=$(shell go env GOARCH) && \ - curl -sSLo $(OPM) https://github.com/operator-framework/operator-registry/releases/download/v1.23.0/$${OS}-$${ARCH}-opm ;\ + curl -sSLo $(OPM) https://github.com/operator-framework/operator-registry/releases/download/v1.29.0/$${OS}-$${ARCH}-opm ;\ chmod +x $(OPM) ;\ } else