clouddreamai-cicd-setup 1.5.15 → 1.5.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clouddreamai-cicd-setup",
3
- "version": "1.5.15",
3
+ "version": "1.5.17",
4
4
  "description": "CloudDreamAI GitLab CI/CD 自动配置工具 - 支持 NestJS/Vue/React 项目的一键 CI/CD 配置",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -160,8 +160,8 @@ deploy_dev:
160
160
  script:
161
161
  - sshpass -p "$SSH_PASSWORD" ssh root@$TEST_SERVER_HOST "mkdir -p $DEPLOY_DIR"
162
162
  - sshpass -p "$SSH_PASSWORD" ssh root@$TEST_SERVER_HOST "which rsync || apk add --no-cache rsync"
163
- # 将环境变量文件写入本地,rsync 会同步到服务器
164
- - echo "$ENV_FILE_CONTENT" > .env
163
+ # 将环境变量文件写入本地,rsync 会同步到服务器(ENV_FILE_CONTENT 是文件路径)
164
+ - cat "$ENV_FILE_CONTENT" > .env
165
165
  - sshpass -p "$SSH_PASSWORD" rsync -avz --delete --exclude='.git/' --exclude='node_modules/' . root@$TEST_SERVER_HOST:$DEPLOY_DIR/
166
166
  # 传递 GitLab Registry 凭据和镜像名到部署服务器
167
167
  - sshpass -p "$SSH_PASSWORD" ssh root@$TEST_SERVER_HOST "export REGISTRY_URL='$CI_REGISTRY' && export REGISTRY_USERNAME='$CI_REGISTRY_USER' && export REGISTRY_PASSWORD='$CI_REGISTRY_PASSWORD' && export DOCKER_IMAGE='$CI_REGISTRY_IMAGE:latest' && export APP_PORT='$APP_PORT' && cd $DEPLOY_DIR && chmod +x ci/deploy.sh && bash ci/deploy.sh $ENV_TYPE gitlab"
@@ -193,8 +193,8 @@ deploy_prod:
193
193
  script:
194
194
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "mkdir -p $DEPLOY_DIR"
195
195
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "which rsync || apk add --no-cache rsync"
196
- # 将环境变量文件写入本地,rsync 会同步到服务器
197
- - echo "$ENV_FILE_CONTENT" > .env
196
+ # 将环境变量文件写入本地,rsync 会同步到服务器(ENV_FILE_CONTENT 是文件路径)
197
+ - cat "$ENV_FILE_CONTENT" > .env
198
198
  - sshpass -p "$SSH_PASSWORD" rsync -avz --delete --exclude='.git/' --exclude='node_modules/' . root@$PROD_SERVER_HOST:$DEPLOY_DIR/
199
199
  # 传递 GitLab Registry 凭据和镜像名到部署服务器
200
200
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "export REGISTRY_URL='$CI_REGISTRY' && export REGISTRY_USERNAME='$CI_REGISTRY_USER' && export REGISTRY_PASSWORD='$CI_REGISTRY_PASSWORD' && export DOCKER_IMAGE='$CI_REGISTRY_IMAGE:latest' && export APP_PORT='$APP_PORT' && cd $DEPLOY_DIR && chmod +x ci/deploy.sh && bash ci/deploy.sh $ENV_TYPE gitlab"
@@ -109,20 +109,52 @@ lint:
109
109
  - main
110
110
  - develop
111
111
 
112
- # 构建阶段(使用 Docker Socket Binding,复用宿主机 Docker)
113
- build:
112
+ # 开发环境构建(develop 分支)
113
+ build_dev:
114
114
  stage: build
115
115
  cache: {}
116
116
  image:
117
117
  name: docker:24.0.5
118
118
  pull_policy: if-not-present
119
- # 不使用 DinD 服务,通过 Socket Binding 使用宿主机 Docker
120
- # 需要 Runner 配置: volumes = ["/var/run/docker.sock:/var/run/docker.sock"]
119
+ variables:
120
+ ENV_FILE_CONTENT: $DEV_ENV_FILE
121
121
  before_script:
122
122
  - docker info
123
123
  - echo "登录到 GitLab Container Registry..."
124
124
  - echo "$CI_REGISTRY_PASSWORD" | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
125
125
  script:
126
+ - echo "写入开发环境配置..."
127
+ - cat "$ENV_FILE_CONTENT" > .env
128
+ - echo "尝试拉取最新镜像作为缓存..."
129
+ - docker pull $DOCKER_IMAGE:dev || true
130
+ - echo "构建Docker镜像..."
131
+ - |
132
+ docker build \
133
+ --cache-from $DOCKER_IMAGE:dev \
134
+ -t $DOCKER_IMAGE:$CI_COMMIT_SHA \
135
+ -t $DOCKER_IMAGE:dev .
136
+ - echo "推送镜像到 GitLab Container Registry..."
137
+ - docker push $DOCKER_IMAGE:$CI_COMMIT_SHA
138
+ - docker push $DOCKER_IMAGE:dev
139
+ only:
140
+ - develop
141
+
142
+ # 生产环境构建(main 分支)
143
+ build_prod:
144
+ stage: build
145
+ cache: {}
146
+ image:
147
+ name: docker:24.0.5
148
+ pull_policy: if-not-present
149
+ variables:
150
+ ENV_FILE_CONTENT: $PROD_ENV_FILE
151
+ before_script:
152
+ - docker info
153
+ - echo "登录到 GitLab Container Registry..."
154
+ - echo "$CI_REGISTRY_PASSWORD" | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
155
+ script:
156
+ - echo "写入生产环境配置..."
157
+ - cat "$ENV_FILE_CONTENT" > .env
126
158
  - echo "尝试拉取最新镜像作为缓存..."
127
159
  - docker pull $DOCKER_IMAGE:latest || true
128
160
  - echo "构建Docker镜像..."
@@ -136,7 +168,6 @@ build:
136
168
  - docker push $DOCKER_IMAGE:latest
137
169
  only:
138
170
  - main
139
- - develop
140
171
 
141
172
  # 开发环境部署(develop 分支自动触发)
142
173
  deploy_dev:
@@ -160,8 +191,8 @@ deploy_dev:
160
191
  script:
161
192
  - sshpass -p "$SSH_PASSWORD" ssh root@$TEST_SERVER_HOST "mkdir -p $DEPLOY_DIR"
162
193
  - sshpass -p "$SSH_PASSWORD" ssh root@$TEST_SERVER_HOST "which rsync || apk add --no-cache rsync"
163
- # 将环境变量文件写入本地,rsync 会同步到服务器
164
- - echo "$ENV_FILE_CONTENT" > .env
194
+ # 将环境变量文件写入本地,rsync 会同步到服务器(ENV_FILE_CONTENT 是文件路径)
195
+ - cat "$ENV_FILE_CONTENT" > .env
165
196
  - sshpass -p "$SSH_PASSWORD" rsync -avz --delete --exclude='.git/' --exclude='node_modules/' . root@$TEST_SERVER_HOST:$DEPLOY_DIR/
166
197
  # 传递 GitLab Registry 凭据和镜像名到部署服务器
167
198
  - sshpass -p "$SSH_PASSWORD" ssh root@$TEST_SERVER_HOST "export REGISTRY_URL='$CI_REGISTRY' && export REGISTRY_USERNAME='$CI_REGISTRY_USER' && export REGISTRY_PASSWORD='$CI_REGISTRY_PASSWORD' && export DOCKER_IMAGE='$CI_REGISTRY_IMAGE:latest' && export APP_PORT='$APP_PORT' && cd $DEPLOY_DIR && chmod +x ci/deploy.sh && bash ci/deploy.sh $ENV_TYPE gitlab"
@@ -193,8 +224,8 @@ deploy_prod:
193
224
  script:
194
225
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "mkdir -p $DEPLOY_DIR"
195
226
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "which rsync || apk add --no-cache rsync"
196
- # 将环境变量文件写入本地,rsync 会同步到服务器
197
- - echo "$ENV_FILE_CONTENT" > .env
227
+ # 将环境变量文件写入本地,rsync 会同步到服务器(ENV_FILE_CONTENT 是文件路径)
228
+ - cat "$ENV_FILE_CONTENT" > .env
198
229
  - sshpass -p "$SSH_PASSWORD" rsync -avz --delete --exclude='.git/' --exclude='node_modules/' . root@$PROD_SERVER_HOST:$DEPLOY_DIR/
199
230
  # 传递 GitLab Registry 凭据和镜像名到部署服务器
200
231
  - sshpass -p "$SSH_PASSWORD" ssh root@$PROD_SERVER_HOST "export REGISTRY_URL='$CI_REGISTRY' && export REGISTRY_USERNAME='$CI_REGISTRY_USER' && export REGISTRY_PASSWORD='$CI_REGISTRY_PASSWORD' && export DOCKER_IMAGE='$CI_REGISTRY_IMAGE:latest' && export APP_PORT='$APP_PORT' && cd $DEPLOY_DIR && chmod +x ci/deploy.sh && bash ci/deploy.sh $ENV_TYPE gitlab"