HMS Listener - update connector catalog / release process
Opened this issue · 2 comments
Name
egeria-listener-hms
Owner
davidradl
Deliverable
Provides a Hive Metastore listener to feed HMS changes into an Egeria ecosystem
Build, test and CI-CD process
How will the deliverables identified above be created & distributed? - bau
Will maven, gradle (preferred for new repos) be used? Gradle
What languages are used - Python, Java, Go, .... are particular versions needed? Java
will a container image be required? probably with HMS
What should be checked before a PR can be merged? usual
How about after merging, on main? usual
Are additional tests needed? no - junits
Dependencies
To be decided - there maybe Egeria dependancies if there are then they will be brought in by gradle if possible. I suspect that if we want to depend on Egeria code for example EntityDetails - this currently resides in a module in Egeria core with executable java as well as beans like EntityDetails - and the Egeria module is java 17.
We may therefore:
- manually copy code in the project from the Egeria project.
- copy code from Egeria project during the build into generated code.
- separate out the Egeria beans into their own project - so we can depend on them.
Justification
This was discussed in the Egeria community. We think that this should have its own repository as it runs in a different context to the other HMS repository which is a connector that runs in a OMAG Platform. The HMS listener runs in the HMS process at Java 8. So it will have different dependancies from anything running in the OMAG Platform
Assumptions
Yes - all true
Additional Information
No response
Work Plan
Before creating the repo
- [ x] review overall request & get clarifications
- [ x] get approval on developer/TSC call from maintainers
Creating the repo
- Create the repo under the odpi organization (default gitignore, license, readme)
- Setup branch protection rules
- Set pull request options (allow merge, squash, rebase, suggest updating, allow automerge, do not delete head)
- Update security settings in repo (policy, advisories, alerts)
- set up permissions
First steps
- Initial code-drop (author)
Getting CI/CD started & refining settings
- Add initial build script for PR (including gradle wrapper if required)
- Add initial build script for merge
Further Refinement
- Add link in egeria docs to new repo describing purpose ( https://github.com/odpi/egeria-docs/blob/main/site/docs/education/tutorials/git-and-git-hub-tutorial/egeria-git-repositories.md )
- Add to connector catalog, if new repo is for connector ( https://github.com/odpi/egeria-docs/blob/main/site/docs/connectors/index.md )
- Add to release process docs ( https://github.com/odpi/egeria-docs/blob/main/site/docs/guides/contributor/release-process/index.md )
- Add required credentials for publishing to container repos, maven central etc
- Add artifact signing if needed
- Add dependabot config
- Add CodeQL
- Add to LFX ( https://projectadmin.lfx.linuxfoundation.org/project/a092M00001IV4JtQAL ) for
- LFXSecurity
- LFAnalytics
- Add check for stale defects
- Add any required issue tags
Release
- Add release pipeline
I've implemented this now, with a few caveats
- The template etc is all setup for Java 17 - you'll need to make changes as required to co-erce for Java 8/11
- LFX Security isn't working yet (it is in the list), but this isn't repo specific -- I think it only refreshed every 1 month or more
- release pipeline is untested
- no docker image (but that's a whole other game here, as it's about building on top of a good HMS container image, not egeria)
- codeQL isn't quiet setup right -- currently working through some codeql issues. It may mostly work...
Will xfer to docs to update the list of repos etc