Go.CD - Обновление git-репо в конвейере сборки запускает другую сборку
Я пытаюсь обновить свое git-репо во время сборки GoCD. Это означает, что поскольку Go видит другое изменение, он запускает другую сборку. Можно ли остановить повторный запуск сборки?
Предыстория: я создаю и публикую npm-пакеты и хочу автоматически увеличить предварительную версию, чтобы мне не пришлось ее запоминать.
Мой конвейер выглядит в основном так:
npm version prerelease --no-git-tag-version
npm publish
git add package.json
git commit -m "Bump prerelease version"
git push origin
Это обновит версию в git, если публикация пройдет успешно, но также запустит другую сборку, так как Go опрашивает.
2 ответа
Сконфигурируйте инструмент CD/CI для сборки только при наличии фиксации в указанной ветви или, возможно, вы можете создать новую ветвь с именем "pre-release" и настроить CD/CI так, чтобы она не создавалась при фиксации.
Как только эта конфигурация сделана в инструменте CD/CI
npm version prerelease --no-git-tag-version
npm publish
// fetching for other branches
git fetch
// Switching your branch
git checkout pre-release
// Finally committing
git add -m "Your commit message"
git push -u origin pre-release
Я надеюсь, что это сработает для вас:)
Вы можете настроить этапы в своем конвейере так, чтобы они запускались вручную, например, если вы настраивали свои конвейеры как код, в своем ${pipeline_name}.gocd.yaml
,
- deploy-to-next-stage:
approval: manual <-- You need this!
jobs:
deploy:
tasks:
...
Это может помочь, поскольку вы можете запустить автоматическое развертывание на этапе разработки, а затем вручную перенести успешные сборки на следующий этап (возможно, перед выпуском). Таким образом, ваши сборки, которые сработали, не будут зависеть от новых сборок, инициируемых толчком к вашему репо.
Или вы могли бы поставить это на свой первый этап, и весь ваш конвейер не был бы вызван толчком к репо, но вместо этого вы направились в GUI и запустили его самостоятельно.