summaryrefslogtreecommitdiff
path: root/ci-prod.ick
blob: 721024598b84f7338e18e98281119ecf4fd442f6 (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
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
projects:
  - project: buster-systree
    parameters:
      debian_codename: buster
      packages:
        - apt-transport-https
        - jq
        - python3
      artifact_name: buster-systree
      notify: [liw@liw.fi]
    pipelines:
      - ick/build_debian_systree

  - project: buster-website
    parameters:
      debian_codename: buster
      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: buster-website
      notify: [liw@liw.fi]
    pipelines:
      - ick/build_debian_systree

  - 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: dummy-website
    parameters: &website_params
      rsync_src: html
      systree_name: buster-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
      systree_name: buster-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
      - ick/get_sources
      - ick/install_debian_build_dependencies
      - ick/build_deb_ci
      - ick/upload_debs
      - ick/save_workspace

  - project: dummy-rust-program
    pipelines: &deb_ci_rustup_pipelines
      - ick/setup_container
      - ick/add_apt_signing_keys
      - ick/add_apt_sources
      - ick/restore_workspace
      - ick/get_sources
      - rustup
      - ick/install_debian_build_dependencies
      - ick/build_deb_ci
      - ick/upload_debs
      - format_subplots
      - ick/save_workspace

  - project: journal.liw.fi
    parameters:
      <<: *website_params
      workspace_name: journal.liw.fi
      rsync_target: ickliwfi@http.liw.fi:/srv/http/journal.liw.fi
      sources:
        - name: pandoc-plugin
          ref: master
          location: ikiwiki-pandoc
          repo: https://github.com/sciunto-org/ikiwiki-pandoc.git
        - name: source
          ref: main
          location: src
          repo: ssh://git@git.liw.fi/private/liw/Journal
    pipelines: *website_pipelines

  - project: liw.fi
    parameters:
      <<: *website_params
      workspace_name: liw.fi
      rsync_src: html
      rsync_target: ickliwfi@http.liw.fi:/srv/http/liw.fi
      sources:
        - name: pandoc-plugin
          ref: master
          location: ikiwiki-pandoc
          repo: https://github.com/sciunto-org/ikiwiki-pandoc.git
        - name: source
          ref: main
          location: src
          repo: ssh://git@git.liw.fi/liw.fi
    pipelines: *website_pipelines

  - project: blog.liw.fi
    parameters:
      <<: *website_params
      workspace_name: blog.liw.fi
      rsync_src: html
      rsync_target: ickliwfi@http.liw.fi:/srv/http/blog.liw.fi
      sources:
        - name: pandoc-plugin
          ref: master
          location: ikiwiki-pandoc
          repo: https://github.com/sciunto-org/ikiwiki-pandoc.git
        - name: source
          ref: main
          location: src
          repo: ssh://git@git.liw.fi/blog.liw.fi
    pipelines: *website_pipelines

  - project: obnam.org
    parameters:
      <<: *website_params
      workspace_name: obnam.org
      rsync_src: html
      rsync_target: ickliwfi@http.liw.fi:/srv/http/obnam.org
      sources:
        - name: pandoc-plugin
          ref: master
          location: ikiwiki-pandoc
          repo: https://github.com/sciunto-org/ikiwiki-pandoc.git
        - name: source
          ref: main
          location: src
          repo: ssh://git@git.liw.fi/obnam.org
    pipelines: *website_pipelines

  - project: 256.liw.fi
    parameters:
      <<: *website_params
      workspace_name: 256.liw.fi
      rsync_src: html
      rsync_target: ickliwfi@http.liw.fi:/srv/http/256.liw.fi
      sources:
        - name: pandoc-plugin
          ref: master
          location: ikiwiki-pandoc
          repo: https://github.com/sciunto-org/ikiwiki-pandoc.git
        - name: source
          ref: main
          location: src
          repo: ssh://git@git.liw.fi/256.liw.fi
    pipelines: *website_pipelines

  - project: gtdfh.liw.fi
    parameters:
      <<: *website_params
      workspace_name: gtdfh.liw.fi
      rsync_src: html
      rsync_target: ickliwfi@http.liw.fi:/srv/http/gtdfh.liw.fi
      sources:
        - name: pandoc-plugin
          ref: master
          location: ikiwiki-pandoc
          repo: https://github.com/sciunto-org/ikiwiki-pandoc.git
        - name: source
          ref: main
          location: src
          repo: ssh://git@git.liw.fi/gtdfh.liw.fi
    pipelines: *website_pipelines

  - project: noir.liw.fi
    parameters:
      <<: *website_params
      workspace_name: noir.liw.fi
      rsync_target: ickliwfi@http.liw.fi:/srv/http/noir.liw.fi
      sources:
        - name: pandoc-plugin
          ref: master
          location: ikiwiki-pandoc
          repo: https://github.com/sciunto-org/ikiwiki-pandoc.git
        - name: source
          ref: main
          location: src
          repo: git://git.liw.fi/noir.liw.fi
    pipelines: *website_pipelines

  - project: vmdb2.liw.fi
    parameters:
      <<: *website_params
      workspace_name: vmdb2.liw.fi
      rsync_target: ickliwfi@http.liw.fi:/srv/http/vmdb2.liw.fi
      sources:
        - name: pandoc-plugin
          ref: master
          location: ikiwiki-pandoc
          repo: https://github.com/sciunto-org/ikiwiki-pandoc.git
        - name: source
          ref: main
          location: src
          repo: git://git.liw.fi/vmdb2.liw.fi
    pipelines: *website_pipelines

  - project: manifesto
    parameters:
      <<: *website_params
      workspace_name: manifesto.liw.fi
      rsync_target: ickliwfi@http.liw.fi:/srv/http/manifesto.liw.fi
      sources:
        - name: pandoc-plugin
          ref: master
          location: ikiwiki-pandoc
          repo: https://github.com/sciunto-org/ikiwiki-pandoc.git
        - name: source
          ref: main
          location: src
          repo: ssh://git@git.liw.fi/private/liw/manifesto
    pipelines: *website_pipelines

  - project: ick.liw.fi
    parameters:
      <<: *website_params
      workspace_name: ick.liw.fi
      rsync_target: ickliwfi@http.liw.fi:/srv/http/ick.liw.fi
      sources:
        - name: pandoc-plugin
          ref: master
          location: ikiwiki-pandoc
          repo: https://github.com/sciunto-org/ikiwiki-pandoc.git
        - name: source
          ref: main
          location: src
          repo: git://git.liw.fi/ick.liw.fi
    pipelines: *website_pipelines

  - project: subplot.liw.fi
    parameters:
      <<: *website_params
      workspace_name: subplot.liw.fi
      rsync_target: ickliwfi@http.liw.fi:/srv/http/subplot.liw.fi
      sources:
        - name: pandoc-plugin
          ref: master
          location: ikiwiki-pandoc
          repo: https://github.com/sciunto-org/ikiwiki-pandoc.git
        - name: source
          ref: main
          location: src
          repo: git://git.liw.fi/subplot.liw.fi
      notify:
        - liw@liw.fi
        - dsilvers@digital-scurf.org
    pipelines: *website_pipelines

  - project: seinfeld.liw.fi
    parameters:
      <<: *website_params
      workspace_name: seinfeld.liw.fi
      rsync_target: ickliwfi@http.liw.fi:/srv/http/seinfeld.liw.fi
      sources:
        - name: source
          ref: master
          location: src
          repo: ssh://git@git.liw.fi/seinfeld
    pipelines:
      - ick/setup_container
      - ick/add_apt_signing_keys
      - ick/add_apt_sources
      - ick/restore_workspace
      - ick/get_sources
      - subplots
      - ick/save_workspace

  - project: ideas.liw.fi
    parameters:
      <<: *website_params
      workspace_name: ideas.liw.fi
      rsync_target: ickliwfi@http.liw.fi:/srv/http/ideas.liw.fi
      sources:
        - name: source
          ref: main
          location: src
          repo: ssh://git@git.liw.fi/ideas
    pipelines:
      - ick/setup_container
      - ick/add_apt_signing_keys
      - ick/add_apt_sources
      - ick/restore_workspace
      - ick/get_sources
      - subplots
      - ick/save_workspace

  - project: yuck.liw.fi
    parameters:
      <<: *website_params
      workspace_name: yuck.liw.fi
      rsync_target: ickliwfi@http.liw.fi:/srv/http/yuck.liw.fi
      sources:
        - name: source
          ref: main
          location: src
          repo: git://git.liw.fi/yuck
    pipelines:
      - ick/setup_container
      - ick/add_apt_signing_keys
      - ick/add_apt_sources
      - ick/restore_workspace
      - ick/get_sources
      - subplots
      - ick/save_workspace

  - project: vmdb2-manual
    parameters:
      <<: *website_params
      workspace_name: vmdb2-manual.liw.fi
      rsync_target: ickliwfi@http.liw.fi:/srv/http/vmdb2-manual.liw.fi
      sources:
        - name: source
          ref: main
          location: src
          repo: git://git.liw.fi/vmdb2
      notify: [liw@liw.fi]
    pipelines:
      - ick/setup_container
      - ick/add_apt_signing_keys
      - ick/add_apt_sources
      - ick/get_sources
      - vmdb2_manual

  - project: extrautils
    parameters:
      <<: *dummy_program_params
      sources:
        - name: code
          repo: git://git.liw.fi/extrautils
          ref: main
          location: src
    pipelines: *deb_ci_pipelines

  - project: clab
    parameters:
      <<: *dummy_program_params
      sources:
        - name: code
          repo: git://git.liw.fi/clab
          ref: master
          location: src
    pipelines: *deb_ci_pipelines

  - project: jt
    parameters:
      <<: *dummy_program_params
      sources:
        - name: code
          repo: git://git.liw.fi/jt
          ref: master
          location: src
    pipelines: *deb_ci_pipelines

  - project: vmdb2
    parameters:
      <<: *dummy_program_params
      sources:
        - name: code
          repo: git://git.liw.fi/vmdb2
          ref: main
          location: src
        - name: debian
          repo: git://git.liw.fi/vmdb2
          ref: debian/unstable
          location: src/debian
    pipelines:
      - ick/setup_container
      - vmdb2_trigger

  - project: vmdb2-deb
    parameters:
      <<: *dummy_program_params
      sources:
        - name: code
          repo: git://git.liw.fi/vmdb2
          ref: main
          location: src
        - name: debian
          repo: git://git.liw.fi/vmdb2
          ref: debian/unstable
          location: src/debian
    pipelines: *deb_ci_pipelines

  - project: liw-automation
    parameters:
      <<: *dummy_program_params
      sources:
        - name: code
          repo: git://git.liw.fi/liw-automation
          ref: main
          location: src
    pipelines: *deb_ci_pipelines

  - project: summain-rs
    parameters:
      <<: *dummy_program_params
      workspace_name: summain-rs
      rsync_target: ickliwfi@http.liw.fi:/srv/http/summain.liw.fi
      sources:
        - name: code
          repo: git://git.liw.fi/summain-rs
          ref: main
          location: src
    pipelines: *deb_ci_rustup_pipelines

pipelines:

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

          # "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
          (cd build && git show)

          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
          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: vmdb2_manual
    parameters:
      - rsync_src
      - rsync_target
    actions:
      - shell: |
          apt install -y texlive texlive-xetex fonts-freefont-ttf
          mkdir -p html
          cd src
          ./format.sh
          cp vmdb2.html ../html/index.html
          cp vmdb2.pdf ../html/vmdb2.pdf
        where: container

      - action: rsync
        where: host

  - pipeline: vmdb2_trigger
    actions:
      - where: container
        shell: |
          curl https://ci-prod-controller.vm.liw.fi/projects/vmdb2-manual/+trigger
          curl https://ci-prod-controller.vm.liw.fi/projects/vmdb2-deb/+trigger

  - 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: |
          mkdir -p /workspace/publish

          find -name "*.md" |
              while read file
              do
                  if sp-meta "$file" | grep -q "^scenario:"
                  then
                      base="$(basename "$file" .md)"
                      sp-docgen "$file" -o /workspace/publish/$base.html
                      sp-docgen "$file" -o /workspace/publish/$base.pdf
                  fi
              done
          find /workspace/publish -type f -exec chmod 0644 '{}' +

      - where: host
        action: rsync



# projects:
# 
# # The base dummy project: CI builds for stretch. Other dummy projects
# # will build upon this. This defines the common parameters and
# # pipelines, which will be reused by "subclasses" via YAML magic.
# 
# # Dummy project to do RELEASE builds on stretch.
# 
# - project: dummy-release-stretch
#   parameters: &dummy_release_stretch_params
#     <<: *dummy_stretch_params
#     apt_sources:
#       - url: http://ci-prod-controller.vm.liw.fi/debian
#         dist: stretch
#         section: main
#   pipelines: &deb_release_pipelines
#     - ick/setup_container
#     - ick/add_apt_signing_keys
#     - ick/add_apt_sources
#     - ick/restore_workspace
#     - ick/get_sources
#     - ick/install_debian_build_dependencies
#     - ick/build_debian_release
#     - ick/archive_debian_release
#     - ick/save_workspace
# 
# # Real projects follow. Each project is duplicated with a stretch and
# # sid version, for CI, and for release.
# 
# - project: vmadm-ci-sid
#   parameters:
#     <<: *dummy_buster_params
#     sources: &vmadm_sources
#       - name: code
#         repo: git://git.liw.fi/vmadm
#         ref: fix
#         location: src
#     workspace_name: vmadm
#     rsync_src: publish
#     rsync_target: ickliwfi@http.liw.fi:/srv/http/vmadm.liw.fi
#   pipelines:
#     - ick/setup_container
#     - ick/add_apt_signing_keys
#     - ick/add_apt_sources
#     - ick/restore_workspace
#     - ick/get_sources
#     - ick/install_debian_build_dependencies
#     - rustup
#     - build_rust_project_as_deb
#     - ick/upload_debs
#     - docgen_and_publish_subplots
#     - ick/save_workspace
# 
# - project: ewww-ci-sid
#   parameters:
#     <<: *dummy_buster_params
#     sources: &ewww_sources
#       - name: code
#         repo: git://git.liw.fi/ewww
#         ref: main
#         location: src
#     rsync_src: publish
#     rsync_target: ickliwfi@journal.liw.fi:/srv/http/ewww.liw.fi
#   pipelines:
#     - ick/setup_container
#     - ick/add_apt_signing_keys
#     - ick/add_apt_sources
#     - ick/get_sources
#     - ick/install_debian_build_dependencies
#     - build_deb_ci
#     - ick/upload_debs
#     - docgen_and_publish_subplots
# 
# pipelines:
#  
# - pipeline: build_rust_project_as_deb
#   actions:
#     # - where: container
#     #   shell: |
#     #     export HOME=/workspace
#     #     export PATH="$HOME/.cargo/bin:$PATH"
#     #     export TMPDIR=/workspace
# 
#     #     cd /workspace/src
# 
#     #     echo looking for new releases to build
# 
#     #     [ -e /workspace/built_tags ] && cat /workspace/built_tags
#     #     git tag -l
#     #     python3 ./list_new_release_tags /workspace/built_tags > /workspace/new_tags
#     #     [ -e /workspace/built_tags ] && cat /workspace/built_tags
#     #     cat /workspace/new_tags
# 
#     #     cat /workspace/new_tags | while read tag
#     #     do
#     #       echo ----------------------------------------
#     #       echo "New release tag: $tag"
#     #       # bash ./build_release_deb.sh /workspace "$tag"
#     #       echo "Finished building tag $tag"
#     #     done
#     #     echo ========================================
#     #     echo "Finished building release debs (if any)"
# 
#     - where: container
#       shell: |
#         ls -la /workspace
# 
#         export HOME=/workspace
#         export PATH="$HOME/.cargo/bin:$PATH"
#         export TMPDIR=/workspace
# 
#         rustup show
#         rustup default stable
#         type rustc
#         rustc --version
# 
#         dpkg -l subplot
#         type sp-docgen
# 
#         cd /workspace/src
#         git clean -fdxq -e target
# 
#         name="$(dpkg-parsechangelog -S Source)"
#         distribution="$(dpkg-parsechangelog -S Distribution)"
#         version="$(dpkg-parsechangelog -S Version)"
# 
#         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}"
# 
#         rm -f ../*_*.*
#         git clean -fdx -e target
#         git archive HEAD | xz > "../${name}_${upstream}.orig.tar.xz"
#         dch --no-conf -v "$civersion" -D "${distribution}-ci" --force-distribution "CI build"
#         dpkg-buildpackage -us -uc -sa
# 
#         echo looking for new releases to build
# 
#         ls -l /workspace
#         [ -e /workspace/built_tags ] && cat /workspace/built_tags
#         git tag -l
#         python3 ./list_new_release_tags /workspace/built_tags > /workspace/new_tags
#         [ -e /workspace/built_tags ] && cat /workspace/built_tags
#         cat /workspace/new_tags
# 
#         cat /workspace/new_tags | while read tag
#         do
#           echo ----------------------------------------
#           echo "New release tag: $tag"
#           bash ./build_release_deb.sh /workspace "$tag"
#           echo "Finished building tag $tag"
#         done
#         echo ========================================
#         echo "Finished building release debs (if any)"


# projects:
# 
#   - project: rust-systree
#     parameters:
#       debian_codename: buster
#       packages:
#         - apt-transport-https
#         - jq
#         - python3
#         - locales-all
#         - git
#         - build-essential
#         - devscripts
#         - cargo
#         - rustc
#         - graphviz
#       artifact_name: systrees-debian-buster-rust
#       notify:
#         - liw@liw.fi
#     pipelines:
#       - ick/build_debian_systree
# 
#   - project: subplot
#     parameters:
#       sources:
#         - name: code
#           repo: git://git.liw.fi/subplot
#           ref: main
#           location: src
#         - name: roadmap
#           repo: git://git.liw.fi/roadmap
#           ref: master
#           location: roadmap
#       apt_sources:
#         - url: http://ci-prod-controller.vm.liw.fi/debian
#           dist: unstable-ci
#           section: main
#       rsync_src: examples
#       rsync_target: ickliwfi@http.liw.fi:/srv/http/examples.subplot.liw.fi
#     pipelines: &deb_ci_pipelines
#       - ick/setup_container
#       - ick/add_apt_signing_keys
#       - ick/add_apt_sources
#       - ick/get_sources
#       - ick/install_debian_build_dependencies
#       - rustup
#       - build_subplot_deb
#       - ick/upload_debs
#       - ick/save_workspace
# 
# pipelines:
# 
#   - pipeline: build_subplot_deb
#     actions:
#       - where: container
#         shell: |
#           export HOME=/workspace
#           export PATH="$HOME/.cargo/bin:$PATH"
#           
#           cd /workspace/src
#           name="$(dpkg-parsechangelog -S Source)"
#           version="$(dpkg-parsechangelog -S Version)"
#           distribution="$(dpkg-parsechangelog -S Distribution)"
# 
#           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 clean -fdx -e target
#           ./check -v
#           install -d /workspace/examples
#           install -m 0644 *.html *.pdf /workspace/examples/.
# 
#           export TMPDIR=/workspace
#           rm -f /workspace/*_*
#           ./build-deb /workspace
# 
#           cd /workspace
#           ls -l
# 
#       - action: rsync
#         where: host


# projects:
# 
#   - project: obnam
#     parameters:
#       sources:
#         - name: code
#           repo: git://git.liw.fi/obnam2
#           ref: main
#           location: src
#       apt_sources:
#         - url: http://ci-prod-controller.vm.liw.fi/debian
#           dist: unstable-ci
#           section: main
#       rsync_src: examples
#       rsync_target: ickliwfi@http.liw.fi:/srv/http/doc.obnam.org
#       workspace_name: workspace-obnam
#     pipelines:
#       - ick/setup_container
#       - ick/add_apt_signing_keys
#       - ick/add_apt_sources
#       - ick/restore_workspace
#       - ick/get_sources
#       - rustup
#       - ick/install_debian_build_dependencies
#       - build_obnam_deb
#       - ick/upload_debs
#       - ick/save_workspace
# 
# 
# 
# pipelines:
# 
#   - pipeline: build_obnam_deb
#     actions:
#       # - where: container
#       #   shell: |
#       #     export HOME=/workspace
#       #     export PATH="$HOME/.cargo/bin:$PATH"
#       #     export TMPDIR=/workspace
#           
#       #     cd /workspace/src
# 
#       #     apt-get install -y sudo
#       #     adduser --disabled-password --gecos worker worker
#       #     chown -R worker:worker /workspace
#       #     rustup show
# 
#       #     if ! sudo -u worker bash -x ./check --save-on-failure=fail.tar.gz "unreadable file"
#       #     then
#       #       rustc --version
#       #       cat test.log
#       #       tar tvf fail.tar.gz
#       #       exit 1
#       #     fi
# 
#       #     name="$(dpkg-parsechangelog -S Source)"
#       #     version="$(dpkg-parsechangelog -S Version)"
#       #     distribution="$(dpkg-parsechangelog -S Distribution)"
# 
#       #     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}"
# 
#       #     rm -f ../*_*.*
#       #     git clean -fdx -e target
#       #     git archive HEAD | xz > "../${name}_${upstream}.orig.tar.xz"
# 
#       #     dch --no-conf -v "$civersion" -D "${distribution}-ci" --force-distribution "CI build"
# 
#       #     rustc --version
#       #     rustup default stable
#       #     sudo -u worker rustup default stable
#       #     sudo -u worker rustc --version
#       #     sudo -u worker env "PATH=$PATH" dpkg-buildpackage -us -uc -sa || cat /tmp/subplot_*.diff.* 2>&1
# 
#       #     apt-get update
#       #     apt-get install -y subplot \
#       #       pandoc-citeproc \
#       #       texlive-latex-base \
#       #       texlive-latex-recommended \
#       #       texlive-fonts-recommended \
#       #       plantuml
# 
#       #     rm -f obnam.html obnam.pdf
#       #     sp-docgen obnam.md -o obnam.html
#       #     sp-docgen obnam.md -o obnam.pdf
#       #     install -d /workspace/examples
#       #     install -m 0644 obnam.html obnam.pdf /workspace/examples/.
# 
#       #     # Build new releases.
#       #     echo ========================================
#       #     echo looking for new releases to 
# 
#       #     # TEMPORARILY get the latest release tag
#       #     rm -f /workspace/built_tags # FIXME
#       #     touch /workspace/built_tags # FIXME
#       #     python3 ./list_new_release_tags /workspace/built_tags
#       #     tac <  /workspace/built_tags  | tail +2 > foo
#       #     mv foo /workspace/built_tags
# 
#       #     python3 ./list_new_release_tags /workspace/built_tags | while read tag
#       #     do
#       #       echo ----------------------------------------
#       #       echo "New release tag: $tag"
#       #       sudo -u worker env "PATH=$PATH" bash ./build_release_deb.sh /workspace "$tag"
#       #       echo "Finished building tag $tag"
#       #     done
#       #     echo ========================================
#       #     echo "Finished building release debs (if any)"
# 
#       - where: container
#         shell: |
#           export HOME=/workspace
#           export PATH="$HOME/.cargo/bin:$PATH"
#           export TMPDIR=/workspace
#           
#           cd /workspace/src
# 
#           apt-get install -y sudo
#           adduser --disabled-password --gecos worker worker
# 
#           chown -R worker:worker /workspace
#           sudo -u worker env "PATH=$PATH" rustup default stable
#           sudo -u worker env "PATH=$PATH" rustup show
# 
#           sudo -u worker env "PATH=$PATH" rustc --version
#           df -h
#           sudo du -xhd1 /
# 
#           sudo -u worker env "PATH=$PATH" bash -x ./check
# 
#           name="$(dpkg-parsechangelog -S Source)"
#           version="$(dpkg-parsechangelog -S Version)"
#           distribution="$(dpkg-parsechangelog -S Distribution)"
# 
#           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}"
# 
#           rm -f ../*_*.*
#           git clean -fdx -e target
#  
#           git archive HEAD | xz > "../${name}_${upstream}.orig.tar.xz"
# 
#           dch --no-conf -v "$civersion" -D "${distribution}-ci" --force-distribution "CI build"
# 
#           rustc --version
#           rustup default stable
#           sudo -u worker env "PATH=$PATH" rustup default stable
#           sudo -u worker env "PATH=$PATH" rustc --version
#           sudo -u worker env "PATH=$PATH" dpkg-buildpackage -us -uc -sa || cat /tmp/subplot_*.diff.* 2>&1
# 
#           apt-get update
#           apt-get install -y subplot \
#             pandoc-citeproc \
#             texlive-latex-base \
#             texlive-latex-recommended \
#             texlive-fonts-recommended \
#             plantuml
# 
#           rm -f obnam.html obnam.pdf
#           sp-docgen obnam.md -o obnam.html
#           sp-docgen obnam.md -o obnam.pdf
#           install -d /workspace/examples
#           install -m 0644 obnam.html obnam.pdf /workspace/examples/.
# 
#           # # Build new releases.
#           # echo ========================================
#           # echo looking for new releases to build
# 
#           # # TEMPORARILY get the latest release tag
#           # rm -f /workspace/built_tags # FIXME
#           # touch /workspace/built_tags # FIXME
#           # python3 ./list_new_release_tags /workspace/built_tags
#           # tac <  /workspace/built_tags  | tail +2 > foo
#           # mv foo /workspace/built_tags
# 
#           # python3 ./list_new_release_tags /workspace/built_tags | while read tag
#           # do
#           #   echo ----------------------------------------
#           #   echo "New release tag: $tag"
#           #   sudo -u worker env "PATH=$PATH" bash ./build_release_deb.sh /workspace "$tag"
#           #   echo "Finished building tag $tag"
#           # done
#           # echo ========================================
#           # echo "Finished building release debs (if any)"
# 
#       - action: rsync
#         where: host