summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonio Terceiro <asa@terceiro.xyz>2018-10-26 10:34:03 -0300
committerAntonio Terceiro <asa@terceiro.xyz>2018-10-26 10:34:03 -0300
commit4797704cdecbf4671473af502e5f6fea8eac9417 (patch)
tree32a75fd20bdfe6d4320c74fde670af4482f198d3
parentc0f4521ae2e97477e0ab1dd35b8c4c9ea9ee5c9c (diff)
add talk slides for FTSL
-rw-r--r--2018/10-26-ftsl-debian-ci/.gitignore1
-rw-r--r--2018/10-26-ftsl-debian-ci/Makefile26
-rw-r--r--2018/10-26-ftsl-debian-ci/architecture-hosts.svg469
-rw-r--r--2018/10-26-ftsl-debian-ci/ci.debian.net-debci.pngbin0 -> 130999 bytes
-rw-r--r--2018/10-26-ftsl-debian-ci/ci.debian.net.pngbin0 -> 119306 bytes
-rw-r--r--2018/10-26-ftsl-debian-ci/debci_queue_size-week.pngbin0 -> 26830 bytes
-rw-r--r--2018/10-26-ftsl-debian-ci/debconf19.pngbin0 -> 1076152 bytes
-rw-r--r--2018/10-26-ftsl-debian-ci/debian-ci.md269
-rw-r--r--2018/10-26-ftsl-debian-ci/packages-testing.pngbin0 -> 19491 bytes
-rw-r--r--2018/10-26-ftsl-debian-ci/packages-unstable.pngbin0 -> 17401 bytes
10 files changed, 765 insertions, 0 deletions
diff --git a/2018/10-26-ftsl-debian-ci/.gitignore b/2018/10-26-ftsl-debian-ci/.gitignore
new file mode 100644
index 0000000..a136337
--- /dev/null
+++ b/2018/10-26-ftsl-debian-ci/.gitignore
@@ -0,0 +1 @@
+*.pdf
diff --git a/2018/10-26-ftsl-debian-ci/Makefile b/2018/10-26-ftsl-debian-ci/Makefile
new file mode 100644
index 0000000..311d5b7
--- /dev/null
+++ b/2018/10-26-ftsl-debian-ci/Makefile
@@ -0,0 +1,26 @@
+presentation = debian-ci
+
+source = $(presentation).md
+slideshow = $(presentation)-slideshow.pdf
+handout = $(presentation).pdf
+
+PANDOC = pandoc --to beamer
+SLIDESHOW = $(PANDOC) --incremental
+HANDOUT = $(PANDOC)
+
+all: $(slideshow) $(handout)
+
+slideshow: $(slideshow)
+
+handout: $(handout)
+
+$(slideshow): $(source)
+ $(SLIDESHOW) --output $@ $<
+
+$(handout): $(source)
+ $(HANDOUT) --output $@ $<
+
+$(slideshow) $(handout): $(wildcard *.png) $(wildcard *.svg)
+
+clean:
+ $(RM) $(slideshow) $(handout)
diff --git a/2018/10-26-ftsl-debian-ci/architecture-hosts.svg b/2018/10-26-ftsl-debian-ci/architecture-hosts.svg
new file mode 100644
index 0000000..cb30de2
--- /dev/null
+++ b/2018/10-26-ftsl-debian-ci/architecture-hosts.svg
@@ -0,0 +1,469 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="1024"
+ height="768"
+ viewBox="0 0 270.93333 203.20001"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.3 (2405546, 2018-03-11)"
+ sodipodi:docname="architecture-hosts.svg">
+ <defs
+ id="defs2">
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker5010"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path5008"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ transform="scale(0.8) rotate(180) translate(12.5,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker4902"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path4900"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ transform="scale(0.8) rotate(180) translate(12.5,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker4764"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path4762"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ transform="scale(0.8) rotate(180) translate(12.5,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker4668"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path4666"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ transform="scale(0.8) rotate(180) translate(12.5,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker4506"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path4504"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ transform="scale(0.8) rotate(180) translate(12.5,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker4290"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path4288"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ transform="scale(0.8) rotate(180) translate(12.5,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker3489"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path3487"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ transform="scale(0.8) rotate(180) translate(12.5,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible;"
+ id="marker3148"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend">
+ <path
+ transform="scale(0.8) rotate(180) translate(12.5,0)"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ id="path3146" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible;"
+ id="marker3096"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend">
+ <path
+ transform="scale(0.8) rotate(180) translate(12.5,0)"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ id="path3094" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible;"
+ id="marker2998"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend">
+ <path
+ transform="scale(0.8) rotate(180) translate(12.5,0)"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ id="path2996" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible;"
+ id="marker2924"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend"
+ inkscape:collect="always">
+ <path
+ transform="scale(0.8) rotate(180) translate(12.5,0)"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ id="path2922" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lstart"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Lstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path910"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow1Lend"
+ style="overflow:visible;"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path895"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ transform="scale(0.8) rotate(180) translate(12.5,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-3"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path895-6"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker2924-9"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2922-1" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker2924-7"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2922-0" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.71263105"
+ inkscape:cx="705.17122"
+ inkscape:cy="392.82843"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="px"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1009"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Camada 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-93.799964)">
+ <g
+ id="g3235"
+ transform="matrix(0.99255776,0,0,0.99255776,6.3654097,13.994378)">
+ <g
+ id="g832"
+ transform="translate(79.634423,52.947685)">
+ <rect
+ y="147.79524"
+ x="-3.0988455"
+ height="23.604994"
+ width="108.12363"
+ id="rect826"
+ style="opacity:0.75;vector-effect:none;fill:#e9b96e;fill-opacity:1;stroke:#8f5902;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" />
+ <text
+ id="text830"
+ y="163.23109"
+ x="6.1656995"
+ style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ style="stroke-width:0.26458332"
+ y="163.23109"
+ x="6.1656995"
+ id="tspan828"
+ sodipodi:role="line">AMQP: requests</tspan></text>
+ </g>
+ <g
+ transform="translate(79.634423,86.456921)"
+ id="g840">
+ <rect
+ style="opacity:0.75;vector-effect:none;fill:#e9b96e;fill-opacity:1;stroke:#8f5902;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
+ id="rect834"
+ width="108.15569"
+ height="23.5905"
+ x="-3.0988455"
+ y="147.79524" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="6.1656995"
+ y="163.23109"
+ id="text838"><tspan
+ sodipodi:role="line"
+ id="tspan836"
+ x="6.1656995"
+ y="163.23109"
+ style="stroke-width:0.26458332">AMQP: results</tspan></text>
+ </g>
+ </g>
+ <g
+ id="g19"
+ transform="matrix(0.99255776,0,0,0.99255776,15.013826,-25.813501)">
+ <rect
+ y="147.79524"
+ x="-3.0988455"
+ height="23.590502"
+ width="56.831661"
+ id="rect10"
+ style="opacity:0.75;vector-effect:none;fill:#edd400;fill-opacity:1;stroke:#c4a000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" />
+ <text
+ id="text14"
+ y="163.23109"
+ x="6.1656995"
+ style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ style="stroke-width:0.26458332"
+ y="163.23109"
+ x="6.1656995"
+ id="tspan12"
+ sodipodi:role="line">master</tspan></text>
+ </g>
+ <g
+ id="g5300"
+ transform="matrix(0.99255776,0,0,0.99255776,-8.3385301,16.824264)">
+ <g
+ transform="translate(102.09336,-42.957465)"
+ id="g832-3">
+ <rect
+ style="opacity:0.75;vector-effect:none;fill:#caf2a2;fill-opacity:1;stroke:#4e9a06;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
+ id="rect826-6"
+ width="170.86885"
+ height="49.33316"
+ x="-3.6239102"
+ y="147.79524" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="4.3279734"
+ y="193.15977"
+ id="text830-0"><tspan
+ sodipodi:role="line"
+ id="tspan828-6"
+ x="4.3279734"
+ y="193.15977"
+ style="font-size:5.64444447px;stroke-width:0.26458332">workers</tspan></text>
+ </g>
+ <g
+ id="g886"
+ transform="translate(159.79522,14.565113)">
+ <g
+ id="g848"
+ transform="translate(-49.751079,-49.379806)">
+ <rect
+ y="147.79524"
+ x="-3.0988455"
+ height="23.590502"
+ width="56.831661"
+ id="rect842"
+ style="opacity:0.75;vector-effect:none;fill:#8ae234;fill-opacity:1;stroke:#4e9a06;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" />
+ <text
+ id="text846"
+ y="163.23109"
+ x="6.1656995"
+ style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ style="stroke-width:0.26458332"
+ y="163.23109"
+ x="6.1656995"
+ id="tspan844"
+ sodipodi:role="line">worker</tspan></text>
+ </g>
+ <g
+ transform="translate(46.84442,-49.379806)"
+ id="g856">
+ <rect
+ style="opacity:0.75;vector-effect:none;fill:#8ae234;fill-opacity:1;stroke:#4e9a06;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
+ id="rect850"
+ width="56.831661"
+ height="23.590502"
+ x="-3.0988455"
+ y="147.79524" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="6.1656995"
+ y="163.23109"
+ id="text854"><tspan
+ sodipodi:role="line"
+ id="tspan852"
+ x="6.1656995"
+ y="163.23109"
+ style="stroke-width:0.26458332">worker</tspan></text>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="18.817455"
+ y="112.73746"
+ id="text864"><tspan
+ sodipodi:role="line"
+ id="tspan862"
+ x="18.817455"
+ y="112.73746"
+ style="stroke-width:0.26458332">...</tspan></text>
+ </g>
+ </g>
+ <path
+ inkscape:connector-curvature="0"
+ id="path2024"
+ d="M 135.05699,208.2007 V 174.32551"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5252285;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="ccsc"
+ inkscape:connector-curvature="0"
+ id="path2448"
+ d="M 74.081624,259.27408 H 52.71419 c 0,0 -27.910397,-3.6481 -27.389245,-35.17809 0.521153,-31.53 0,-73.22255 0,-73.22255"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5252285;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker2924)" />
+ <path
+ sodipodi:nodetypes="ccsc"
+ inkscape:connector-curvature="0"
+ id="path2450"
+ d="m 229.78132,174.58607 v 56.80612 c 0,0 2.08021,26.76224 -18.24049,27.64574 -5.9933,0.26058 -17.07195,0 -17.07195,0"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5252285;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3096)" />
+ <path
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5252285;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3489)"
+ d="m 44.115099,150.35229 v 48.98875 c 0,0 -0.260578,26.05785 13.289502,26.05785 H 79.90919"
+ id="path3405"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccsc" />
+ </g>
+</svg>
diff --git a/2018/10-26-ftsl-debian-ci/ci.debian.net-debci.png b/2018/10-26-ftsl-debian-ci/ci.debian.net-debci.png
new file mode 100644
index 0000000..6e4bf7e
--- /dev/null
+++ b/2018/10-26-ftsl-debian-ci/ci.debian.net-debci.png
Binary files differ
diff --git a/2018/10-26-ftsl-debian-ci/ci.debian.net.png b/2018/10-26-ftsl-debian-ci/ci.debian.net.png
new file mode 100644
index 0000000..049d411
--- /dev/null
+++ b/2018/10-26-ftsl-debian-ci/ci.debian.net.png
Binary files differ
diff --git a/2018/10-26-ftsl-debian-ci/debci_queue_size-week.png b/2018/10-26-ftsl-debian-ci/debci_queue_size-week.png
new file mode 100644
index 0000000..d142093
--- /dev/null
+++ b/2018/10-26-ftsl-debian-ci/debci_queue_size-week.png
Binary files differ
diff --git a/2018/10-26-ftsl-debian-ci/debconf19.png b/2018/10-26-ftsl-debian-ci/debconf19.png
new file mode 100644
index 0000000..ea55d95
--- /dev/null
+++ b/2018/10-26-ftsl-debian-ci/debconf19.png
Binary files differ
diff --git a/2018/10-26-ftsl-debian-ci/debian-ci.md b/2018/10-26-ftsl-debian-ci/debian-ci.md
new file mode 100644
index 0000000..040c6e8
--- /dev/null
+++ b/2018/10-26-ftsl-debian-ci/debian-ci.md
@@ -0,0 +1,269 @@
+% The Debian Continuous Integration project
+% Antonio Terceiro
+% October 26th, 2018
+
+# Introduction
+
+## About me
+
+* Free Software Developer
+* Debian Contributor since 2005, official Developer since 2011
+ (Debian CI, Ruby, LXC)
+* QA Engineer at [Linaro Limited](https://www.linaro.org/)
+* PhD in Computer Science (UFBA, 2012)
+
+## About Debian
+
+* Association of individuals who have made common cause to create a free
+ operating system
+* Turned 25 on August 16th, 2018
+* ~1500 [contributors](https://contributors.debian.org/) in 2018 so far
+* No central corporate owner
+* "The Universal Operating system"
+* Several derivative distributions
+* Main product: Debian GNU/Linux
+ (but also GNU/kfreeBSD and GNU/Hurd unofficial ports)
+
+------------------------------------------------------------------------
+
+![Debconf19 in Curitiba!](debconf19.png)\
+
+## The role of distributions
+
+* Provide a convenient user experience for managing and using a system
+* Be a bridge between upstream developers and users
+ * Get upstream software to users
+ * Integrate different upstream components
+ * Triage and forward feedback and patches back to upstream
+
+## How Debian works
+
+* *unstable*: receives updates directly from developers
+* *testing*: updates migrate from *unstable*
+ * package has no release-critical bugs
+ * all dependencies are also eligible for migration
+ * **package has spent at least 2/5/10 days in unstable**
+ * migration is automated, and automatic
+* *stable*: every ~2 years *testing* becomes *stable*
+* Freeze: unstable → testing migration is no longer automatic
+
+## Distribution QA
+
+* "If it builds, it works"
+ * Common attitude in large transitions (libraries, toolchains)
+ * Doesn't work always
+* Sometimes focused on critical paths
+ * installation is a big concern
+ * less common use cases are not prioritized
+* Sometimes general QA is relegated to "QA people"
+
+## Automated tests
+
+* Undeniably useful
+* Test-Driven Development (TDD)
+* Regression testing
+* Different levels
+ * Unit testing
+ * Integration testing
+ * Functional testing
+
+## Putting it all together
+
+* **"package has spent at least 2/5/10 days in unstable"**
+ * depends on the package having enough users in *unstable*
+ * depends on users finding bugs soon enough
+* we want *testing* to be safe for everyday use, and to always be in a
+ releaseable state
+* Can we find bugs ealier?
+* Can we avoid having the most basic bugs from blowing up on users' faces?
+* Let's apply automated testing
+
+# Debian Continuous Integration Project
+
+## History
+
+* 2006: first prototype of `autopkgtest`
+* early 2014: initial hacking on Debian CI
+* mid 2014: two GSOC interns working on Debian CI
+* late 2015: distributed architecture
+* mid 2017: initial discussions about testing migration integration
+* mid 2018: testing migration uses Debian CI test results as input
+
+------------------------------------------------------------------------
+
+![Number of packages tested in *unstable*](packages-unstable.png)
+
+------------------------------------------------------------------------
+
+![Number of packages tested in *testing*](packages-testing.png)
+
+## Testing migration
+
+* No regressions: package migrates *faster*
+ * tests for package pass
+ * tests for all packages that depend on it also pass
+* Regressions: package migrates *slower*
+* For the future, the plan is to completely *block* migration on regressions
+
+## The platform: tools
+
+* `autopkgtest`: the test runner tool
+* `autodep8`: tool to generate test specifications for well-known types of
+ packages
+* `debci`: the CI platform itself
+ * can be installed locally by any user
+ * official instance running at [ci.debian.net](https://ci.debian.net/)
+* `debian-ci-config`: configuration management repository for ci.debian.net
+ (not a package)
+* all source code available at
+ [salsa.debian.org/ci-team](https://salsa.debian.org/ci-team)
+
+------------------------------------------------------------------------
+
+## The platform: web UI
+
+* mostly static HTML
+ * pro: no performance concerns
+ * con: not up to date all the time
+* HTTP API
+
+------------------------------------------------------------------------
+
+![https://ci.debian.net/](ci.debian.net.png)
+
+------------------------------------------------------------------------
+
+![https://ci.debian.net/packages/d/debci/unstable/amd64/](ci.debian.net-debci.png)
+
+------------------------------------------------------------------------
+
+![Architecture](architecture-hosts.svg)
+
+## The platform: hosting
+
+
+* 1 master node
+* 10 worker nodes, running tests for the `amd64` architecture
+* ci.debian.net is kindly hosted on AWS on a Debian account with credits
+ sponsored by Amazon.
+
+------------------------------------------------------------------------
+
+![Test job queue](debci_queue_size-week.png)
+
+
+## The platform: test execution environment
+
+* standard autopkgtest operation
+ * developers can easily reproduce the exact same test run on their local
+ machine
+* tests are run in LXC containers
+ * full system container (*vs* application containers)
+ * clean system: nothing installed besides what the test itself specifies
+
+# The Developer Point of view (writing tests)
+
+## Basic concepts
+
+* Tests are part of the source package
+ * every maintainer is responsible for his/her own testing
+* Specification: DEP-8
+* Tests defined in `debian/tests/control`
+* Source metadata (`debian/control`) must provide a `Testsuite:` field
+ * added automatically if `debian/tests/control` exists by `dpkg` >= 1.17.11
+* Tests must exercise the package *installed* on a system, i.e. it should
+ not test the *source tree*.
+
+## Example
+
+```
+$ grep Source: debian/control
+Source: auto-apt-proxy
+$ cat debian/tests/control
+Tests: apt-integration
+Depends: @, apt-cacher-ng
+
+Test-Command: clitest debian/tests/apt-cacher-ng.txt
+Depends: @, clitest, apt-cacher-ng
+
+[...]
+
+Tests: remove, reinstall
+Restrictions: needs-root
+Depends: @, clitest
+$
+```
+
+## autopkgtest
+
+### virt: LXC
+
+```
+$ autopkgtest --no-built-packages . \
+ -- lxc --sudo autopkgtest-unstable-amd64
+```
+
+Runs the tests from the source package in the current directory (`.`), but
+using binary packages from the repository.
+
+### virt: null
+
+```
+$ autopkgtest --no-built-packages . -- null
+```
+
+Runs the tests from the source package in the current directory (`.`) againt
+the *current system* ("null" virtualization). Requires that the needed packages
+are already installed.
+
+## autodep8
+
+* Solves the problem of several similar packages having identical
+ `debian/tests/control` (e.g. "Ruby libraries", "Kernel modules using DKMS")
+* When a package does not have an explicit `debian/tests/control`,
+ `autopkgtest` calls `autodep8` to produce one.
+* Instead of duplicating `debian/tests/control`, packages declare a special
+ value for their `Testsuite:` field and let autodep8 produce the test
+ specification.
+* `autodep8` can also detect supported package types by looking at the contents
+ of packages
+* Currently supported: Ruby, Perl, Python*, NodeJS*, DKMS, R, Emacs Lisp, Go,
+ Octave
+
+## autodep8: example
+
+
+```
+$ grep Source: debian/control
+Source: ruby-json
+$ cat debian/tests/control
+cat: debian/tests/control: No such file or directory
+$ autodep8
+Test-Command: gem2deb-test-runner --autopkgtest
+ --check-dependencies 2>&1
+Depends: @, ruby-test-unit, gem2deb-test-runner
+```
+
+## More information on writing tests
+
+Debian CI documentation:
+[https://ci.debian.net/doc/](https://ci.debian.net/doc/)
+
+
+Patterns for Writing As-Installed Tests for Debian Packages
+[https://deb.li/pattestdeb](https://deb.li/pattestdeb)
+
+# Conclusions
+
+## Lessons
+
+* Adoption *takes time*
+* Improvements to the system are always needed
+* Using the very same tools that developers can use directly makes everyone's
+ lifes easier.
+* Most of the ideas (and maybe even some of the tools) presented here could be
+ applied to other distributions. I would love to chat about that.
+
+## Thank you
+
+Contact: terceiro@debian.org
diff --git a/2018/10-26-ftsl-debian-ci/packages-testing.png b/2018/10-26-ftsl-debian-ci/packages-testing.png
new file mode 100644
index 0000000..554fd5f
--- /dev/null
+++ b/2018/10-26-ftsl-debian-ci/packages-testing.png
Binary files differ
diff --git a/2018/10-26-ftsl-debian-ci/packages-unstable.png b/2018/10-26-ftsl-debian-ci/packages-unstable.png
new file mode 100644
index 0000000..2a1fd03
--- /dev/null
+++ b/2018/10-26-ftsl-debian-ci/packages-unstable.png
Binary files differ