71 lines
1.5 KiB
YAML
71 lines
1.5 KiB
YAML
stages:
|
|
- build
|
|
- test
|
|
- deploy
|
|
|
|
variables:
|
|
# 定义全局变量
|
|
DOCKER_IMAGE: "bunny-auth-server:4.0.0"
|
|
|
|
# 定义在所有作业之前运行的脚本
|
|
before_script:
|
|
- echo "Starting CI/CD pipeline"
|
|
|
|
build-job:
|
|
stage: build
|
|
script:
|
|
- echo "Compiling the code..."
|
|
- mvn package # 如果是Java项目
|
|
# 或 npm run build # 如果是Node.js项目
|
|
artifacts:
|
|
paths:
|
|
- target/*.jar # 保存构建产物
|
|
only:
|
|
- master # 只在master分支运行
|
|
|
|
unit-test:
|
|
stage: test
|
|
script:
|
|
- echo "Running unit tests..."
|
|
- mvn test
|
|
# 或 npm test
|
|
|
|
integration-test:
|
|
stage: test
|
|
script:
|
|
- echo "Running integration tests..."
|
|
- mvn verify
|
|
needs: ["unit-test"] # 依赖unit-test完成
|
|
|
|
deploy-prod:
|
|
stage: deploy
|
|
script:
|
|
- echo "Deploying to production..."
|
|
- scp target/*.jar user@production-server:/app/
|
|
when: manual # 需要手动触发
|
|
only:
|
|
- master
|
|
|
|
build-docker:
|
|
stage: build
|
|
image: docker:latest
|
|
services:
|
|
- docker:dind
|
|
script:
|
|
- docker build -t $DOCKER_IMAGE .
|
|
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
|
- docker push $DOCKER_IMAGE
|
|
|
|
deploy-staging:
|
|
stage: deploy
|
|
script:
|
|
- echo "Deploying to staging environment"
|
|
environment:
|
|
name: staging
|
|
url: https://staging.example.com
|
|
|
|
test-multiple-versions:
|
|
stage: test
|
|
parallel: 5
|
|
script:
|
|
- echo "Testing with version $CI_NODE_INDEX" |