feat(internal): s3,redis,database接口设计与实现 #3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 定义工作流的名称 | |
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 Build | |
uses: docker/setup-buildx-action@v2 | |
- run: | | |
make 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 | |
go-test: | |
name: Go Test | |
runs-on: ubuntu-latest | |
# Service containers to run with `runner-job` | |
services: | |
# Label used to access the service container | |
postgres: | |
# Docker Hub image | |
image: postgres | |
# Provide the password for postgres | |
env: | |
POSTGRES_PASSWORD: postgres | |
# Set health checks to wait until postgres has started | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
ports: | |
# Maps tcp port 5432 on service container to the host | |
- 5432:5432 | |
redis: | |
# Docker Hub image | |
image: redis | |
# Set health checks to wait until redis has started | |
options: >- | |
--health-cmd "redis-cli ping" | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
ports: | |
# Maps port 6379 on service container to the host | |
- 6379:6379 | |
mysql: | |
image: mysql:5.7 | |
env: | |
MYSQL_DATABASE: test_db | |
MYSQL_USER: mysql | |
MYSQL_PASSWORD: mysql | |
MYSQL_ROOT_PASSWORD: mysql | |
ports: | |
- 33306:3306 | |
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 | |
minio: | |
# fixme: let's not depend on external unofficial image | |
image: lazybit/minio | |
ports: | |
- 9000:9000 | |
env: | |
MINIO_ROOT_USER: accesskey | |
MINIO_ROOT_PASSWORD: password | |
options: --name=minio --health-cmd "curl http://localhost:9000/minio/health/live" | |
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: Go Test | |
run: | | |
go test -v ./... | |
env: | |
# The hostname used to communicate with the PostgreSQL service container | |
PG_DB_HOST: "postgres" | |
PG_DB_PORT: "5432" | |
PG_DB_SSLMODE: "false" | |
PG_DB_USERNAME: "postgres" | |
PG_DB_PASSWORD: "postgres" | |
# The hostname used to communicate with the Redis service container | |
REDIS_ADDR: "redis:6379" | |
# The hostname used to communicate with the Mysql service container | |
MYSQL_DB_HOST: "mysql" | |
MYSQL_DB_PORT: "3306" | |
MYSQL_DB_SSLMODE: "false" | |
MYSQL_DB_USERNAME: "mysql" | |
MYSQL_DB_PASSWORD: "mysql" | |
# The hostname used to communicate with the Minio service container | |
MINIO_ENDPOINT: "minio:9000" | |
MINIO_ACCESS_KEY: "accesskey" | |
MINIO_SECRET_KEY: "password" | |
MINIO_SSL: "false" | |
main: | |
if: github.event_name == 'push' && github.ref == 'refs/heads/main' && github.repository == 'zncdata-labs/zncdata-stack-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 == 'zncdata-labs/zncdata-stack-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 |