Re: Custom WAR Packager plans: 1.x work and new 2.0 alpha releases

2019-08-21 Thread Matt Sicker
Sounds pretty cool! I'll be watching. This sounds useful for local
testing or demos where you have multiple plugins or libraries to
modify and coordinate.

On Tue, Aug 20, 2019 at 7:19 AM Oleg Nenashev  wrote:
>
> Hi all,
>
> You may have noticed that there have been new Custom WAR Packager (CWP) 
> releases recently: 1.7, 2.0-alpha-1, 2.0-alpha-2 . I would like to clarify 
> what I am doing there. If you do are not familiar with Custom War Packager, 
> this blogpost provides a good overview. Basically Custom WAR Packager takes a 
> YAML configuration and builds your own image of Jenkins (WAR, Docker, 
> Jenkinsfile Runner) with built-in self-configuration logic.
>
> History... Custom WAR Packager was introduced in April 2018, and at that 
> point its main purpose was to package WAR files for Jenkins ATH and Plugin 
> Compatibility Tester. These dev tools consume WAR files and run the Jenkins 
> startup, so we wanted to prepare ready-to-fly images with built-in plugin 
> sets and self-configuration... to rain tests against custom setups I (e.g. 
> when another artifact manager is preconfigured in the WAR file). Then the 
> story kept evolving, because we wanted to test Docker images... so we added 
> support of Docker packaging... Then we added Jenkinsfile Runner packaging 
> support, because it looked to be a great way to build custom Docker images 
> for it. To improve automated dependency management we have also added support 
> of pom.xml and BOM inputs. Finally we ended up with a really handy tool which 
> is used to build custom Jenkins distributions, the tool is also used in 
> Jenkins X for the Jenkinsfile Runner mode (deprecated in 2.0).
>
> All of the changes above retained the backward compatibility of the YAML 
> configuration format, and, as you may guess, the tool has outgrown the 
> original design of the test tool. The configuration format became too 
> complicated and, at the same time, it is not extensible well enough (see the 
> buildSettings specification for example). JENKINS-55832 was a final trigger. 
> The change moved CWP from the Maven Plugin info provider to Jenkins update 
> center by default. It drastically decreased the clean build time (15 minutes 
> => 30 seconds on my tests), but there was no way to keep CWP compatible by 
> default. I decided to use this opportunity and to start working on Custom 
> WARJenkins Packager 2.0 which will introduce a new configuration format and 
> better extensibility for CWP as a library.
>
> There will be 2 release baselines for now.
>
> 1.x. I have started the new 1.x compatibility branch. 
> https://github.com/jenkinsci/custom-war-packager/tree/1.x . I will be 
> backporting changes there when needed by users.
>
> 2.0-alpha: This is a new baseline which will include new configuration 
> format. The baseline will stay in Alpha for months, until the new format is 
> established and until all major proposals are addressed. Some changes I have 
> in mind ATM:
>
> Multiple "source" inputs, not just a single one (YAML, pom, or BOM)
> Multiple destination settings so that WAR, Docker and JFR can be configured 
> separately
> Make WAR file and optional packaging format so that we can introduce features 
> which cannot be packaged into WAR (e.g. Pipeline Libraries in the current 
> state)
> Support of "environments" so that multiple custom packages can be created 
> from a single repository (e.g. separate builds for AWS or Azure)
> Deeper integration with Configuration-as-Code Plugin, including conditional 
> configurations (with use of environments or similar engine)
> ...
>
> Any suggestions or contributions to the new 2.0 release line will be much 
> appreciated.
>
> Best regards,
> Oleg Nenashev
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Jenkins Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to jenkinsci-dev+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/jenkinsci-dev/CAPfivLC%3DwktfW661pqNH508XoKjhMTZhjnWf3vdx03rw7RHDcg%40mail.gmail.com.



-- 
Matt Sicker
Senior Software Engineer, CloudBees

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-dev/CAEot4oyP1XkTey9GYqW8Oqo5kerM8f6cMosprCcm9Pp4QO-kjA%40mail.gmail.com.


Custom WAR Packager plans: 1.x work and new 2.0 alpha releases

2019-08-20 Thread Oleg Nenashev
Hi all,

You may have noticed that there have been new Custom WAR Packager
 (CWP) releases recently:
1.7

, 2.0-alpha-1

, 2.0-alpha-2
 .
I would like to clarify what I am doing there. If you do are not familiar
with Custom War Packager, this blogpost
 provides a good
overview. Basically Custom WAR Packager takes a YAML configuration and
builds your own image of Jenkins (WAR, Docker, Jenkinsfile Runner) with
built-in self-configuration logic.

*History...* Custom WAR Packager was introduced in April 2018, and at that
point its main purpose was to package WAR files for Jenkins ATH and Plugin
Compatibility Tester. These dev tools consume WAR files and run the Jenkins
startup, so we wanted to prepare ready-to-fly images with built-in plugin
sets and self-configuration... to rain tests against custom setups I (e.g.
when another artifact manager is preconfigured in the WAR file). Then the
story kept evolving, because we wanted to test Docker images... so we added
support of Docker packaging... Then we added Jenkinsfile Runner
 packaging support,
because it looked to be a great way to build custom Docker images for it.
To improve automated dependency management we have also added support of
pom.xml and BOM inputs. Finally we ended up with a really handy tool which
is used to build custom Jenkins distributions, the tool is also used in
Jenkins X for the Jenkinsfile Runner mode (deprecated in 2.0).

All of the changes above retained the backward compatibility of the YAML
configuration format, and, as you may guess, the tool has outgrown the
original design of the test tool. The configuration format became too
complicated and, at the same time, it is not extensible well enough (see
the buildSettings specification for example). JENKINS-55832
 was a final trigger.
The change moved CWP from the Maven Plugin info provider to Jenkins update
center by default. It drastically decreased the clean build time (15
minutes => 30 seconds on my tests), but there was no way to keep CWP
compatible by default. I decided to use this opportunity and to start
working on Custom WARJenkins Packager 2.0 which will introduce a new
configuration format and better extensibility for CWP as a library.

There will be 2 release baselines for now.

*1.x.* I have started the new 1.x compatibility branch.
https://github.com/jenkinsci/custom-war-packager/tree/1.x . I will be
backporting changes there when needed by users.

*2.0-alpha*: This is a new baseline which will include new configuration
format. The baseline will stay in Alpha for months, until the new format is
established and until all major proposals are addressed. Some changes I
have in mind ATM:

   - Multiple "source" inputs, not just a single one (YAML, pom, or BOM)
   - Multiple destination settings so that WAR, Docker and JFR can be
   configured separately
   - Make WAR file and optional packaging format so that we can introduce
   features which cannot be packaged into WAR (e.g. Pipeline Libraries in the
   current state)
   - Support of "environments" so that multiple custom packages can be
   created from a single repository (e.g. separate builds for AWS or Azure)
   - Deeper integration with Configuration-as-Code Plugin, including
   conditional configurations (with use of environments or similar engine)
   - ...

Any suggestions or contributions to the new 2.0 release line will be much
appreciated.

Best regards,
Oleg Nenashev

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-dev/CAPfivLC%3DwktfW661pqNH508XoKjhMTZhjnWf3vdx03rw7RHDcg%40mail.gmail.com.