Как получить тег gitlab развернутой службы?

# #spring-boot #gitlab #gitlab-ci

Вопрос:

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

мои помеченные релизы

Теперь я могу выбрать один из этих выпусков для их развертывания. Но есть ли способ запросить у развернутой службы его номер версии? Я хотел бы иметь возможность отправлять, например, запрос API в мою развернутую службу (ПОЛУЧИТЬ службу/версию) и получать имя тега (например, v2.0.0) в качестве ответа.

Одна из идей состояла в том, чтобы запускать новый конвейер для каждой новой версии с тегами, там я должен перестроить службу и добавить имя тега в файл в корневом каталоге моей службы. Затем я могу создать API для отправки файла мне по запросу. Может быть, есть более простой способ, который я упускаю из виду?

Комментарии:

1. Как вы развертываете службу? Вы развертываете с помощью автоподключений или другим методом? Как правило, вы на правильном пути, и если вы хотите спросить службу, с какой версией она развернута, вам придется установить версию либо при сборке, либо во время развертывания.

2. Я размещаю его в AWS с помощью Cloud Foundry… как вы можете установить его во время развертывания? Это был бы мой предпочтительный способ, чтобы мне не пришлось ничего перестраивать.

3. Хорошо, теперь я узнал, спасибо за помощь.

4. Я рад, что ты нашел его! Можете ли вы опубликовать решение о том, где вы его нашли, для людей, которые могут наткнуться на эту тему в будущем? 🙂

Ответ №1:

Я решил это так:

  1. Скажите Spring Boot, чтобы он искал переменную, например, RELEASE_VERSION -> Spring не найдет ее в своем коде и автоматически будет искать ее в среде развертывания ->> В моем случае у меня был manifest-my-company.yml файл>>, в котором я создал переменную среды RELEASE_VERSION: '((RELEASE_VERSION))' . Но я не уверен, что это относится конкретно к моей компании.
  2. Создайте API, который возвращает значение этой переменной:
     @RestController
    public class GetVersionController implements GetVersionApi {
    
      @Value("${RELEASE_VERSION:no version number available}") //"no version number available" is the dafault value
      private String releaseVersion;
    
      @Override
      public String getVersion() throws IOException {
        return releaseVersion;
      }
    }
     
  3. Теперь передайте значение тега фиксации в качестве этой переменной при развертывании вашей службы. В моем случае я использовал сценарий компании для развертывания в Cloud Foundry и мог просто добавить переменную в свою gitlab-ci.yml спецификацию:
     deploy to prod:deploy to prod:
      extends: .deploy_to_prod
      script:
      - deploy_to_cf.sh RELEASE_VERSION=${CI_COMMIT_TAG}
      ...