记一次gitlab cicd部署多项目流水线流程

文章介绍了如何使用GitLabCI/CD在代码推送到prod分支时自动执行Maven打包和部署流程。B项目通过mvninstall更新本地仓库,A项目随后进行打包并发送到部署服务器。整个过程涉及gitlabrunner、流水线配置、分支策略以及artifact管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文档

gitlab官方中文文档
GitLab CI/CD实现代码推送后自动maven打包发布

项目背景

  1. 项目A。A项目pom中依赖B的jar包
  2. 项目B
  3. 两个项目都仅限prod分支被合并代码时才触发流水线
  4. 两个项目都是maven项目

流程:
gitlab服务器 =>gitlab runner 打包服务器=>部署服务器

流水线触发后,在打包服务器内打包完成,然后再通过ssh命令(这里略过,读者自行搜索)发送至部署服务器并运行部署脚本

打包需求

gitlab runner 服务器内,B项目只需要mvn install更新服务器的本地仓,然后A项目package完发送到部署服务器

gitlab runner 服务器上需要配置的环境

maven

项目B的流水线配置

default:
  tags:
    - shell #此处为Runner的tag,可用于指定Runner

stages:
  - install

job_install:
  stage: install
  script:
    - echo "--开始mvn install 实体包--"
    - mvn clean install
    - echo "--完成--"
  only:
    - prod # 指定分支

项目A的流水线配置

default:
  tags:
    - shell #此处为Runner的tag,可用于指定Runner
stages:
  - install-b
  - package
  - deploy



install_b:
  stage: install-b
  trigger:
    project: my-group/project-b #填写你项目的 所在组和gitlab上的项目名。别写错了
    strategy: depend # 重点
    branch: prod  #重点 由于B的项目流水线设置了只在prod分支运行,所以这里必须指定


package_war:
  stage: package
  script:
    - echo "--开始mvn package --"
    - mvn clean package
    - echo "--完成--"
  artifacts:
    paths:
      - target/a.jar #设置制品,这样下面的部署流程可以引用
  only:
    - prod
deploy_service:
  stage: deploy
  script:
    - echo "--start deploy --"
    - echo $CI_COMMIT_TAG
    - echo "模拟部署"
    - echo "--完成--"
  only:
    - prod

### 构建若依(RuoYi)项目GitLab CI/CD #### 创建`.gitlab-ci.yml`文件 为了在 GitLab 上实现 RuoYi 项目的自动化部署,需要创建 `.gitlab-ci.yml` 文件于项目根目录下。此文件定义了不同阶段的任务,如构建、测试和部署。 ```yaml stages: - build - test - deploy variables: DOCKER_DRIVER: overlay2 MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode" before_script: - export GRADLE_USER_HOME=$(pwd)/.gradle build_backend: stage: build script: - mvn $MAVEN_CLI_OPTS clean package -DskipTests=true artifacts: paths: - target/*.jar only: - master - develop test_code_quality: stage: test script: - mvn checkstyle:check findbugs:check allow_failure: true dependencies: - build_backend only: - branches deploy_production: stage: deploy script: - echo "Deploying to production..." - ssh user@production-server 'docker-compose down && docker-compose up -d' environment: name: production url: http://your-production-url.com/ when: manual only: - master deploy_staging: stage: deploy script: - echo "Deploying to staging..." - ssh user@test-server 'docker-compose down && docker-compose up -d' environment: name: staging url: http://your-staging-url.com/ when: manual only: - develop ``` 上述配置展示了如何设置多环境下的自动构建与手动触发的部署过程[^5]。 #### 设置GitLab Runner 确保已经安装并注册了至少一个 GitLab Runner 来执行这些作业。可以通过命令行工具 `gitlab-runner register` 完成这一步骤,并指定 runner 的标签以便匹配特定类型的 job[^1]。 #### 准备基础镜像和服务 对于 Java 应用程序来说,通常会使用 Maven 或 Gradle 进行依赖管理和打包工作;而对于前端部分,则可能涉及到 Node.js 环境中的 Webpack 打包等操作。因此,在实际应用中还需要准备好相应的 Dockerfile 和必要的服务描述文件 (例如 docker-compose.yml),以确保能够顺利地完成整个 CI/CD 流水线的工作[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值