100 lines
3.3 KiB
YAML
100 lines
3.3 KiB
YAML
# DevStar 自动化测试工作流定义
|
|
#
|
|
# Artifact命名规则:
|
|
# 1. ${{ vars.DOCKER_REGISTRY_ADDRESS }}/${{ vars.DOCKER_REPOSITORY_ARTIFACT}}:latest
|
|
# e.g., devstar.cn/devstar/devstar-studio:latest
|
|
# 2. ${{ vars.DOCKER_REGISTRY_ADDRESS }}/${{ vars.DOCKER_REPOSITORY_ARTIFACT}}:rootless-dev-${{ gitea.sha }}
|
|
# e.g., devstar.cn/devstar/devstar-studio:rootless-dev-0047d315a3f73cca0c18c641d24b0347456618d5
|
|
# 其中,
|
|
# - rootless 表示非 root 权限容器
|
|
# - dev 表示开发版本
|
|
# - ${{ gitea.sha }} 表示触发 CI Workflow 的 commit SHA
|
|
#
|
|
# 构建参数设置
|
|
# 点击仓库 > 设置 > Actions > 密钥:
|
|
# - ${{ secrets.DOCKER_REGISTRY_USERNAME }}: Docker Registry 用户名
|
|
# - ${{ secrets.DOCKER_REGISTRY_PASSWORD }}: Docker Registry 密码
|
|
# 点击仓库 > 设置 > Actions > 变量:
|
|
# - ${{ vars.DOCKER_REGISTRY_ADDRESS }}: Docker Registry 域名, e.g., `devstar.cn`
|
|
# - ${{ vars.DOCKER_REPOSITORY_ARTIFACT}}: 制品名称, e.g., `devstar/devstar-studio`
|
|
#
|
|
|
|
name: DevStar Studio Auto Test Pipeline
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
|
|
#进行代码单元测试-集成测试-端到端测试
|
|
jobs:
|
|
#前端单元测试
|
|
unit-frontend-test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repository code
|
|
uses: https://github.com/actions/checkout@v4
|
|
- name: Prepare environment
|
|
uses: https://github.com/actions/setup-node@v4
|
|
with:
|
|
node-version: 24
|
|
cache: npm
|
|
cache-dependency-path: package-lock.json
|
|
- run: make deps-frontend
|
|
- run: make test-frontend
|
|
#后端单元测试
|
|
unit-backend-test:
|
|
runs-on: ubuntu-latest
|
|
services:
|
|
elasticsearch:
|
|
image: elasticsearch:7.5.0
|
|
env:
|
|
discovery.type: single-node
|
|
ports:
|
|
- "9200:9200"
|
|
meilisearch:
|
|
image: getmeili/meilisearch:v1
|
|
env:
|
|
MEILI_ENV: development # disable auth
|
|
ports:
|
|
- "7700:7700"
|
|
redis:
|
|
image: redis
|
|
options: >- # wait until redis has started
|
|
--health-cmd "redis-cli ping"
|
|
--health-interval 5s
|
|
--health-timeout 3s
|
|
--health-retries 10
|
|
ports:
|
|
- 6379:6379
|
|
minio:
|
|
image: bitnami/minio:2021.3.17
|
|
env:
|
|
MINIO_ACCESS_KEY: 123456
|
|
MINIO_SECRET_KEY: 12345678
|
|
ports:
|
|
- "9000:9000"
|
|
devstoreaccount1.azurite.local: # https://github.com/Azure/Azurite/issues/1583
|
|
image: mcr.microsoft.com/azure-storage/azurite:latest
|
|
ports:
|
|
- 10000:10000
|
|
steps:
|
|
- uses: https://github.com/actions/checkout@v4
|
|
- uses: https://github.com/actions/setup-go@v5
|
|
with:
|
|
go-version-file: go.mod
|
|
check-latest: true
|
|
- name: Add hosts to /etc/hosts
|
|
run: '[ -e "/.dockerenv" ] || [ -e "/run/.containerenv" ] || echo "127.0.0.1 minio devstoreaccount1.azurite.local mysql elasticsearch meilisearch smtpimap " | sudo tee -a /etc/hosts'
|
|
- run: go clean -modcache
|
|
- run: GOPROXY=https://goproxy.cn make deps-backend
|
|
- run: make backend
|
|
env:
|
|
TAGS: bindata
|
|
- name: unit-tests
|
|
run: make test-backend
|
|
env:
|
|
GITEA_I_AM_BEING_UNSAFE_RUNNING_AS_ROOT: "true"
|