replikativ / datahike

A fast, immutable, distributed & compositional Datalog engine for everyone.
https://datahike.io
Eclipse Public License 1.0
1.63k stars 97 forks source link

Automated Release Process #167

Closed TimoKramer closed 4 years ago

TimoKramer commented 4 years ago

Since we want to release Datahike more often there should be an automated release process. Which includes:

We should also provide a guideline in terms of testing to unofficial/developing backends with an example to use GitHub Actions of CircleCI. We should also provide automated testing for all the libs that are under our control that are used by datahike and probably others.

whilo commented 4 years ago

For external backends we should include compliance tests. We already have a version of this in konserve, but it is not done yet. Basically all backends should have to run through the same comprehensive test suite.

TimoKramer commented 4 years ago

I personally find it neat to have a CI building and testing my code on a git push. that is already working.

Following that principle it would be convenient to tag a commit and push that tag to github and that would create an artifact and release it on clojars. There was the wish to have SNAPSHOT-releases be released on commits to development-branch and have real releases be built and released on commit on master.

TimoKramer commented 4 years ago

storing secrets in circleci is necessary to deploy to clojars: https://circleci.com/docs/2.0/security

TimoKramer commented 4 years ago

I created a first draft to try out a semi automated release model here: https://github.com/TimoKramer/datahike/commit/623808ec8ab517a4008b29af8d7681e13a677ff7 please ask for access to the repo if you want to try it. you can release a '.-SNAPSHOT'-named artifact to clojars when committing on development and you can release a not '.-SNAPSHOT'-named release when committing on master.

TimoKramer commented 4 years ago

tagging should be automatic. need to find a way to do that without uploading a write-key to circleci. local git-hook might be possible.

TimoKramer commented 4 years ago

The env vars LEIN_USERNAME and LEIN_PASSWORD shoud be set inside the clojars-deploy context. and removed from the projects. The env var CIRCLE_TOKEN should be set inside the orb-deploy context.

TimoKramer commented 4 years ago

Closing for now and coming back when CLJS-testing is in work