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

[gradle] Enabling up-to-date checks and gradle caching for openapigenerator tasks #6716

Merged
merged 4 commits into from
Aug 10, 2020

Conversation

HenningWaack
Copy link
Contributor

@HenningWaack HenningWaack commented Jun 19, 2020

Fixes #6472

Enhance current Gradle plugin to support Caching and Up-To-Date checks by declaring @input and @OutputDirectory annotations. This can speed up build times.

  • replaced @internal with @optional annoations
  • added @InputFile and @OutputDirectory to file inputs
  • added @input to all configuration inputs
  • added @CacheableTask to all task except GeneratorsTask
  • Added notes to README
  • Updated Gradle Wrapper to 5.6.4 in accordance to pom.xml

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project beforehand.
  • Run the shell script ./bin/generate-samples.shto update all Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master. These must match the expectations made by your contribution. You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example ./bin/generate-samples.sh bin/config/java*. For Windows users, please run the script in Git BASH.
  • File the PR against the correct branch: master
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

cc @OpenAPITools/build

- replaced @internal with @optional annoations
- added @InputFile and @OutputDirectory to file inputs
- added @input to all configuration inputs
- added @CacheableTask to all task except GeneratorsTask
- Added notes to README
- Updated Gradle Wrapper to 5.6.4 in accordance to pom.xml
@jimschubert
Copy link
Member

Thanks for the PR but your commit (as shown in the Commits tab) is not linked to your Github account, which means this PR won't count as your contribution in https://github.com/OpenAPITools/openapi-generator/graphs/contributors.

Let me know if you need help fixing it.

Ref: https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-can-i-update-commits-that-are-not-linked-to-my-github-account

Also, when I originally wrote this plugin I think latest Gradle was 4.7 and I don't believe these options were available. They're incubating, do you know if this raises the earliest supported version of Gradle?

@HenningWaack
Copy link
Contributor Author

Hi, thanks for your comment. And thanks for your offer to help with linking my account to the commits, which I am not sure how to do, even after looking at the link you provided... :)

Concerning the compatibility. The plugin as I have committed it is compatible with Gradle 5.6+. Problem with previous versions is that Gradle did not gracefully handle @FileInput annotations on String types. This leads to exceptions when executing the task, which was resolved with v5.6.

If you would like to have compatibility with lower versions of Gradle, there are two possible options:

  1. Non-breaking: Introduce a new input, e.g. named "inputSpecFile", which is of type File. Users could then use inputSpecFile = file(spec), as an alternative to still having inputSpec of type String. So users could decide to "migrate" to a cacheable solution whenever they feel like it.
  2. Breaking: change inputSpec to type File, which simplifies the config options and implementation, but requires users to change their config to inputSpec = file(spec)

BTW, the Gradle version used in the appveyor tool was 5.2.1, so I guess this is the lowest version we should aim for in terms of compatibility.

@jimschubert
Copy link
Member

@HenningWaack I think I'm cool with bumping the minimal version to 5.6 to better use Gradle to its fullest. If it were to break people on older versions of Gradle, it should be pretty trivial for them to convert to a task which execs CodegenConfigurator directly. @wing328 any thoughts on this?

To associate your commits with your GitHub account, the easiest thing to do would be to register the email used in your commits (view using git log) with your GitHub account at https://github.com/settings/emails. Otherwise the fix would be to rebase your commits and update the author information with your desired name and email using:

git commit --amend --author="Author Name <email@address.com>" --no-edit

@HenningWaack
Copy link
Contributor Author

@jimschubert , any update on this?

Copy link
Member

@jimschubert jimschubert left a comment

Choose a reason for hiding this comment

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

Looks good!

@jimschubert
Copy link
Member

@HenningWaack sorry for the delayed response, I was on hiatus for about a month.
I got feedback from the core team and the 5.6 Gradle limit is good. I'm merging this now to get any community feedback before the 5.0 release.

Thanks for this awesome work!

@jimschubert jimschubert changed the title Enabling up-to-date checks and gradle caching for openapigenerator tasks [gradle] Enabling up-to-date checks and gradle caching for openapigenerator tasks Aug 10, 2020
@jimschubert jimschubert merged commit e4c858c into OpenAPITools:master Aug 10, 2020
@jimschubert jimschubert added this to the 5.0.0 milestone Aug 10, 2020
jimschubert added a commit that referenced this pull request Aug 12, 2020
* master: (27 commits)
  [WIP][python-exp] Force camelization of imports (#7186)
  Fixes #6942: Added ability to prepend a basePath to typescript-redux-query generators (#6943)
  [Typescript] Import path is invalid in windows. (#7175)
  Fix JaxRS Spec generator additional model types (#7180)
  [python{,-experimental}] Obey floating point timeouts provided to RESTClientObject.request(...) (#7154)
  [C#] Switch the spec to OAS v3 from v2 (#7176)
  [Javascript] Fixing the handling of non primitive types in paramToString (#7171) (#7172)
  [typescript-node] Fix invalid type when using node@10 and ES5 (#7133)
  Minor fix to github workflow badge
  [gradle] Enabling up-to-date checks and gradle caching for openapigenerator tasks (#6716)
  feat(csharp-netcore): Adding response headers to the ApiException (#7169)
  [ci] Verify supported JDK versions on master push (#7085)
  Issue #6830: Java server - Add getter to ApiException templates (#7150)
  update kotlin samples
  [Kotlin] Make ApiClient in jvm-retrofit2 be able to use own OkHttpClient (#6999)
  Sttp - wrap query params (#6884)
  Add a link to https://medium.com/@everisBrasil blog post (#7160)
  [C#][netcore] fix regular expression when it contains double quotes (#7147)
  remove duplicated cancellationToken in comment (#7148)
  update samples
  ...
@sesamzoo
Copy link

@HenningWaack, I guess this is also the fix for #4492. Am I right?

@jimschubert
Copy link
Member

@sesamzoo correct. Thanks for pinging and linking the related issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[REQ] [Gradle] Support Gradle Cache for Gradle Plugin "org.openapi.generator"
3 participants