# #spring-boot #gitlab #gitlab-ci
Вопрос:
Я создаю службу весенней загрузки. Каждый мой релиз помечается определенным номером версии
Теперь я могу выбрать один из этих выпусков для их развертывания. Но есть ли способ запросить у развернутой службы его номер версии? Я хотел бы иметь возможность отправлять, например, запрос API в мою развернутую службу (ПОЛУЧИТЬ службу/версию) и получать имя тега (например, v2.0.0) в качестве ответа.
Одна из идей состояла в том, чтобы запускать новый конвейер для каждой новой версии с тегами, там я должен перестроить службу и добавить имя тега в файл в корневом каталоге моей службы. Затем я могу создать API для отправки файла мне по запросу. Может быть, есть более простой способ, который я упускаю из виду?
Комментарии:
1. Как вы развертываете службу? Вы развертываете с помощью автоподключений или другим методом? Как правило, вы на правильном пути, и если вы хотите спросить службу, с какой версией она развернута, вам придется установить версию либо при сборке, либо во время развертывания.
2. Я размещаю его в AWS с помощью Cloud Foundry… как вы можете установить его во время развертывания? Это был бы мой предпочтительный способ, чтобы мне не пришлось ничего перестраивать.
3. Хорошо, теперь я узнал, спасибо за помощь.
4. Я рад, что ты нашел его! Можете ли вы опубликовать решение о том, где вы его нашли, для людей, которые могут наткнуться на эту тему в будущем? 🙂
Ответ №1:
Я решил это так:
- Скажите Spring Boot, чтобы он искал переменную, например, RELEASE_VERSION -> Spring не найдет ее в своем коде и автоматически будет искать ее в среде развертывания ->> В моем случае у меня был
manifest-my-company.yml
файл>>, в котором я создал переменную средыRELEASE_VERSION: '((RELEASE_VERSION))'
. Но я не уверен, что это относится конкретно к моей компании. - Создайте 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; } }
- Теперь передайте значение тега фиксации в качестве этой переменной при развертывании вашей службы. В моем случае я использовал сценарий компании для развертывания в 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} ...