Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BJ-993: Init java build #2

Closed
wants to merge 19 commits into from
Closed

BJ-993: Init java build #2

wants to merge 19 commits into from

Conversation

ex01tus
Copy link

@ex01tus ex01tus commented Sep 28, 2020

Удовлетворяем потребности swagger-codegen <3

@ex01tus ex01tus requested a review from a team as a code owner September 28, 2020 11:02
@ex01tus ex01tus removed the request for review from a team September 28, 2020 11:22
.gitignore Outdated Show resolved Hide resolved
@@ -1,23 +0,0 @@
# See https://docs.redoc.ly/cli/configuration/ for more information.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не очень понял этот манёвр. В мастере (main, хаха) используется https://github.com/Redocly/openapi-cli в качестве инструмента линтинга, валидации и бандлинга спеки на OAS 3, который по идее приходит на смену swagger-repo. Чем он таким не устроил, что ты его решил выкинуть?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Меня кодген вчера так вытрахал, что я подропал все, предназначение чего не осознал. Вроде все вернул.

Comment on lines +9 to +12
# Service image default tag
SERVICE_IMAGE_TAG ?= $(shell git rev-parse HEAD)
# The tag for service image to be pushed with
SERVICE_IMAGE_PUSH_TAG ?= $(SERVICE_IMAGE_TAG)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А зачем тут SERVICE_IMAGE_TAG нужно объявлять?

Comment on lines +88 to +89
java.swag.deploy_server:
$(if $(SETTINGS_XML),,echo "SETTINGS_XML not defined" ; exit 1)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Подозреваю, что по задумке чуть упрощается до

Suggested change
java.swag.deploy_server:
$(if $(SETTINGS_XML),,echo "SETTINGS_XML not defined" ; exit 1)
java.swag.deploy_server: java.settings

Comment on lines +97 to +98
$(MVN) versions:set versions:commit -DnewVersion="$(JAVA_PKG_VERSION)-server" && \
$(MVN) install -P="server"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Кажется make будет 😠 💢 из-за этих пробелов (вместо табов).

@@ -1,31 +0,0 @@
#!/usr/bin/env node
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это как раз-таки тот скрипт, который бандлит и спеку, и вообще доку в виде redoc-сайта при помощи openapi-cli. Соответственно, я бы предложил его использовать вместо ./scripts/build.js и полностью выкинуть заодно использование swagger-repo, gulp, и шаблоны в web.

Comment on lines -10 to +11
$ref: './InvitationId.yaml'
$ref: '#/components/schemas/InvitationId'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Соответственно, если поверх openapi-cli работать, подобные изменения тоже надо будет откатить.

Comment on lines -14 to +9
"start": "openapi preview-docs",
"build": "node ./build.js",
"validate": "openapi validate",
"openapi": "openapi",
"build": "node ./scripts/build.js",
"swagger": "swagger-repo",
"test": "swagger-repo validate",
"start": "gulp serve",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И тут. Я может просто не очень понимаю, что в openapi-cli не хватает, чтобы с него обратно переезжать. Привычного редактирования через swagger-editor?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Почему оно выглядит так – это скорее вопрос к @vitaxa. Я, к своему стыду, предпочел бы сильно не вникать, как оно работает и почему мы остановились на таком варианте.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Понимаю.

Я бы тогда предложил оставить валидацию и бандлинг поверх openapi-cli, и вернуть схему в первоначальный вид. После этого (как я понимаю) надо maven таски научить работать с входными файлами dist/openapi.{yaml,json} (а не swagger.{yaml,json} как раньше), в остальном различий в процессе сборки кажется быть не должно. Ну разве что надо учесть, что это OAS 3.0.3 спека.


Вообще мы решили на openapi-cli остановиться, потому что он легковесный, быстрый, развивается, и не ломает «разобранную» спеку (в том смысле что и собранная и разобранная спеки одинаково валидные OAS3 спеки). Если мы прям совсем никак не сможем с ним подружить maven, то ок, можем обратно перекатиться.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@keynslug А в каком swag'e у нас используется openapi-cli? И в чем преимущества? Я когда перекатывался на версию openapi 3.0, переписывал только gulp сборку, чтоб запускалось на актуальном nodejs. Ну и конечно нужно было, чтоб swagger-editor работал

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А в каком swag'e у нас используется openapi-cli?

Лол. Как оказалось на мастере пока ни в каком, только полузабытый эпик висит.

И в чем преимущества?

Кратко расписал выше. Ещё из плюсов удобный линтинг и бандлинг статической доки.

Ну и конечно нужно было, чтоб swagger-editor работал

Ну вот это да, может быть блокер. Нужно поэкспериментировать.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Согласен с использованием openapi-cli, стоит попробовать его покрутить. C maven не должно быть проблем

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужно поэкспериментировать.

На всякий случай, результаты экспресс-экспериментов. swagger-editor v3 не хочет учиться резолвить рефы (swagger-api/swagger-editor#1409), что не позволяет ему из коробки работать со спеками, разбитыми на файлы. Соответственно, народ извращается инструментами типа https://github.com/moon0326/swagger-ui-watcher, чтобы попытаться сохранить воркфлоу. Но воркфлоу всё равно не совсем тот.

Чтобы этот воркфлоу вернуть в нетронутом виде, кажется вариантов кроме перекатывания обратно на swagger-repo + gulp особо и нет. Если именно такая задача не стоит, можно пытаться адаптировать воркфлоу поверх какого-нибудь https://github.com/Mermade/openapi-lint-vscode. Если же мы все готовы пересесть на монолитные однофайловые спеки (пожертвовав до определённой степени возможностью шарить куски спек), можно в принципе и swagger-editor продолжать использовать, и что-нибудь типа https://github.com/42Crunch/vscode-openapi.

Copy link
Author

@ex01tus ex01tus Sep 29, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Окей, я тогда предлагаю так поступить:

  • Я создам эпик-ветку со всем этим добром, чтобы таки получить свой джарничек и делать org-manager
  • Заведу таску на эксперименты с openapi-cli, потому что если технология более новая, то, конечно, стоит попробовать ее завести, но, кажется, это может затянуться

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ex01tus ex01tus requested a review from vitaxa September 29, 2020 09:35
@ex01tus ex01tus closed this Sep 29, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants