запускать сборки Jenkins между проектами - PullRequest
0 голосов
/ 03 августа 2020

Я фронтенд-разработчик, работающий над улучшением процесса развертывания, при котором у нашего основного веб-приложения есть родительский элемент, который импортирует все приложения с функциями как NPM модулей / зависимостей. Это не моя рубка, но я рад узнать об этом больше. Наш конвейер Jenkins создается с помощью Groovy файла:

def npmJob = job("$SRC_JOB") {

  logRotator {
    numToKeep(-1)
    artifactNumToKeep(-1)
  }

  wrappers {
    sshAgent('gitlab-jenkins-creds')
    credentialsBinding {
      usernamePassword('username-here', 'password-here', 'artifactory-docker-goes-here')
    }
  }

  scm {
    git {
      remote {
        url("$REPO")
        credentials('gitlab-jenkins-creds')
      }
      extensions {
        wipeOutWorkspace()
      }
      branch('master')
    }
  }

  steps {
    shell(NPM_SHELL_STEPS)
  }
}

В настоящее время развертывание выполняется вручную инженерами Front End:

Пакет приложения Parent / Wrapper. json:

"@myorg/feature-app-1": "1.1.1",
"@myorg/feature-app-2": "2.1.22",
"@myorg/feature-app-3": "0.12.11",
"@myorg/feature-app-4": "1.1.5",
  1. Feature App построено в Jenkins> Модуль NPM создан и хранится в Artifactory.
  2. Родительское приложение / Wrapper package.json обновляется вручную, чтобы отразить новую версию зависимости и помещается / объединено с мастером.
  3. Приложение Parent / Wrapper построено в Jenkins с новыми версиями и развернуто на S3.

Я бы хотел удалить ручные шаги и запускать сборки автоматически.

Сначала обновите пакет. json в Parent / Wrapper, чтобы включить префикс ^, чтобы полная сборка вытягивала более новую версию:

"@myorg/feature-app-1": "^1.1.1",
"@myorg/feature-app-2": "^2.1.22",
"@myorg/feature-app-3": "^0.12.11",
"@myorg/feature-app-4": "^1.1.5",

Затем в Feature / Parent, включите опцию [ ] Trigger builds remotely (e.g., from scripts).

Затем в Jenkins Feature обновите dsl.groovy, чтобы включить функцию как часть steps, которая запускается в качестве последнего шага. :

...see above...
steps {
    shell(NPM_SHELL_STEPS)
    $curl JENKINS_URL/job/parent_app/build?token={TOKEN_NAME}
  }

Это похоже на это сработает?

Я думаю, что в идеале, когда приложение Feature завершит свою сборку, можно открыть новый запрос на слияние в GitLab, а затем, когда он будет объединен, процесс будет запущен в родительском конвейере, однако это кажется невозможным в GitLab, так как это будет происходить в разных репозиториях / проектах, поскольку они не являются ветвями друг друга.

...