提交 36e079f6 authored 作者: 张伊明's avatar 张伊明

feat 更新ci配置

上级 5c525b9e
流水线 #81 已失败
...@@ -2,23 +2,27 @@ stages: ...@@ -2,23 +2,27 @@ stages:
- build - build
- deploy - deploy
# cache: cache:
# key: "$CI_COMMIT_REF_SLUG" key:
# paths: files:
# - .npm/ - package-lock.json
paths:
- .npm/
policy: pull-push
build_pre: build_pre:
stage: build stage: build
image: node:20-bullseye image: node:20-bullseye
tags: tags:
- risk-monitor-frontend - risk-monitor-frontend
only: rules:
- pre - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "pre"'
when: on_success
- when: never
script: script:
- node -v - node -v
- npm -v - npm -v
- npm config set cache .npm --global - npm ci --cache "$CI_PROJECT_DIR/.npm" --prefer-offline --no-audit --no-fund
- npm ci --prefer-offline --no-audit --no-fund
- npm run build - npm run build
artifacts: artifacts:
paths: paths:
...@@ -30,10 +34,57 @@ deploy_pre: ...@@ -30,10 +34,57 @@ deploy_pre:
image: alpine:3.20 image: alpine:3.20
tags: tags:
- risk-monitor-frontend - risk-monitor-frontend
only: rules:
- pre - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "pre"'
dependencies: when: on_success
- build_pre - when: never
needs:
- job: build_pre
artifacts: true
# 避免多次 deploy 争抢同一份 nginx 目录(极端情况下仍可串行化兜底)
resource_group: pre-nginx-deploy
script: script:
- apk add --no-cache rsync - apk add --no-cache rsync curl jq
- rsync -av --delete dist/ /nas/kjb_service/zm/pre-project/html/ # 只允许“最新一次 pre pipeline”部署到 nginx(加二次确认,避免短时间多次推送导致重复 rsync)
\ No newline at end of file - >
LATEST_PIPELINE_ID="$(
curl --silent --show-error --fail
--header "JOB-TOKEN: $CI_JOB_TOKEN"
"$CI_API_V4_URL/projects/$CI_PROJECT_ID/pipelines?ref=pre&order_by=id&sort=desc&per_page=1"
| jq -r '.[0].id'
)"
- >
if [ -z "$LATEST_PIPELINE_ID" ] || [ "$LATEST_PIPELINE_ID" != "$CI_PIPELINE_ID" ]; then
echo "skip deploy: not latest pipeline (latest=$LATEST_PIPELINE_ID current=$CI_PIPELINE_ID)";
exit 0;
fi
- sleep 20
- >
LATEST_PIPELINE_ID="$(
curl --silent --show-error --fail
--header "JOB-TOKEN: $CI_JOB_TOKEN"
"$CI_API_V4_URL/projects/$CI_PROJECT_ID/pipelines?ref=pre&order_by=id&sort=desc&per_page=1"
| jq -r '.[0].id'
)"
- >
if [ -z "$LATEST_PIPELINE_ID" ] || [ "$LATEST_PIPELINE_ID" != "$CI_PIPELINE_ID" ]; then
echo "skip deploy: not latest pipeline after debounce (latest=$LATEST_PIPELINE_ID current=$CI_PIPELINE_ID)";
exit 0;
fi
- rsync -av --delete dist/ /nas/kjb_service/zm/pre-project/html/
# 非 protected 分支:push 时先做 build 校验(避免合并 pre 时出现 build 报错)
build_check:
stage: build
image: node:20-bullseye
tags:
- risk-monitor-frontend
rules:
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $CI_COMMIT_REF_PROTECTED != "true"'
when: on_success
- when: never
script:
- node -v
- npm -v
- npm ci --cache "$CI_PROJECT_DIR/.npm" --prefer-offline --no-audit --no-fund
- npm run build
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论