[Jenkins-infra] [INFRA-910] Automating release of Jenkins
Olblak
me at olblak.com
Mon Jul 30 11:06:57 UTC 2018
> After branch creation, we run `mvn versions:set` or equivalent (we already do this today) and commit the result. As long as releases from non-master branches aren't automatic, we can easily handle this in the process.
This simplify the version management.
But I am still confused by the current versioning strategy and release target.
For instance, https://repo.jenkins-ci.org/releases/org/jenkins-ci/main/jenkins-war/2.121/, does it mean that 2.121 is the weekly release and 2.121.1 is the lts version.
I could move the current Jenkinsfile prototype to a shared library and call the same script from jenkinsci/jenkins and jenkins-cert/jenkins.
We could use maven profile to apply different behaviors
Something like:
when Artifacts need to signed:
Run from trusted.ci
when repo == "jenkinsci/jenkins" && branch contain stable' publish lts
Upload distribution (Debian,Redhat,...) packages on '*-stable' blob storage like https://github.com/jenkins-infra/azure/blob/f01ce2aa7d1829a97aec0d97cbcbb7353cee53c4/plans/releases-storage.tf#L37
Upload artifacts on https://repo.jenkins-ci.org/release/
Update docker image
mvn provile == release
when repo == "jenkinsci/jenkins" && branch = master, release weekly version
https://repo.jenkins-ci.org/release/
Upload distribution packages on '*' blob storage like https://github.com/jenkins-infra/azure/blob/f01ce2aa7d1829a97aec0d97cbcbb7353cee53c4/plans/releases-storage.tf#L31
Update docker image
mvn provile == release
Artifacts don't need to be signed:
Run from anywhere else.
when repo == 'jenkins-cert/jenkins"
Upload artifacts on https://repo.jenkins-ci.org/cert-snapshots/
Do not create distribution packages
mvn profile == jenkins-cert
On Fri, Jul 27, 2018, at 10:25 PM, Daniel Beck wrote:
>
> > On 27. Jul 2018, at 21:54, Olblak <me at olblak.com> wrote:
> >
> > Does it mean that master correspond to weekly and stable-* to lts release?
>
> Except for security releases, yes. (Plus there could be rare emergency
> releases.)
>
> > Does the branch name format have a meaning?
>
> Convention, but Oliver has some scripts to help with LTS handling, so
> it's probably fairly locked in by now.
>
> > Does it make sense to use the branch name to define the kind of release?
> > If the branch is <mavenProfile>-<version>, mvn command would be " mvn -P <mavenProfile> -Dtag=<version> release:prepare
>
> We stage from security-stable-2.xxx in the security project due to how
> work on security fixes is organized (you should have access to the docs
> at https://github.com/jenkinsci-cert/jenkins/wiki/ ). Not unchangeable,
> but a plan going forward would be nice.
>
> > I noticed that maven increment the version when mvn release:perform is called, how does that works if:
> > You run mvn release:perform from master current version 2.132 and then you create a branch stable-2.13X and run release:perform from there.
> > Is the version be incremented two times? 2.132 and then 2.133
>
> After branch creation, we run `mvn versions:set` or equivalent (we
> already do this today) and commit the result. As long as releases from
> non-master branches aren't automatic, we can easily handle this in the
> process.
>
> ----
>
> Regarding the Jenkinsfile you link to: The best build scripts are done
> in shell scripts and similar as much as possible, and only glued
> together as needed by Pipeline. This way, we retain the ability to run
> (parts of) the build locally without having a properly set up Jenkins.
>
> I'm sure this has nice visualization with the stages and everything, but
> that benefit is easily outweighed the first time I need to run this
> locally, but can't.
>
More information about the Jenkins-infra
mailing list