# 凭据通过 Woodpecker Secret 注入(HARBOR_USERNAME / HARBOR_PASSWORD), # 不再把 Harbor 账号密码 base64 后写进流水线脚本。 # 镜像推送只在 push / manual 触发:pull_request 不应向生产 registry 推送。 steps: - name: npm-build image: node:22-alpine when: event: - push - pull_request - manual branch: - master - develop - main - feature/asset-statistics commands: | set -eu cd "$CI_WORKSPACE" node --version npm --version npm ci --registry=https://registry.npmmirror.com/ --no-audit --no-fund --loglevel=verbose npm run lint npm test npm run build # 获取分支名 BRANCH_NAME=$(echo ${CI_COMMIT_BRANCH:-manual} | tr / -) echo "Branch name: $BRANCH_NAME" # 版本号: 分支名-package.json版本 PKG_VERSION=$(node -e "console.log(require('./package.json').version)") PROJECT_VERSION="$BRANCH_NAME-$PKG_VERSION" echo "Docker tag: $PROJECT_VERSION" echo $PROJECT_VERSION > $CI_WORKSPACE/project_version.txt - name: docker-build image: docker:24.0.5-cli depends_on: [npm-build] when: event: - push - manual branch: - master - develop - main - feature/asset-statistics volumes: - /var/run/docker.sock:/var/run/docker.sock environment: HARBOR_USERNAME: from_secret: HARBOR_USERNAME HARBOR_PASSWORD: from_secret: HARBOR_PASSWORD commands: | PROJECT_VERSION=$(cat $CI_WORKSPACE/project_version.txt) MODULE_NAME=ln-bi REGISTRY=harbor.lnh2e.com PROJECT=lingniu-v1 echo "Building Docker image: $MODULE_NAME:$PROJECT_VERSION" cd $CI_WORKSPACE docker build -t $REGISTRY/$PROJECT/$MODULE_NAME:$PROJECT_VERSION . echo "$HARBOR_PASSWORD" | docker login $REGISTRY -u "$HARBOR_USERNAME" --password-stdin docker push $REGISTRY/$PROJECT/$MODULE_NAME:$PROJECT_VERSION