Пометка образа Docker с помощью автоинкрементной глобальной версии в Gitlab в yaml - PullRequest
0 голосов
/ 13 ноября 2018

Я сейчас копаюсь в Gitlab CI. Я хотел бы добавить в мои файлы YAML способ пометить изображения докеров с помощью номера версии, составленного следующим образом: MajorVersion.Minorversion.AutoincrementedGlobalversionNumber

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

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

   variables:
      CI_VERSION: "1.0.${CI_PIPELINE_IID}"

    build-master:
      stage: build
      script:
        - docker build --pull -t "$CI_REGISTRY_IMAGE" -t "$CI_REGISTRY_IMAGE:$CI_VERSION"   ./postfix
        - docker push "$CI_REGISTRY_IMAGE"
      only:
        - master

1 Ответ

0 голосов
/ 13 ноября 2018

Вы, вероятно, не можете сделать это со стандартными переменными GitLab CI , но может быть обходной путь вдоль (не проверено):

  1. Получитьидентификатор реестра с чем-то вроде:

    $ registry_id=$(curl -s -XGET --header "PRIVATE-TOKEN: $TOKEN" "https://gitlab.com/$PROJECT_PATH/container_registry.json" | jq '.[].id')

  2. Запросить указанный реестр, чтобы получить имя:

    curl -s -XGET --header "PRIVATE-TOKEN: $TOKEN" "https://gitlab.com/$PROJECT_PATH/registry/repository/$registry_id/tags?format=json" | jq

    Например, возвращает следующее, и вы можете ввести имя для GlobalVersionNumber:

    [
      {
        "name": "latest",
        "location": "registry.gitlab.com/mwasilewski/helm:latest",
        "revision": "85a403337a56e9e6409dfb8185bf9aa5c2135f9a437bd75da82d27471c71feb4",
        "short_revision": "85a403337",
        "total_size": 152246865,
        "created_at": "2016-12-11T08:31:30.126+00:00",
        "destroy_path": "/mwasilewski/helm/registry/repository/31074/tags/latest"
      }
    ]
    
  3. Продолжить сборку Docker и нажать, увеличивая GlobalVersionNumber, после чего вы вернетесь.

Примечание: предполагается, что вы используете Реестр контейнеров GitLab

Ресурсы:

...