-
Notifications
You must be signed in to change notification settings - Fork 24
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
Basic Release Pipeline Proposal #92
base: master
Are you sure you want to change the base?
Conversation
Hey Jan Martin, thanx this looks great! The only thing is, we need to keep om-2.0.rdf as the source file, in its present form. Could you adapt your pipeline such that it runs every time a new version of om-2.0.rdf is published, and use that file as input for your pipeline? Please see also my other comments in related issues and PRs. |
Also, at this stage, I think we should not change the format of the version numbers. So, could you keep the format ..*? I have to dive into what kind of change (major, minor, patch) the change of a version number format in itself is. And I would not want different version formats for the different versions of OM files that could be generated using the pipelines. |
It is easy to adapt the pipeline to use om-2.0.rdf. But it is not trivial to automatically generate a release each time om-2.0.rdf is changed, as one would need to automatically determine the version number.
The version number format in the RDF files was not changed. It it only the git tag, that has the |
Thanx again so much for your response, Jan Martin. You know how much I appreciate all your effort.
That is great! :)
I understand, but I'll manage the dates and version numbers. It's not ideal I know, but it is less important than the transparency of the quality of the contents of OM. To put it simply.
Clear, thanx!
Ah, shall I do so accordingly in om-2.0.rdf? For my understanding: why should it be removed?
Sounds good, but can you perhaps explain why in dc:date2023/09/28</dc:date> the date is a string? Maybe a stupid question but I don't know. |
413f19b
to
c68867d
Compare
I updated the pull request to use om-2.0.rdf. |
That is so fantastic, Jan Martin, many thanx! Please allow me to ask some questions, just for my understanding:
Looking forward to your response. Maybe my questions are silly. Hope you can help me and answer these questions. Many thanx in advance! :) |
You are right. But it gets added by the pipeline if running for a release tage. This has the advantage that intermediate (non-release versions) do not have a version number. This is an advantage because:
The automatic adding of the version number would become even more important, as soon as some statements get automatically added/removed by an extended pipeline. Then the file in the repository is only the (incomplete) "source" (which should not be used in production), but the pipeline output is the (complete) "build" (which is intended for use in production).
The file in the repository does not get changed by the pipeline. But there will be a modified om-2.0.rdf file in the pipeline output (called pipeline artifacts). |
Hey Jan Martin, |
I updated the PR to not change om-2.0.rdf anymore. The pipeline now generates RDF/XML and TTL serializations (using OWL API) and, in case of a release tag, adds them to the release. |
Hey Jan Martin, thanx but I meant that also the pipeline should not alter om-2.0.rdf. Could you perhaps adapt that accordingly, i.e., that the pipeline will not affect om-2.0.rdf in any way? Hope it's no problem for you. But many thanx in advance! My apologies for any inconvenience. |
Hi Hajo. Just to exclude a misunderstanding: The pipeline does not make any change in the repository. It only takes files from it, uses and maybe changes them, and finales stores the resulting files as artifacts (see e.g. https://github.com/jmkeil/OM/actions/runs/6549193162) of the pipeline execution (job). |
Hi Jan Martin, and again my apologies for my late response and thanx again for yours! :) |
Hi Jan Martin, Sorry that it took so long. There are so many things for me to dive into (I mean other than only this issue of course). I'm sure/convinced you understand.
Could you explain to me, help me? A more general question that I have, since I update the version number and the date of OM manually, e.g. by changing someone's committed file (as you have helped me by pointing out that that is possible), of course in your repository you are fully free what to do, but why would you then want to generate version number and date automatically? And would these then not deviate from the version number and date that I update? Last question I have: many if not all things that we discussed above was from the perspective that I thought it was about this Github. So probably I have given you (many?) wrong advices. How do you see that? Apologies for all my questions, and thanx so much for your answers in advance! Best, Hajo |
It is not directly visible in the yml file itself, but obvious from the general way how GitHub handles files. In our case these four types of files are relevant:
A workflow typically workflow/pipeline pulls the repository files (e.g. the source code of a program, processes them (e.g. compiling, testing), maybe stores some artifacts (e.g. unit test results), and under some conditions (e.g. release branch, no failed tests) generates a release and attaches release assets (e.g. executable binaries of a program) to them. These types of files exist in parallel without affecting each other, if not explicitly specified in the workflow. Of course, a workflow could also push to the repository, but that would need to be scripted explicitly in the workflow.
There is a bunch of reasons to automatize this:
So, the idea is to not have a version number in the git repository at all, but only in the artifacts and assets.
Yes, I think the above comments were based on the misconception of the separation between repository files, artifacts and assets. |
But how should that look like then? It looks already like presently the repository file is affected.
Certainly, I know all that, but for other reasons - as discussed before - we don't do that (yet?) in this OM Github, at least not for the original om-2.0.rdf. Hope you can answer my questions again, Jan Martin. Very much appreciated, all your help, patience, answers, etc.! :) |
You would see some
Of course, they could conflict. That is the reason why I supposed to remove them from the repository and only (automatically) add them during the release process. That way, it is for sure they will not conflict. But the version number would not get out of your control: The script would determines it based on a version tag at the commit, which must be added manually. The difference is that a tag does not change the content of the commit nor does it require an additional commit. The commits stay as they are, but from time to time a version tag is added causing a release. See for example this demo release triggered by the version tag v0.0.0: The file in the tagged commit does not contain version information, but the files attached to the release do. |
9f77118
to
8b4f243
Compare
I just restored the initial workflow (but with a few updates of pipeline dependencies and a rebase on the latest commit in om/master to avoid merge conflicts): Now the PR (again):
With that, doing a release would only require you to create a tag on a commit and cause/require zero changes to the commit and the files in the repository as well as the commit history by you and by the pipeline. Merging this would enable to work on further PRs like: automatic OWL profile checking, OWL profile variants generation, numeric datatype variants generation, automatic deployment on the OM website, ... Would you consider to merge this? |
This PR is an proposal of a basic release pipeline to solve #90
and is based on #91. It removes dc:date and owl:versionInfo fromom-2.0.ttlom-2.0.rdf and adds a pipeline to automatically adddc:date
andowl:versionInfo
on releases and to generate a RDF/XML serialization. In the pipeline, ROBOT (based on the OWL API) is used to perform these actions.To trigger the pipeline and add release information, one needs to create a release with a new tag of the style
v*.*.*
. The version number will get picked from the tag name by the pipeline. The OWL/XML and TTL with data and version number will automatically be added to the release.In addition, the pipeline will be triggered by pushes and pull requests, to automatically generate the serialization variants (and potentially run generation scripts and checks later one), but without adding release information.
Example from the fork repository: