Gitlab Runner - новая папка для каждой сборки - PullRequest
0 голосов
/ 13 сентября 2018

Я использую Gitlab CI для своего проекта.Когда я запускаю ветку разработки, она запускает тесты и обновляет код в моей тестовой среде (на удаленном сервере).

Но бегун gitlab уже использует ту же папку сборки: builds/a3ac64e9/0/myproject/myproject

Но я бы хотел каждый раз создавать новую папку:

  • builds/a3ac64e9/1/yproject/myproject
  • builds/a3ac64e9/2/yproject/myproject
  • builds/a3ac64e9/3/yproject/myproject
  • ии так далее

Используя это, я мог бы просто обновить свой веб-сайт, изменив символическую ссылку, указывающую на последний каталог бегуна.

Есть ли способ настроить Gitlab Runner таким образом?

Ответы [ 3 ]

0 голосов
/ 15 сентября 2018

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

Я перепишу свой ответ здесь:

Концептуально, этот подходэто не путь;каталог сборки - это не каталог развертывания, это временный каталог для сборки или развертывания из , в то время как в исполнителе оболочки это можно исправить.

Так что вам нужно развернутьиз этого каталога со скриптом согласно gitlab-ci.yml ниже, в правильный каталог развертывания.

stages:
- deploy

variables:
  TARGET_DIR: /home/ab12/public_html/$CI_PROJECT_NAME

deploy:
  stage: deploy
  script:
     mkdir -pv $TARGET_DIR
     rsync -r --delete ./ $TARGET_DIR
  tags:
    - myrunner

Это переместит ваш projectfiles в / home / ab12 / public_html /

называя ваши проекты как project1 .. projectn, все ваши проекты могут использовать этот же файл .gitlab-ci.yml.

0 голосов
/ 27 июня 2019

Хотя использование каталога сборки в качестве каталога развертывания не имеет смысла, вы можете настроить пользовательский каталог сборки

Открыть config.toml в текстовом редакторе: (дополнительная информация о том, где его найти здесь )

Установите enabled = true ниже [runners.custom_build_dir] (подробнее здесь )

[runners.custom_build_dir]
  enabled = true

В вашем .gitlab-ci.ymlфайл под variables установить GIT_CLONE_PATH.Он должен начинаться с $CI_BUILDS_DIR/, например $CI_BUILDS_DIR/$CI_JOB_ID/$CI_PROJECT_NAME, что, вероятно, даст вам то, что вы ищете, хотя, если у вас несколько этапов, они будут иметь разные идентификаторы работы.В качестве альтернативы вы можете попробовать $CI_BUILDS_DIR/$CI_COMMIT_SHA, который даст вам уникальную папку для каждого коммита.(Подробнее здесь )

variables:
    GIT_CLONE_PATH: '$CI_BUILDS_DIR/$CI_JOB_ID/$CI_PROJECT_NAME'

К сожалению, в настоящее время существует проблема с использованием GIT_BUILDS_DIR в GIT_CLONE_PATH, если вы используете Windows и Powershell , поэтому вам, возможно, придется сделать что-то вроде этого в качестве обходного пути, если все ваши бегуны имеют одинаковый каталог сборки: GIT_CLONE_PATH: 'C:\GitLab-Runner/builds/$CI_JOB_ID/$CI_PROJECT_NAME'

Возможно, вы захотитевзглянем на доступные вам переменные ( предопределенные переменные ), чтобы найти наиболее подходящие переменные для вашего пути.

0 голосов
/ 14 сентября 2018

Этого нельзя достичь только с помощью конфигурации бегуна Gitlab CI, но вы можете создать 2 бегуна и назначить их исключительно для каждой ветви, используя комбинацию ключевых слов only и tags.

Предполагая, чтоваши две ветви названы master и develop, а два бегуна помечены тегами master_runner и develop_runner, ваш .gitlab-ci.yml может выглядеть следующим образом:

master_job:
   <<: *your_job
   only:
     - master
   tags:
     - master_runner

develop_job:
   <<: *your_job
   only:
     - develop
   tags:
     - develop_runner

(<<: *your_jobваша реальная работа, которую вы можете проанализировать)

...