<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://citconf.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jonny</id>
	<title>CitconWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://citconf.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jonny"/>
	<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=Special:Contributions/Jonny"/>
	<updated>2026-04-24T23:13:47Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.11</generator>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=Reproducible_CI&amp;diff=15351</id>
		<title>Reproducible CI</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=Reproducible_CI&amp;diff=15351"/>
		<updated>2013-08-24T21:43:44Z</updated>

		<summary type="html">&lt;p&gt;Jonny: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Reproducible CI&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Can I do this with Windows servers? Yes.&lt;br /&gt;
&lt;br /&gt;
* Versioning CI tools by having a job that commits the CI configuration to source control every hour.&lt;br /&gt;
* Using Jenkins config history plugin for Jenkins gives you history of config, but only by using the plugin.&lt;br /&gt;
&lt;br /&gt;
* Has someone upgraded the compiler or patched the OS? Has that impacted the build?&lt;br /&gt;
&lt;br /&gt;
* Some clients spin up a VM from an image and set the clock to a known time, leaving nothing to chance.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;What is the end goal of reproducible CI?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
* Being able to bring back the CI environment if it comes away.&lt;br /&gt;
&lt;br /&gt;
* Some businesses need to be able to reproduce the application years in the past.&lt;br /&gt;
* If you&amp;#039;re seeing weird behavior with your application, it may be caused by the CI server, and this way you can see what was happening with the build server for a specific artifact.&lt;br /&gt;
* Some clients will want to stay on the same version for years and years, so you may need to recreate a build that hasn&amp;#039;t been run in years.&lt;br /&gt;
* With large and/or remote teams, being able to see who made what change and why is critical, especially if something goes wrong.&lt;br /&gt;
* With CI/versioning, you can promote changes to your pipeline.&lt;br /&gt;
&lt;br /&gt;
* If you can have a reproducible build system, developers can prove to themselves that what they are going to add won&amp;#039;t break the build. No &amp;quot;it works on my machine&amp;quot; excuses. &lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
* Vagrat&lt;br /&gt;
* Docker&lt;br /&gt;
&lt;br /&gt;
* Is there a need for a &amp;quot;meta-pipeline&amp;quot; (pipeline for the pipeline) that builds and promotes the build system? &lt;br /&gt;
** Build systems are products, consumed by developers, and testing needs to happen before the change is pushed to prod server.&lt;br /&gt;
&lt;br /&gt;
* We don&amp;#039;t hold the pipeline to the same processes we hold for the source code we&amp;#039;re building.&lt;br /&gt;
&lt;br /&gt;
* Is the issue that the team is too big? &lt;br /&gt;
** Do we want our team of ten managing a build server, or do we want them delivering value to customers? &lt;br /&gt;
** Do I want 100 teams with their own build server, or do a want a couple guys managing a build server for 1,000 developers?&lt;br /&gt;
&lt;br /&gt;
* Having the small team manage their build system empowers them about the build and deployment process.&lt;br /&gt;
* Having a single team manage it for a huge group of developers gets the developers out of touch with the deployment process.&lt;br /&gt;
* Developers care more about getting stuff done over reproducibility -- they&amp;#039;ll install something to &amp;quot;get it to work&amp;quot; and then forget how it got there.&lt;br /&gt;
** Developers manage their server, but the slaves are rebuild nightly. &lt;br /&gt;
** All teams have their own build server, but agree on a specific deliverable type and publish it to an artifact repository. There&amp;#039;s a master build server that watches the repo and does the integration of all the components.&lt;br /&gt;
&lt;br /&gt;
* Does anyone care about traceability? &lt;br /&gt;
** Getting the code is easy.&lt;br /&gt;
** What about the tests that run?&lt;br /&gt;
** How was the build server set up that day?&lt;br /&gt;
&lt;br /&gt;
* We can reproduce what we built, can we reproduce how we deployed it? If we change all the build scripts? If we change what tool we used? &lt;br /&gt;
&lt;br /&gt;
* Don’t do * includes if you can avoid it.&lt;br /&gt;
&lt;br /&gt;
* Tool chain from checkin -&amp;gt; deployment to production&lt;br /&gt;
** SCM&lt;br /&gt;
** git&lt;br /&gt;
** svn&lt;br /&gt;
** hg&lt;br /&gt;
** ClearCase&lt;br /&gt;
** Perforce&lt;br /&gt;
* Build Server&lt;br /&gt;
** “Runs the build”&lt;br /&gt;
** Transform source + dependencies into an artifact. (May also run tests.)&lt;br /&gt;
** Compile, link, package, test&lt;br /&gt;
** Static Analysis&lt;br /&gt;
** Jenkins&lt;br /&gt;
** BuildForge&lt;br /&gt;
** AHP&lt;br /&gt;
** CruiseControl&lt;br /&gt;
* Artifact repo&lt;br /&gt;
** Nexus&lt;br /&gt;
** Artifactory&lt;br /&gt;
** S3&lt;br /&gt;
** SCM&lt;br /&gt;
** Leave it in the build tool&lt;br /&gt;
** Push it to deployment tool&lt;br /&gt;
* Infrastructure&lt;br /&gt;
** Would follow the same chain to go from “source” to “image.”&lt;br /&gt;
** Long lived physical environments that get set up once&lt;br /&gt;
** Virtual machines that are treated like long-lived physical machines.&lt;br /&gt;
** Stand up virtual instances per build&lt;br /&gt;
** A person might build the machine, build the golden image, build a custom script.&lt;br /&gt;
* Deploy&lt;br /&gt;
** Chef/Puppet&lt;br /&gt;
** Capistrano&lt;br /&gt;
** uDeploy&lt;br /&gt;
** Orc Deploy&lt;br /&gt;
** Shell/Perl/Python/Ruby/etc scripts&lt;br /&gt;
** A person does everything manually following a document&lt;br /&gt;
* Database&lt;br /&gt;
** Liquibase&lt;br /&gt;
** Rails Migrations&lt;br /&gt;
** Dacpac&lt;br /&gt;
** Play Evolution&lt;br /&gt;
** A person that updates the database.&lt;br /&gt;
* Test&lt;br /&gt;
** Performance&lt;br /&gt;
** Integration&lt;br /&gt;
** Unit&lt;br /&gt;
** Deployment/Smoke&lt;br /&gt;
** Functional&lt;br /&gt;
** Load&lt;br /&gt;
** Security&lt;br /&gt;
** Installation/Manifest Check (make sure all expected files exist)&lt;br /&gt;
** A person does everything manually following a document&lt;br /&gt;
** Bees with Machine Guns&lt;br /&gt;
** HP LoadRunner/WinRunner/etc&lt;br /&gt;
** Cucumber&lt;br /&gt;
** Selenium&lt;br /&gt;
** Fitnesse&lt;br /&gt;
** Spock&lt;br /&gt;
* UAT / Business Signoff&lt;br /&gt;
** Blue / Green deployments&lt;br /&gt;
** Canary deployment&lt;br /&gt;
** Person clicks a button&lt;br /&gt;
** Manual signing of document&lt;br /&gt;
* Deploy to Production?&lt;br /&gt;
** Same as deploy to non-production&lt;br /&gt;
** A person does a partial deployment&lt;br /&gt;
&lt;br /&gt;
* Should a build server deploy?&lt;br /&gt;
** Yes&lt;br /&gt;
*** Get it out there so people can use it&lt;br /&gt;
** No&lt;br /&gt;
*** Slow tests aren’t run&lt;br /&gt;
*** Deploy to one environment or many?&lt;br /&gt;
&lt;br /&gt;
* Conclusion: script all the things. Version all the things. You can do it on Windows.&lt;br /&gt;
** Treat the systems the same way you are (should be?) treating the software going to the users.&lt;br /&gt;
** It’s worth it for any size team: one person, ten people, a thousand people.&lt;/div&gt;</summary>
		<author><name>Jonny</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=Reproducible_CI&amp;diff=15346</id>
		<title>Reproducible CI</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=Reproducible_CI&amp;diff=15346"/>
		<updated>2013-08-24T20:39:58Z</updated>

		<summary type="html">&lt;p&gt;Jonny: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Reproducible CI&amp;#039;&amp;#039;&amp;#039;  Can I do this with Windows servers? Yes.  Versioning CI tools by having a job that commits the CI configuration to source control every hour. Using conf...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Reproducible CI&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Can I do this with Windows servers? Yes.&lt;br /&gt;
&lt;br /&gt;
Versioning CI tools by having a job that commits the CI configuration to source control every hour.&lt;br /&gt;
Using config history plugin for Jenkins gives you history of config, but only by using the plugin.&lt;br /&gt;
&lt;br /&gt;
Has someone upgraded the compiler or patched the OS? Has that impacted the build?&lt;br /&gt;
&lt;br /&gt;
Some clients spin up a VM from an image and set the clock to a known time, leaving nothing to chance.&lt;br /&gt;
&lt;br /&gt;
What is the end goal of reproducible CI?&lt;br /&gt;
&lt;br /&gt;
Being able to bring back the CI environment if it comes away.&lt;br /&gt;
&lt;br /&gt;
Some businesses need to be able to reproduce the application years in the past.&lt;br /&gt;
If you&amp;#039;re seeing weird behavior with your application, it may be caused by the CI server, and this way you can see what was happening with the build server for a specific artifact.&lt;br /&gt;
Some clients will want to stay on the same version for years and years, so you may need to recreate a build that hasn&amp;#039;t been run in years.&lt;br /&gt;
With large and/or remote teams, being able to see who made what change and why is critical, especially if something goes wrong.&lt;br /&gt;
With CI/versioning, you can promote changes to your pipeline.&lt;br /&gt;
&lt;br /&gt;
If you can have a reproducible build system, developers can prove to themselves that what they are going to add won&amp;#039;t break the build. No &amp;quot;it works on my machine&amp;quot; excuses. &lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
* Vagrat&lt;br /&gt;
* Docker&lt;br /&gt;
&lt;br /&gt;
Is there a need for a &amp;quot;meta-pipeline&amp;quot; (pipeline for the pipeline) that builds and promotes the build system? Build systems are products, consumed by developers, and testing needs to happen before the change is pushed to prod server.&lt;br /&gt;
&lt;br /&gt;
We don&amp;#039;t hold the pipeline to the same processes we hold for the source code we&amp;#039;re building.&lt;br /&gt;
&lt;br /&gt;
Is the issue that the team is too big? Do we want our team of ten managing a build server, or do we want them delivering value to customers? Do I want 100 teams with their own build server, or do a want a couple guys managing a build server for 1,000 developers?&lt;br /&gt;
Having the small team manage their build system empowers them about the build and deployment process.&lt;br /&gt;
Having a single team manage it for a huge group of developers gets the developers out of touch with the deployment process.&lt;br /&gt;
Developers care more about getting stuff done over reproducibility -- they&amp;#039;ll install something to &amp;quot;get it to work&amp;quot; and then forget how it got there.&lt;br /&gt;
* Developers manage their server, but the slaves are rebuild nightly. &lt;br /&gt;
* All teams have their own build server, but agree on a specific deliverable type and publish it to an artifact repository. There&amp;#039;s a master build server that watches the repo and does the integration of all the components.&lt;br /&gt;
&lt;br /&gt;
Does anyone care about traceability? &lt;br /&gt;
	Getting the code is easy.&lt;br /&gt;
	What about the tests that run?&lt;br /&gt;
	How was the build server set up that day?&lt;br /&gt;
&lt;br /&gt;
We can reproduce what we built, can we reproduce how we deployed it? If we change all the build scripts? If we change what tool we used? &lt;br /&gt;
&lt;br /&gt;
Don’t do * includes if you can avoid it.&lt;br /&gt;
&lt;br /&gt;
Tool chain from checkin -&amp;gt; deployment to production&lt;br /&gt;
&lt;br /&gt;
SCM&lt;br /&gt;
git&lt;br /&gt;
svn&lt;br /&gt;
hg&lt;br /&gt;
ClearCase&lt;br /&gt;
Perforce&lt;br /&gt;
Build Server&lt;br /&gt;
“Runs the build”&lt;br /&gt;
Transform source + dependencies into an artifact. (May also run tests.)&lt;br /&gt;
Compile, link, package, test&lt;br /&gt;
Static Analysis&lt;br /&gt;
Jenkins&lt;br /&gt;
BuildForge&lt;br /&gt;
AHP&lt;br /&gt;
CruiseControl&lt;br /&gt;
Artifact repo&lt;br /&gt;
Nexus&lt;br /&gt;
Artifactory&lt;br /&gt;
S3&lt;br /&gt;
SCM&lt;br /&gt;
Leave it in the build tool&lt;br /&gt;
Push it to deployment tool&lt;br /&gt;
Infrastructure&lt;br /&gt;
Would follow the same chain to go from “source” to “image.”&lt;br /&gt;
Long lived physical environments that get set up once&lt;br /&gt;
Virtual machines that are treated like long-lived physical machines.&lt;br /&gt;
Stand up virtual instances per build&lt;br /&gt;
A person might build the machine, build the golden image, build a custom script.&lt;br /&gt;
Deploy&lt;br /&gt;
Chef/Puppet&lt;br /&gt;
Capistrano&lt;br /&gt;
uDeploy&lt;br /&gt;
Orc Deploy&lt;br /&gt;
Shell/Perl/Python/Ruby/etc scripts&lt;br /&gt;
A person does everything manually following a document&lt;br /&gt;
Database&lt;br /&gt;
Liquibase&lt;br /&gt;
Rails Migrations&lt;br /&gt;
Dacpac&lt;br /&gt;
Play Evolution&lt;br /&gt;
A person that updates the database.&lt;br /&gt;
Test&lt;br /&gt;
Performance&lt;br /&gt;
Integration&lt;br /&gt;
Unit&lt;br /&gt;
Deployment/Smoke&lt;br /&gt;
Functional&lt;br /&gt;
Load&lt;br /&gt;
Security&lt;br /&gt;
Installation/Manifest Check (make sure all expected files exist)&lt;br /&gt;
A person does everything manually following a document&lt;br /&gt;
Bees with Machine Guns&lt;br /&gt;
HP LoadRunner/WinRunner/etc&lt;br /&gt;
Cucumber&lt;br /&gt;
Selenium&lt;br /&gt;
Fitnesse&lt;br /&gt;
Spock&lt;br /&gt;
UAT / Business Signoff&lt;br /&gt;
Blue / Green deployments&lt;br /&gt;
Canary deployment&lt;br /&gt;
Person clicks a button&lt;br /&gt;
Manual signing of document&lt;br /&gt;
Deploy to Production?&lt;br /&gt;
Same as deploy to non-production&lt;br /&gt;
A person does a partial deployment&lt;br /&gt;
&lt;br /&gt;
Should a build server deploy?&lt;br /&gt;
Yes&lt;br /&gt;
Get it out there so people can use it&lt;br /&gt;
No&lt;br /&gt;
Slow tests aren’t run&lt;br /&gt;
Deploy to one environment or many?&lt;br /&gt;
&lt;br /&gt;
Conclusion: script all the things. Version all the things. You can do it on Windows.&lt;br /&gt;
Treat the systems the same way you are (should be?) treating the software going to the users.&lt;br /&gt;
It’s worth it for any size team: one person, ten people, a thousand people.&lt;/div&gt;</summary>
		<author><name>Jonny</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=CITCONNA2013Sessions&amp;diff=15343</id>
		<title>CITCONNA2013Sessions</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=CITCONNA2013Sessions&amp;diff=15343"/>
		<updated>2013-08-24T20:36:52Z</updated>

		<summary type="html">&lt;p&gt;Jonny: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CITCON NA 2013 Boston Sessions&lt;br /&gt;
&lt;br /&gt;
Back to the [[Main Page]]&lt;br /&gt;
&lt;br /&gt;
== 10:00 Topics ==&lt;br /&gt;
&lt;br /&gt;
# [[Reproducible CI]]&lt;br /&gt;
# [[From 0 percent to greater than 0 percent Test Coverage]]&lt;br /&gt;
# [[To Branch or Not to Branch?]]&lt;br /&gt;
# [[Property Based Developer Testing]]&lt;br /&gt;
# [[Test Expressivity]]&lt;br /&gt;
&lt;br /&gt;
== 11:15 Topics ==&lt;br /&gt;
&lt;br /&gt;
# [[End to end Continuous Delivery tools]]&lt;br /&gt;
# [[Test Triage and Intermittent Test techniques]]&lt;br /&gt;
# ---&lt;br /&gt;
# ---&lt;br /&gt;
# [[Managing Test Data All The Way To Production]]&lt;br /&gt;
&lt;br /&gt;
== Lunch Topics ==&lt;br /&gt;
&lt;br /&gt;
# ---&lt;br /&gt;
&lt;br /&gt;
== 2:00 Topics ==&lt;br /&gt;
&lt;br /&gt;
# [[CI Feedback &amp;amp; Metrics]]&lt;br /&gt;
# ---&lt;br /&gt;
# [[Feature Toggling Strategies]]&lt;br /&gt;
# [[CI Challenges With Multiple Branches]]&lt;br /&gt;
# ---&lt;br /&gt;
&lt;br /&gt;
== 3:15 Topics ==&lt;br /&gt;
&lt;br /&gt;
# [[NextGen CI Toolkit Wishlist]]&lt;br /&gt;
# [[Dead Sea Effect]]&lt;br /&gt;
# ---&lt;br /&gt;
# ---&lt;br /&gt;
# ---&lt;br /&gt;
&lt;br /&gt;
== 4:30 Topics ==&lt;br /&gt;
&lt;br /&gt;
# ---&lt;br /&gt;
# ---&lt;br /&gt;
# ---&lt;br /&gt;
# ---&lt;br /&gt;
# --- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Table View ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Room name&lt;br /&gt;
! 10:00&lt;br /&gt;
! 11:15&lt;br /&gt;
! 2:00&lt;br /&gt;
! 3:15&lt;br /&gt;
! 4:30&lt;br /&gt;
|-&lt;br /&gt;
| Horace Mann&lt;br /&gt;
| --- &lt;br /&gt;
| [[End to end Continuous Delivery tools]]&lt;br /&gt;
| ---&lt;br /&gt;
| ---&lt;br /&gt;
| ---&lt;br /&gt;
|-&lt;br /&gt;
| Deborah Sampson&lt;br /&gt;
| --- &lt;br /&gt;
| [[Test Triage and Intermittent Test techniques]]&lt;br /&gt;
| ---&lt;br /&gt;
| ---&lt;br /&gt;
| ---&lt;br /&gt;
|-&lt;br /&gt;
| Thomas Paul&lt;br /&gt;
| [[From 0 percent to greater than 0 percent Test Coverage]] &lt;br /&gt;
| ---&lt;br /&gt;
| [[CI Challenges With Multiple Branches]]&lt;br /&gt;
| ---&lt;br /&gt;
| ---&lt;br /&gt;
|-&lt;br /&gt;
| Abigail Adams&lt;br /&gt;
| [[Property Based Developer Testing]]&lt;br /&gt;
| ---&lt;br /&gt;
| ---&lt;br /&gt;
| ---&lt;br /&gt;
| ---&lt;br /&gt;
|-&lt;br /&gt;
| Crispus Attucks&lt;br /&gt;
| [[Test Expressivity]]&lt;br /&gt;
| [[Managing Test Data All The Way To Production]]&lt;br /&gt;
| ---&lt;br /&gt;
| ---&lt;br /&gt;
| ---&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jonny</name></author>
	</entry>
</feed>