Setting release version in snapcraft build
Sergio Schvezov
sergio.schvezov at canonical.com
Thu Sep 1 17:40:43 UTC 2016
Readding the list
El 01/09/16 a las 14:27, Casey Marshall escribió:
> On Thu, Sep 1, 2016 at 12:15 PM, Sergio Schvezov
> <sergio.schvezov at canonical.com <mailto:sergio.schvezov at canonical.com>>
> wrote:
>
> El 01/09/16 a las 14:05, Casey Marshall escribió:
>> When automating the build process for snaps, I'd like to be able
>> to provide the release version as an argument to snapcraft, which
>> could then be used as a variable in the snapcraft.yaml.
>>
>> For example, say I'd like to release "foo" version "1.2.3". I'd
>> then like to build the snap with version: 1.2.3, and use the git
>> tag "v1.2.3" in its source. For example:
>>
>> name: foo
>> version: ${release-version}
>> ...
>> parts:
>> foo:
>> source: git at ...
>> source-tag: v${release-version}
>
> In 2.16 we are introducing a variable to set this one, it comes
> from the `version` defined above.
>
>
> That certainly helps, thanks for this!
>
>
>>
>> The alternatives at the moment seem to be:
>>
>> 1. Parse the version out of snapcraft.yaml, using that as the
>> authoritative release version string. Workable for new projects,
>> but a tough sell for existing projects with an established
>> release process.
>>
>> 2. Generate the snapcraft.yaml from a template (jinja, for
>> example), which works but is kind of awkward.
>>
>> So, how about a ${release-version} variable in snapcraft.yaml,
>> which you could set on the snapcraft command-line with a
>> --release-version flag? This would be darn useful for Jenkins CI
>> scripts that build snaps.
>
> What would the version be set to during CI? The version from a
> snappy point of view is just a friendly name, the architecture
> only cares about revisions.
>
>
> Well, I'm thinking of the case where CI knows the release version up
> front, and wants to set that on the snap it's building.
>
> For example, let's say I've added a snapcraft.yaml to my source tree.
> I manage my releases by tagging them with a version tag, and then I
> run a Jenkins job with the release version as a parameter.
>
> This release version is used to check out the source tree at that
> release version tag, build, run tests, and then build the snap.
> Jenkins knows the release version it's building, and should be able to
> set the version in the snap. If I can't, I either have to try to the
> snapcraft.yaml contents in sync with my release tags, or modify the
> snapcraft.yaml contents at build time.
>
> So instead, I'd want my Jenkins job to be able to set the version on
> the command line, something like `snapcraft --version
> ${RELEASE_VERSION}`. This avoids fragile repetition of release
> versions (among the tag & snap), or the need for
> generating/substituting snapcraft.yaml contents in the job.
I think it would be good to behave like dch does and have a `snapcraft
set-version <version>` command instead.
I let this sit for a bit and see what others think.
In this scenario you'd do
snapcraft set-version <version>
snapcraft
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/snapcraft/attachments/20160901/6adb8e72/attachment.html>
More information about the Snapcraft
mailing list