Как использовать несколько файлов Travis CI в одном репозитории? - PullRequest
1 голос
/ 13 января 2020

У меня есть проект, который использует Angular во внешнем интерфейсе и Spring Boot на внутреннем сервере.

На данный момент, внешний интерфейс и внутренний сервер находятся в двух отдельных репозиториях, где я подготовил специфику c 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

Angular travis.yaml очень похоже (за исключением того, что время сборки приложения Angular в несколько раз больше) , Я хотел бы объединить два репозитория с одним кодом с бэкэндом и веб-интерфейсом в одном репозитории. Я хотел бы иметь два отдельных конвейера, поэтому изменение в коде бэкэнда не будет выполнять конвейер для построения образа внешнего интерфейса.

Возможно ли это? И если да, то как?

1 Ответ

2 голосов
/ 24 февраля 2020

После того, как я сам столкнулся с той же проблемой с travis CI и не нашел удовлетворительного решения, я обнаружил, что это легко сделать с помощью новых действий github .

По сути, вы создаете файл рабочего процесса (аналогично .travis.yml) для каждого проекта в хранилище, который является автономным и отвечает за создание только проекта, которому он принадлежит.

Это базовая c структура монореполя:

.
├── .github
│   └── workflows
│       ├── project1.yml
│       ├── project2.yml
├── project1
│   └── build.gradle
├── project2
│   └── build.gradle

А в самом файле рабочего процесса, скажем, project1.yml, вы можете указать, какой путь должен запускать сборку для этого проекта:

on:
  push:
    paths:
      - 'project1/**'

У меня есть хранилище с этой структурой (с проектом начальной загрузки и проектом angular) вы можете взглянуть на

...