如何在单个存储库中使用多个 Travis CI 文件?

Mit*_*d1r 4 continuous-integration travis-ci monorepo

我有一个项目,在前端使用 Angular,在后端使用 Spring Boot。

目前,前端和后端位于两个独立的存储库中,我在其中准备了特定travis.yaml文件,例如 Spring Boot 应用程序:

language: java
services: docker
addons:
  sonarcloud:
    organization: "mixeway" # the key of the org you chose at step #3
    token:
      secure: $SONAR_TOKEN


script:
  - mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install sonar:sonar -Dmaven.test.skip=true -Dsonar.projectKey=Mixeway_MixewayBackend
  - mvn package -Dmaven.test.skip=true
  - docker build --build-arg JAR_FILE=target/mixeway-0.9.jar -t mixeway/backend:0.9 .
  - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
  - docker push mixeway/backend:0.9
Run Code Online (Sandbox Code Playgroud)

Angulartravis.yaml非常相似(除了 Angular 应用程序的构建时间长几倍)。我想将两个存储库合并为一个存储库,将后端和前端的代码放在一个存储库中。我想要有两个独立的管道,因此后端代码的更改不会执行用于构建前端图像的管道。

这可能吗?如果是这样,怎么办?

Sta*_*mir 6

在我自己在 travis CI 中遇到了同样的问题并且没有找到令人满意的解决方案后,我发现可以使用新的github actions轻松完成此任务。

\n

基本上,您为存储库中的每个项目创建一个工作流文件(类似于 ).travis.yml,该文件是自包含的,并且只负责构建它所属的项目。

\n

这是基本的 monorepo 结构:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .github\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 workflows\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 project1.yml\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 project2.yml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 project1\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 build.gradle\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 project2\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 build.gradle\n
Run Code Online (Sandbox Code Playgroud)\n

在工作流程文件本身中,project1.yml您可以指定哪个路径应触发该项目的构建:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .github\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 workflows\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 project1.yml\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 project2.yml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 project1\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 build.gradle\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 project2\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 build.gradle\n
Run Code Online (Sandbox Code Playgroud)\n