summaryrefslogtreecommitdiff
path: root/ci-prod.ick
blob: c5cc3903a10b74929d9268de40dec1cfc064beb2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
projects:
  - project: buster-build-essential
    parameters:
      debian_codename: buster
      packages:
        - apt-transport-https
        - build-essential
        - curl
        - devscripts
        - git
        - jq
        - python3
      artifact_name: buster-build-essential
      notify: [liw@liw.fi]
    pipelines:
      - ick/build_debian_systree

  - project: bullseye-website
    parameters:
      debian_codename: bullseye
      packages:
        - apt-transport-https
        - git
        - graphviz
        - ikiwiki
        - jq
        - libimage-magick-perl
        - librsvg2-bin
        - make
        - pandoc
        - pandoc-citeproc
        - pcal
        - python3
        - python3-yaml
        - texlive-fonts-recommended
        - texlive-latex-base
        - texlive-latex-recommended
      artifact_name: bullseye-website
      notify: [liw@liw.fi]
    pipelines:
      - ick/build_debian_systree

  - project: bullseye-build-essential
    parameters:
      debian_codename: bullseye
      packages:
        - apt-transport-https
        - build-essential
        - curl
        - devscripts
        - git
        - jq
        - python3
      artifact_name: bullseye-build-essential
      notify: [liw@liw.fi]
    pipelines:
      - ick/build_debian_systree

  - project: dummy-website
    parameters: &website_params
      rsync_src: html
      systree_name: bullseye-website
      notify: [liw@liw.fi]
      apt_sources:
      - url: http://ci-prod-controller.vm.liw.fi/debian
        dist: unstable-ci
        section: main
      apt_signing_pub_keys:
          ci-prod: |
            -----BEGIN PGP PUBLIC KEY BLOCK-----

            mQINBFrLO7kBEADdz6mHstYmKU5Dp6OSjxWtWaqTDOX1sJdmmaIK/9EKVIH0Maxp
            5kvVO5G6mULLAjv/kLG0MxasHPrq8I2A/y8AqKAGVL8QelwLjQMIFZ30/VbGQPHS
            +T5TZXEnoQtNce1GUhFwJ38ZyjjwHBFV9tSec7rZ2Q3YeM3nNnGPf6DacXGfEOPO
            HIN4sXAN2hzNXNjKRzTIvxQseb6nr7afUh/SlZ3yhQOCrIzmYlD7tP9WJe7ofL0p
            JY4pDQYw8rT6nC2BE/ioemh84kERCT1vCe+OVFlSRuMlqfEv+ZpKQ+itOmPDQ/lM
            jpUm1K2hrW/lWpxT/ZxHKo/w1K36J5WshgMZxfUu5BMCL9LMqMcrXNhNjDMfxDMM
            3yBPOvQ4ls6fecOZ/bsFo1p8VzMk/w/eG8vPs5yuNa5XxN95yFMXoOHGb5Xbu8D4
            6yiW+Af70LbiSNpGdmNdneiGB2fY38NxBukPw5u3S5qG8HedSmMr1RvSr5kHoAAe
            UbOY+BYaaKsTAT7+1skUW1o3FJSqoRKCHAzTsMWC6zzhR8hRn7jVrrguH1hGbqq5
            TZSCFQZExuTJ7uXrTLG0WoBXIjB5wWNcSeXn8myUWYB51nJNF4tJBouZOz9JwWGl
            kiAQkrHnBttLQWdW9FyjbIoTZMtpvVx+m6ObGTGdGL1cNlLAvWprMXGc+QARAQAB
            tDJJY2sgQVBUIHJlcG9zaXRvcnkgc2lnbmluZyBrZXkgKDIwMTgpIDxsaXdAbGl3
            LmZpPokCTgQTAQgAOBYhBKL1uyDoXyxUH3O717Wr+TZVS6PGBQJayzu5AhsDBQsJ
            CAcCBhUICQoLAgQWAgMBAh4BAheAAAoJELWr+TZVS6PGB5QQANTcikhRUHwt9N4h
            dGc/Hp6CbqdshMoWlwpFskttoVDxQG5OAobuZl5XyzGcmja1lT85RGkZFfbca0IZ
            LnXOLLSAu51QBkXNaj4OhjK/0uQ+ITrvL6RQSXNgHiUTR/W2XD1GIUq6nBqe2GSN
            31S1baYKKVj5QIMsi7Dq8ls3BBXuPCE+xTSaNmGWjes2t9pPidcRvxsksCLY1qgw
            P1GFXBeMkBQ29kBP87SUL15SIk7OiQLlEURCy5iRls5rt/YEsdEpRWIb0Tm5Nrjv
            2M3VM+iBhfNXTwj0rJ34mlycF1qQmA7YcTEobT7z587GPY0VWzBpQUnEQj7rQWPM
            cDYY0b+I6kQ8VKOaL4wVAtE98d7HzFIrIrwhTKufnrWrVDPYsmLZ+LPC1jiF7JBD
            SR6Vftb+SdDR9xoE1yRuXbC6IfoW+5/qQNrdQ2mm9BFw5jOonBqchs18HTTf3441
            6SWwP9fY3Vi+IZphPPi0Gf85oMStgnv/Wnw6LacEL32ek39Desero/D8iGLZernK
            Q2mC9mua5A/bYGVhsNWyURNFkKdbFa+/wW3NfdKYyZnsSfo+jJ2luNewrhAY7Kod
            GWXTer9RxzTGA3EXFGvNr+BBOOxSj0SfWTl0Olo7J5dnxof+jLAUS1VHpceHGHps
            GSJSdir7NkZidgwoCPA7BTqsb5LN
            =dXB0
            -----END PGP PUBLIC KEY BLOCK-----
    pipelines: &website_pipelines 
      - ick/setup_container
      - ick/add_apt_signing_keys
      - ick/add_apt_sources
      - ick/restore_workspace
      - ick/get_sources
      - ikiwiki
      - ick/save_workspace

  - project: dummy-program
    parameters: &dummy_program_params
      DEBFULLNAME: Lars Wirzenius
      DEBEMAIL: liw@liw.fi
      apt_sources:
        - url: http://ci-prod-controller.vm.liw.fi/debian
          dist: unstable-ci
          section: main
      rsync_src: publish
      rsync_target: ickliwfi@http.liw.fi:/srv/http/unused
      systree_name: bullseye-build-essential
      distribution_ci: unstable-ci
      distribution_rel: unstable
      notify: [liw@liw.fi]
      release_signing_keys:
        - |
          -----BEGIN PGP PUBLIC KEY BLOCK-----

          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
          UWEJ
          =ZU/n
          -----END PGP PUBLIC KEY BLOCK-----
      apt_signing_pub_keys:
        code.liw.fi: |
          -----BEGIN PGP PUBLIC KEY BLOCK-----

          mQINBFrLO7kBEADdz6mHstYmKU5Dp6OSjxWtWaqTDOX1sJdmmaIK/9EKVIH0Maxp
          5kvVO5G6mULLAjv/kLG0MxasHPrq8I2A/y8AqKAGVL8QelwLjQMIFZ30/VbGQPHS
          +T5TZXEnoQtNce1GUhFwJ38ZyjjwHBFV9tSec7rZ2Q3YeM3nNnGPf6DacXGfEOPO
          HIN4sXAN2hzNXNjKRzTIvxQseb6nr7afUh/SlZ3yhQOCrIzmYlD7tP9WJe7ofL0p
          JY4pDQYw8rT6nC2BE/ioemh84kERCT1vCe+OVFlSRuMlqfEv+ZpKQ+itOmPDQ/lM
          jpUm1K2hrW/lWpxT/ZxHKo/w1K36J5WshgMZxfUu5BMCL9LMqMcrXNhNjDMfxDMM
          3yBPOvQ4ls6fecOZ/bsFo1p8VzMk/w/eG8vPs5yuNa5XxN95yFMXoOHGb5Xbu8D4
          6yiW+Af70LbiSNpGdmNdneiGB2fY38NxBukPw5u3S5qG8HedSmMr1RvSr5kHoAAe
          UbOY+BYaaKsTAT7+1skUW1o3FJSqoRKCHAzTsMWC6zzhR8hRn7jVrrguH1hGbqq5
          TZSCFQZExuTJ7uXrTLG0WoBXIjB5wWNcSeXn8myUWYB51nJNF4tJBouZOz9JwWGl
          kiAQkrHnBttLQWdW9FyjbIoTZMtpvVx+m6ObGTGdGL1cNlLAvWprMXGc+QARAQAB
          tDJJY2sgQVBUIHJlcG9zaXRvcnkgc2lnbmluZyBrZXkgKDIwMTgpIDxsaXdAbGl3
          LmZpPokCTgQTAQgAOBYhBKL1uyDoXyxUH3O717Wr+TZVS6PGBQJayzu5AhsDBQsJ
          CAcCBhUICQoLAgQWAgMBAh4BAheAAAoJELWr+TZVS6PGB5QQANTcikhRUHwt9N4h
          dGc/Hp6CbqdshMoWlwpFskttoVDxQG5OAobuZl5XyzGcmja1lT85RGkZFfbca0IZ
          LnXOLLSAu51QBkXNaj4OhjK/0uQ+ITrvL6RQSXNgHiUTR/W2XD1GIUq6nBqe2GSN
          31S1baYKKVj5QIMsi7Dq8ls3BBXuPCE+xTSaNmGWjes2t9pPidcRvxsksCLY1qgw
          P1GFXBeMkBQ29kBP87SUL15SIk7OiQLlEURCy5iRls5rt/YEsdEpRWIb0Tm5Nrjv
          2M3VM+iBhfNXTwj0rJ34mlycF1qQmA7YcTEobT7z587GPY0VWzBpQUnEQj7rQWPM
          cDYY0b+I6kQ8VKOaL4wVAtE98d7HzFIrIrwhTKufnrWrVDPYsmLZ+LPC1jiF7JBD
          SR6Vftb+SdDR9xoE1yRuXbC6IfoW+5/qQNrdQ2mm9BFw5jOonBqchs18HTTf3441
          6SWwP9fY3Vi+IZphPPi0Gf85oMStgnv/Wnw6LacEL32ek39Desero/D8iGLZernK
          Q2mC9mua5A/bYGVhsNWyURNFkKdbFa+/wW3NfdKYyZnsSfo+jJ2luNewrhAY7Kod
          GWXTer9RxzTGA3EXFGvNr+BBOOxSj0SfWTl0Olo7J5dnxof+jLAUS1VHpceHGHps
          GSJSdir7NkZidgwoCPA7BTqsb5LN
          =dXB0
          -----END PGP PUBLIC KEY BLOCK-----
        ci-prod: |
          -----BEGIN PGP PUBLIC KEY BLOCK-----

          mQINBFrLO7kBEADdz6mHstYmKU5Dp6OSjxWtWaqTDOX1sJdmmaIK/9EKVIH0Maxp
          5kvVO5G6mULLAjv/kLG0MxasHPrq8I2A/y8AqKAGVL8QelwLjQMIFZ30/VbGQPHS
          +T5TZXEnoQtNce1GUhFwJ38ZyjjwHBFV9tSec7rZ2Q3YeM3nNnGPf6DacXGfEOPO
          HIN4sXAN2hzNXNjKRzTIvxQseb6nr7afUh/SlZ3yhQOCrIzmYlD7tP9WJe7ofL0p
          JY4pDQYw8rT6nC2BE/ioemh84kERCT1vCe+OVFlSRuMlqfEv+ZpKQ+itOmPDQ/lM
          jpUm1K2hrW/lWpxT/ZxHKo/w1K36J5WshgMZxfUu5BMCL9LMqMcrXNhNjDMfxDMM
          3yBPOvQ4ls6fecOZ/bsFo1p8VzMk/w/eG8vPs5yuNa5XxN95yFMXoOHGb5Xbu8D4
          6yiW+Af70LbiSNpGdmNdneiGB2fY38NxBukPw5u3S5qG8HedSmMr1RvSr5kHoAAe
          UbOY+BYaaKsTAT7+1skUW1o3FJSqoRKCHAzTsMWC6zzhR8hRn7jVrrguH1hGbqq5
          TZSCFQZExuTJ7uXrTLG0WoBXIjB5wWNcSeXn8myUWYB51nJNF4tJBouZOz9JwWGl
          kiAQkrHnBttLQWdW9FyjbIoTZMtpvVx+m6ObGTGdGL1cNlLAvWprMXGc+QARAQAB
          tDJJY2sgQVBUIHJlcG9zaXRvcnkgc2lnbmluZyBrZXkgKDIwMTgpIDxsaXdAbGl3
          LmZpPokCTgQTAQgAOBYhBKL1uyDoXyxUH3O717Wr+TZVS6PGBQJayzu5AhsDBQsJ
          CAcCBhUICQoLAgQWAgMBAh4BAheAAAoJELWr+TZVS6PGB5QQANTcikhRUHwt9N4h
          dGc/Hp6CbqdshMoWlwpFskttoVDxQG5OAobuZl5XyzGcmja1lT85RGkZFfbca0IZ
          LnXOLLSAu51QBkXNaj4OhjK/0uQ+ITrvL6RQSXNgHiUTR/W2XD1GIUq6nBqe2GSN
          31S1baYKKVj5QIMsi7Dq8ls3BBXuPCE+xTSaNmGWjes2t9pPidcRvxsksCLY1qgw
          P1GFXBeMkBQ29kBP87SUL15SIk7OiQLlEURCy5iRls5rt/YEsdEpRWIb0Tm5Nrjv
          2M3VM+iBhfNXTwj0rJ34mlycF1qQmA7YcTEobT7z587GPY0VWzBpQUnEQj7rQWPM
          cDYY0b+I6kQ8VKOaL4wVAtE98d7HzFIrIrwhTKufnrWrVDPYsmLZ+LPC1jiF7JBD
          SR6Vftb+SdDR9xoE1yRuXbC6IfoW+5/qQNrdQ2mm9BFw5jOonBqchs18HTTf3441
          6SWwP9fY3Vi+IZphPPi0Gf85oMStgnv/Wnw6LacEL32ek39Desero/D8iGLZernK
          Q2mC9mua5A/bYGVhsNWyURNFkKdbFa+/wW3NfdKYyZnsSfo+jJ2luNewrhAY7Kod
          GWXTer9RxzTGA3EXFGvNr+BBOOxSj0SfWTl0Olo7J5dnxof+jLAUS1VHpceHGHps
          GSJSdir7NkZidgwoCPA7BTqsb5LN
          =dXB0
          -----END PGP PUBLIC KEY BLOCK-----
    pipelines: &deb_ci_pipelines
      - ick/setup_container
      - ick/add_apt_signing_keys
      - ick/add_apt_sources
      - ick/restore_workspace
      - remove_debs_from_workspace
      - ick/get_sources
      - ick/install_debian_build_dependencies
      - ick/build_deb_ci
      - build_deb_releases
      - ick/upload_debs
      - ick/save_workspace

  - project: dummy-rust-checked-program
    pipelines: &deb_ci_rustup_with_check_pipelines
      - ick/setup_container
      - ick/add_apt_signing_keys
      - ick/add_apt_sources
      - ick/restore_workspace
      - remove_debs_from_workspace
      - ick/get_sources
      - rustup
      - ick/install_debian_build_dependencies
      - rust_run_check_if_there
      - build_deb_ci_with_rustup_rust
      - build_deb_releases
      - ick/upload_debs
      - format_subplots
      - ick/save_workspace

  - project: dummy-rust-unchecked-program
    pipelines: &deb_ci_rustup_without_check_pipelines
      - ick/setup_container
      - ick/add_apt_signing_keys
      - ick/add_apt_sources
      - ick/restore_workspace
      - remove_debs_from_workspace
      - ick/get_sources
      - rustup
      - ick/install_debian_build_dependencies
      - build_deb_ci_with_rustup_rust
      - build_deb_releases
      - ick/upload_debs
      - format_subplots
      - ick/save_workspace

  - project: obnam-benchmark-results
    parameters:
      <<: *dummy_program_params
      sources:
        - name: code
          repo: git://git.liw.fi/obnam-benchmark-results
          ref: main
          location: src
      rsync_target: ickliwfi@http.liw.fi:/srv/http/doc.obnam.org/obnam-benchmark-results
      workspace_name: obnam-benchmark-results
    pipelines:
      - ick/setup_container
      - ick/add_apt_signing_keys
      - ick/add_apt_sources
      - ick/restore_workspace
      - ick/get_sources
      - generate_obnam_benchmark_report
      - ick/save_workspace

pipelines:

  - pipeline: ikiwiki
    parameters:
      - sources
      - rsync_src
      - rsync_target
    actions:
      - where: container
        shell: |
          # Install Subplot.
          apt-get install -y pandoc-filter-diagram

          # "Install" the Pandoc plugin so ikiwiki can find it
          mkdir -p ikiwiki/IkiWiki/Plugin
          cp ikiwiki-pandoc/pandoc.pm ikiwiki/IkiWiki/Plugin

          if [ -e build ]
          then
              (cd build && git pull)
              opt=--refresh
          else
              git clone .mirrors/source build
              opt=
              if [ -e build/git-mtime.sh ]
              then
                (cd build && bash -x git-mtime.sh)
              fi
          fi
          (set -eu
           cd build
           git show
           # Set file mtime from its latest git commit time
           git ls-tree -r -t --full-name --name-only -z HEAD |
             xargs -0 -i'{}' -n1 sh -c 'touch -d "$(git log --pretty=format:%cI -1 HEAD -- "{}")" "{}"' --
          find -ls
          )

          cp build/ikiwiki.setup build.setup
          sed -i '/srcdir:/d' build.setup
          sed -i '/destdir:/d' build.setup
          echo 'srcdir: /workspace/build' >> build.setup
          echo 'destdir: /workspace/html' >> build.setup

          ikiwiki --verbose --setup build.setup --libdir /workspace/ikiwiki $opt
      - action: rsync
        where: host

  - pipeline: subplots
    parameters:
      - sources
      - rsync_src
      - rsync_target
    actions:
      - where: container
        shell: |
          apt-get install -y subplot plantuml
          command -v javac
          mkdir -p html
          cd src
          ls -la
          make
          find . -maxdepth 1 -name '*.html' -o -name '*.pdf' |
            while read file; do mv "$file" ../html; done

      - action: rsync
        where: host

  - pipeline: rustup
    actions:
      - where: container
        shell: |
          echo Installing Rust with rustup

          # Install Rust into the workspace so that it's preserved.
          export HOME=/workspace
          export PATH="$HOME/.cargo/bin:$PATH"

          if command -v rustup > /dev/null
          then
              echo "Rustup installed, checking if it's time to update"
              touch -d yesterday rustup-timestamp
              if [ "$HOME/.cargo/bin/rustc" -ot rustup-timestamp ]
              then
                  rustup update
              else
                  echo nothing to do to update Rust with rustup
              fi
          else
              echo "Rustup NOT installed, installing it"
              curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > rustup.sh
              sh rustup.sh -y
          fi

  - pipeline: format_subplots
    parameters:
      - rsync_src
      - rsync_target
    actions:
      - where: container
        shell: |
          apt-get install -y \
              texlive-latex-base \
              texlive-latex-recommended \
              texlive-fonts-recommended \
              plantuml

          mkdir -p /workspace/publish

          # In case we're building Subplot itself, add the Rust
          # target/debug directory to $PATH.
          PATH="/workspace/src/target/debug:$PATH"

          opts="--resources $(pwd)/src/share"
          output=/workspace/publish
          find src -name "*.subplot" |
              grep -Fv .gitlab/ |
              while read file
              do
                  base="$(basename "$file" .subplot)"
                  (
                      cd "$(dirname "$file")"
                      if subplot $opts metadata --merciful "$base.subplot" | awk '/^title:/ && NF > 1' | grep .
                      then
                          subplot $opts docgen --merciful "$base.subplot" -o "$output/$base.html"
                      fi
                  )
              done
          find /workspace/publish -type f -exec chmod 0644 '{}' +
          find /workspace/publish -ls

      - where: host
        action: rsync

  - pipeline: build_deb_ci_with_rustup_rust
    parameters:
      - sources
      - distribution_ci
    actions:
      - where: container
        shell: |
          echo build_deb_ci_with_rustup_rust

          export PATH="/workspace/.cargo/bin:$PATH"
          export HOME=/workspace
          export TMPDIR=/workspace

          which cargo
          which rustc
          rustup default stable
          rustc --version
          cargo --version
          command -v cargo
          type --all cargo

          # Force use of rustup cargo instead of cargo as packaged by
          # Debian. dh-cargo hardcodes /usr/bin/cargo.
          mv /usr/bin/cargo /usr/bin/cargo.debian
          ln -nsf /workspace/.cargo/bin/cargo /usr/bin/cargo

          rm -f ./*_*.*
          cd /workspace/src
          git clean -fdx -e target

          name="$(dpkg-parsechangelog -S Source)"
          version="$(dpkg-parsechangelog -S Version)"
          distribution=unstable

          case "$version" in
            *-*)
              upstream="$(echo "$version" | sed 's/-[^-]*$//')"
              debian="$(echo "$version" | sed 's/^.*-//')"
              ;;
            *)
              upstream="$version"
              debian=0
              ;;
          esac

          upstream="${upstream}.ci0.${BUILD_NUMBER}"
          civersion="${upstream}-${debian}"

          git archive HEAD | xz > "../${name}_${upstream}.orig.tar.xz"
          dch --no-conf -v "$civersion" -D "${distribution}-ci" --force-distribution "CI build"
          rustc --version
          cargo --version
          if ! dpkg-buildpackage -us -uc -sa
          then
              echo dpkg-buildpackage failed
              for diff in /tmp/*.diff.*
              do
                  echo "$diff"
                  cat "$diff"
              done
              exit 1
          fi

          # Undo previous hack.
          rm /usr/bin/cargo
          mv /usr/bin/cargo.debian /usr/bin/cargo


  - pipeline: rust_run_check_if_there
    actions:
      - where: container
        shell: |
          # Use workspace for things.
          export HOME=/workspace
          export PATH="$HOME/.cargo/bin:$PATH"
          export TMPDIR=/workspace

          # Set up rustup Rust to use stable version of Rust.
          rustup default stable
          rustup show

          # Install "cargo deny"
          cargo install --locked cargo-deny

          cd /workspace/src
          if [ -e check ]
          then
              rustc --version
              git show

              # Clean up so that tests run in a repeatable environment.
              git clean -fdx

              # Run build-time tests.
              if grep -q '^#!/bin/bash' check || grep -q '^#!/bin/sh' check
              then
                  bash -x ./check
              else
                  ./check -v
              fi
          fi

  - pipeline: build_deb_releases
    actions:
      - where: container
        shell: |
          if ! [ -e debian ]
          then
              echo this is not a Debian package
              exit 0
          fi
          echo Trying to build any new release as a Debian package

          # Use workspace for things.
          export HOME=/workspace
          export PATH="$HOME/.cargo/bin:$PATH"
          export TMPDIR=/workspace

          rm -rf ick-helpers
          git clone git://git.liw.fi/ick-helpers

          # Set up rustup Rust to use stable version of Rust.
          rustup default stable
          rustup show
          rustc --version
          cargo --version

          cd /workspace/src

          # Build new releases.
          echo looking for new releases to build

          git pull --tags
          git tag -l

          # Always build newest tag; this is for debugging the pipeline.
          if false; then
            echo ===== tweak so that we are building last 2 tags
            rm -f /workspace/built_tags
            touch /workspace/built_tags
            /workspace/ick-helpers/list_new_release_tags /workspace/built_tags
            echo all new tags
            cat /workspace/built_tags
            tac < /workspace/built_tags  | tail +2 > foo
            mv foo /workspace/built_tags
            echo tags that have been built
            cat /workspace/built_tags
            echo ===== finished tweaking
          fi

          /workspace/ick-helpers/list_new_release_tags /workspace/built_tags > /workspace/new_tags
          cat /workspace/new_tags

          cat /workspace/new_tags | while read tag
          do
            echo "New release tag: $tag"
            /workspace/ick-helpers//build_release_deb.sh /workspace "$tag"
            echo "Finished building tag $tag"
          done

          echo "Finished building release debs (if any)"

  - pipeline: remove_debs_from_workspace
    actions:
      - where: container
        shell: |
          find -maxdepth 1 -type f -name "*_*.*" -delete
          ls -la

  - pipeline: rebase_liw_debian_on_main
    actions:
      - where: container
        shell: |
          cd src
          git config --local user.name Ick
          git config --local user.email liw@liw.fi
          git branch -a
          git checkout liw/debian
          git rebase main

  - pipeline: generate_obnam_benchmark_report
    parameters:
      - rsync_src
      - rsync_target
    actions:
      - where: container
        shell: |
          apt-get update
          apt-get install -y obnam-benchmark pandoc
          rm -rf publish
          mkdir publish
          cd src
          ./report.sh *.json
          mv obnam-benchmark.html ../publish/index.html
          cat ../publish/index.html
          find ../publish -type f -exec chmod 0644 '{}' +

      - where: host
        action: rsync

  - pipeline: format_and_publish_markdowns_as_html
    parameters:
      - rsync_src
      - rsync_target
    actions:
      - where: container
        shell: |
          apt-get install -y pandoc

          output=/workspace/publish
          mkdir -p "$output"

          find src -name "*.md" |
              grep -Fv .gitlab/ |
              while read file
              do
                  base="$(basename "$file" .md)"
                  pandoc -f markdown-smart -t html "$file" -o "$output/$base.html"
              done
          find "$output" -type f -exec chmod 0644 '{}' +

      - where: host
        action: rsync