# 凭据通过 Woodpecker Secret 注入(harbor_user / 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 commands: | cd $CI_WORKSPACE npm ci --registry=https://registry.npmmirror.com/ 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 volumes: - /var/run/docker.sock:/var/run/docker.sock environment: HARBOR_USER: from_secret: harbor_user 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_USER" --password-stdin docker push $REGISTRY/$PROJECT/$MODULE_NAME:$PROJECT_VERSION