CI
gitlab CI 配置示例
stages:
- pages
- check
- test
- build
- pack
- deploy
default:
cache:
# 缓存所有 gitignore 中忽略的文件和目录,用于 build 的文件向下传递
untracked: true
when: on_success
key: $CI_COMMIT_SHORT_SHA
.install-pnpm: &install-pnpm
- export PRISMA_BINARY_MIRROR=xxx
- npm config set registry xxx
- npm install -g pnpm@latest-8
- pnpm config set store-dir .pnpm-store
.install-deps: $install-deps
- pnpm install
.login2harbor: &login2harbor
- echo -n "$HARBOR_PASSWORD" | docker login "$HARBOR_PASSWORD" -u "$HARBOR_USERNAME" --password-stdin
# 代码风格及类型检查
check:lint
stage: check
image: xx
before_script:
- *install-pnpm
- *install-deps
script:
- pnpm run lint
- pnpm run type-check
rules:
# 在合并请求时执行
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
# 打标签时执行
- if: $CI_COMMIT_TAG
# 受保护分支发生变动执行
- if: $CI_COMMIT_REF_PROJECTED
# 指定分支变化时执行
# - if: $CI_COMMIT_BRANCH == 'dev'
# 默认分支发生变化
# - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
# 编译构建
build:dist
stage: build
image: xxx
before_script:
- *install-pnmpm
- *install-deps
script:
- pnpm run build
rules:
# 打标签时执行
- if: $CI_COMMIT_TAG
# 产物 default 没有配置 cache 时,需要 artifactx 向后传递产物
# artifactx:
# path:
# - dist
# 打包压缩
pack:gz
stage: pack
image: xxx
dependencies:
- build:dist
needs: ['build:dist']
script:
- ls -a
- rm -rf ./tmp
- mkdir -p ./tmp
- cp -r dist tmp
- cd tmp
- tar -cvzf dist.tar.gz dist
- cd ../
rules:
# 打标签时执行
- if: $CI_COMMIT_TAG
# 部署
deploy:135
stage: deploy
image: xxx
dependencies:
- build:dist
needs: ['build:dist']
script:
- ls -a
- ssh -o "StrictHostKeyChecking=no" root@172.21.44.135 "rm -rf /home/dist"
- scp -o "StrictHostKeyChecking=no" -r dist root@172.21.44.135:/home
rules:
# 打标签时执行
- if: $CI_COMMIT_TAG
# Pages
pages:
stage: pages # pages 须放在第一步执行
image: node:latest
before_script:
- *install-pnpm
- *install-deps
script:
- pnpm run build:docs
artifacts:
paths:
# 只能为 public
- public
# 手动触发
when: manual
本页目录