feat: add experimental build-tag support#348
feat: add experimental build-tag support#348vytautas-astrauskas-sensmetry wants to merge 8 commits into
Conversation
Signed-off-by: Vytautas Astrauskas <vytautas.astrauskas@sensmetry.com>
|
The wish is to get incremental build versions for development builds of some kind - right? The simplest option i think would be to not have any dedicated feature, but just use sysand as a CLI/binding to set the version without built-in logic. Since any review effort to sysand is a work effort, is this functionality worth working towards now? I push back like this because there are significant ambitions worked towards already in a timeframe we struggle to deliver reliably against. |
The standard library is going to be released every month. Updating the version each month by hand is too painful and too risky. This approach is the easiest way I found for distinguishing these monthly releases.
This simplest option is, unfortunately, not so simple because it depends on support of file usages and correct conversion to IRI usages, which is #281. For this reason, I went with an explicit build tag flag, which is simpler and (hopefully) easier to review. |
Signed-off-by: Vytautas Astrauskas <vytautas.astrauskas@sensmetry.com>
14bffbc to
24e179d
Compare
|
Proper implementation is blocked by #281. Freezing this PR until it is completed. |
Depends on #346
An experimental feature that enables appending build tag (
dev.<TAG>pre-release suffix) to a KPAR's version at build time without modifying the source.project.jsonon disk.1.2.3→1.2.3-dev.42versionConstraintfields that exactly pin a siblingproject's base version are also updated (e.g.
=1.2.3→=1.2.3-dev.42).The tag is exposed through the Java SDK and Maven plugin only (no CLI flag in this PR; will consider adding it in a later PR after confirming that the design implemented in this PR works.).
Java API
Maven plugin
Or via property (useful in CI):
mvn package -Dsysand.buildTag=$BUILD_TAGEmpty-string is normalised to
null, so an unset$BUILD_TAGis a no-op.A typical CI pattern using a pom.xml default: