diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f5a14f0b59ce2355c2a9ca7f46c0860aeb83f198..edd7c5afd7afb360568000de3b720df468cefb95 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -42,17 +42,6 @@ stages: - . bootstrap/etc/lofar20rc.sh || true ## Allow docker image script to execute # - chmod u+x $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh -# This suffers from only refs changes not working as expected: -# https://gitlab.com/gitlab-org/gitlab-foss/-/issues/55012 -# Therefore we have to add `only: refs: - merge_requests` to all jobs that are -# only supposed to run on merge requests with file changes. However, -# two pipelines will spawn instead of one of which one tagged with 'detached`. -.base_docker_images_except: - extends: .base_docker_images - except: - refs: - - tags - - master .base_docker_store_images: extends: .base_docker_images script: @@ -66,15 +55,17 @@ docker_store_images_master_tag: - master docker_store_images_changes: extends: .base_docker_store_images - only: - refs: - - merge_requests - changes: + rules: +# https://stackoverflow.com/questions/68955071/how-to-disable-detached-pipelines-in-gitlab + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/.env - except: - refs: - - tags - - master + when: always docker_build_image_all: extends: .base_docker_images only: @@ -111,42 +102,56 @@ docker_build_image_all: - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh device-unb2 latest - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh device-xst latest docker_build_image_elk: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/elk.yml - docker-compose/elk/* - docker-compose/elk-configure-host/* + when: always script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh elk $tag - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh elk-configure-host $tag docker_build_image_lofar_device_base: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/lofar-device-base.yml - docker-compose/lofar-device-base/* + when: always script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh lofar-device-base $tag docker_build_image_prometheus: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/prometheus.yml - docker-compose/prometheus/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh prometheus $tag docker_build_image_itango: - extends: .base_docker_images_except + extends: .base_docker_images only: refs: - merge_requests @@ -157,242 +162,330 @@ docker_build_image_itango: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh itango $tag docker_build_image_grafana: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/grafana.yml - docker-compose/grafana/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh grafana $tag docker_build_image_jupyter: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/jupyter.yml - docker-compose/jupyter/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh jupyter $tag docker_build_image_apsct_sim: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/aspct-sim.yml - docker-compose/pypcc-sim-base/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh apsct-sim $tag docker_build_image_apspu_sim: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/apspu-sim.yml - docker-compose/pypcc-sim-base/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh apspu-sim $tag docker_build_image_recv_sim: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/recv-sim.yml - docker-compose/pypcc-sim-base/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh recv-sim $tag docker_build_image_sdptr_sim: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/sdptr-sim.yml - docker-compose/sdptr-sim/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh sdptr-sim $tag docker_build_image_unb2_sim: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/unb2-sim.yml - docker-compose/pypcc-sim-base/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh unb2-sim $tag docker_build_image_device_apsct: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/device-aspct.yml - docker-compose/lofar-device-base/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh device-aspct $tag docker_build_image_device_apspu: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/device-apspu.yml - docker-compose/lofar-device-base/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh device-apspu $tag docker_build_image_device_pdu: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/device-pdu.yml - docker-compose/lofar-device-base/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh device-pdu $tag docker_build_image_device_tilebeam: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/device-tilebeam.yml - docker-compose/lofar-device-base/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh device-tilebeam $tag docker_build_image_device_beamlet: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/device-beamlet.yml - docker-compose/lofar-device-base/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh device-beamlet $tag docker_build_image_device_digitalbeam: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/device-digitalbeam.yml - docker-compose/lofar-device-base/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh device-digitalbeam $tag docker_build_image_device_boot: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/device-boot.yml - docker-compose/lofar-device-base/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh device-boot $tag docker_build_image_device_docker: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/device-docker.yml - docker-compose/lofar-device-base/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh device-docker $tag docker_build_image_device_ovservation_control: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/device-observation_control.yml - docker-compose/lofar-device-base/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh device-observation_control $tag docker_build_image_device_antennafield: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/device-antennafield.yml - docker-compose/lofar-device-base/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh device-antennafield $tag docker_build_image_device_recv: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/device-recv.yml - docker-compose/lofar-device-base/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh device-recv $tag docker_build_image_device_sdp: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/device-sdp.yml - docker-compose/lofar-device-base/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh device-sdp $tag docker_build_image_device_sst: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/device-sst.yml - docker-compose/lofar-device-base/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh device-sst $tag docker_build_image_device_unb2: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/device-unb2.yml - docker-compose/lofar-device-base/* script: # Do not remove 'bash' or statement will be ignored by primitive docker shell - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh device-unb2 $tag docker_build_image_device_xst: - extends: .base_docker_images_except - only: - refs: - - merge_requests - changes: + extends: .base_docker_images + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_COMMIT_TAG != null' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: never + - changes: - docker-compose/device-xst.yml - docker-compose/lofar-device-base/* script: