Многопрофильный конвейер Jenkins: скрипт / jenkinsfile как svn внешний - PullRequest
0 голосов
/ 30 января 2020

У меня есть многоотраслевой конвейер в Дженкинсе. Я хочу включить мой файл сценария (jenkinsfile) как внешний файл svn в мои ветви разработки, чтобы организовать сценарий централизованно для всех ветвей. К сожалению, при сканировании многоотраслевого конвейера не удается найти файл сценария, поскольку он ищет только внутри объявленной ветви, а не во включенных внешних местоположениях SVN. Кто-нибудь знает, как я могу это исправить?

Ниже приведен пример моей структуры SVN, конфигурации работы и дополнительной информации.


SVN:

root/
    scripts/
        jenkinsfile
    code/
        version1/
            branchX/
            ...
        version11/        
            branchY/
            ...

Внешнее свойство SVN для branchX, branchY и т. Д. c.

Local path:   jenkinsfile
URL:          ^/scripts/jenkinsfile
Revision Peg: 12345

Конфигурация многоотраслевого задания:

Subversion
    Project Repository Base: http://.../root/code/
    Include branches:        version1/branchX, version11/branchY
Build configuration
    Mode:        by Jenkinsfile
    Script path: jenkinsfile

Журнал сообщений о сканировании в многоотраслевом конвейере:

...
Checking candidate branch /code/version1/branchX@HEAD
      ‘jenkinsfile’ not found
Does not meet criteria
...

Я уже пытался отключить облегченную проверку плагина subversion scm в соответствии с этим советом: Многоотраслевой конвейер с jenkinsfile в svn: external (я добавил -Djenkins.scm.impl.subversion.SubversionSCMFileSystem.disable=true в <service><arguments>... в Дженкинс. xml)

Но Дженкинс все еще не может найти сценарий. И на самом деле, если я помещаю свой сценарий непосредственно, например, в branchX, отключенная облегченная проверка приводит к двойной проверке в моем рабочем пространстве (первая - чтение файла сценария, а вторая - моя первая стадия в самом сценарии).

Может быть, все мои настройки неверны или не идеальный способ?

Буду рад вашей помощи и советам. Спасибо и привет!

1 Ответ

0 голосов
/ 30 января 2020

Если вы работаете в системе linux или bsd (osx), вы можете создать жесткую ссылку от root/scripts/jenkinsfile до root/code/version#/branchX/jenkinsfile для каждой активной ветви

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

Команда bash для создания такой ссылки будет

ln root/scripts/jenkinsfile root/code/version#/branchX/jenkinsfile

Вам нужно будет помнить, что каждый раз при создании ветки необходимо создавать новую ссылку или автоматизировать это с помощью хуков

...