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 <[email protected] <mailto:[email protected]>> 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@...
    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
-- 
Snapcraft mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/snapcraft

Reply via email to