diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d5149753863ef765e7f2cb04efe0593224e29ac3..daaab2bb1cd398896b3763ad9ab2788d63cdfbd4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,17 +1,18 @@ stages: + - init - build-dev - push-dev - deploy-dev # - .post -workflow: - rules: +# workflow: + # rules: # - if: $CI_COMMIT_MESSAGE =~ /\A(?i)-wip/ # when: never # - if: '$CI_PIPELINE_SOURCE == "push"' - - if: $CI_MERGE_REQUEST_IID - - if: $CI_COMMIT_TAG - - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_DEFAULT_BRANCH + # - if: $CI_MERGE_REQUEST_IID + # - if: $CI_COMMIT_TAG + # - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_DEFAULT_BRANCH image: docker:19.03.12 @@ -27,7 +28,24 @@ before_script: - echo "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" - echo "$CI_COMMIT_REF_NAME" -# Build +# Check if branch is associated with a MR +# based on issue: https://gitlab.com/gitlab-org/gitlab/-/issues/201845 +# which should have a fix in a future Gitlab-CI release +check-merge-request: + stage: init + before_script: + - apk add --no-cache curl + script: + - 'export OPENED_MR_ON_BRANCH=$(curl --header "Private-Token: $GITLAB_TOKEN" "https://$CI_SERVER_HOST/api/v4/merge_requests?project_id=$CI_PROJECT_ID&source_branch=$CI_COMMIT_BRANCH&state=opened")' + - | + if [ "${OPENED_MR_ON_BRANCH}" != "[]" ]; then \ + echo "There is at least one MR opened on branch $CI_COMMIT_BRANCH. Stopping the push pipeline in favor of the merge request pipeline"; \ + exit 1; \ + fi + rules: + - if: $GITLAB_TOKEN && $CI_PIPELINE_SOURCE == 'push' + + # Build build dev workflow: stage: build-dev script: @@ -40,53 +58,55 @@ build dev workflow: changes: - .gitlab-ci.yml when: always + - if: '$CI_PIPELINE_SOURCE == "push"' - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' changes: - services/workflow/**/* - apps/cli/**/*.{py,sh} - shared/**/*.{py,sh} -build dev capability: - stage: build-dev - script: - - docker build -t marconi.aoc.nrao.edu/workspaces/capability:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME -f services/capability/Dockerfile.dev . - - docker tag marconi.aoc.nrao.edu/workspaces/capability:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME marconi.aoc.nrao.edu/workspaces/capability:$CI_COMMIT_SHORT_SHA - rules: - - if: $CI_COMMIT_MESSAGE =~ /\A(?i)Revert/ - when: always - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - changes: - - .gitlab-ci.yml - when: always - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - changes: - - services/capability/**/* - - apps/cli/**/*.{py,sh} - - shared/**/*.{py,sh} +# build dev capability: +# stage: build-dev +# script: +# - docker build -t marconi.aoc.nrao.edu/workspaces/capability:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME -f services/capability/Dockerfile.dev . +# - docker tag marconi.aoc.nrao.edu/workspaces/capability:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME marconi.aoc.nrao.edu/workspaces/capability:$CI_COMMIT_SHORT_SHA +# rules: +# - if: $CI_COMMIT_MESSAGE =~ /\A(?i)Revert/ +# when: always +# - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' +# changes: +# - .gitlab-ci.yml +# when: always +# - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' +# changes: +# - services/capability/**/* +# - apps/cli/**/*.{py,sh} +# - shared/**/*.{py,sh} # Push -push dev workflow: - stage: push-dev - script: - - echo "$HARBOR_PASSWORD" | docker login -u "$HARBOR_USER" --password-stdin $HARBOR_URL - - docker tag marconi.aoc.nrao.edu/workspaces/workflow:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME marconi.aoc.nrao.edu/workspaces/workflow:dev - - docker push marconi.aoc.nrao.edu/workspaces/workflow:$CI_COMMIT_SHORT_SHA - - docker push marconi.aoc.nrao.edu/workspaces/workflow:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME - - docker push marconi.aoc.nrao.edu/workspaces/workflow:dev - rules: - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_COMMIT_MESSAGE =~ /\A(?i)Merge/ && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "development"' - # needs: ["build dev workflow"] +# push dev workflow: +# stage: push-dev +# script: +# - echo "$HARBOR_PASSWORD" | docker login -u "$HARBOR_USER" --password-stdin $HARBOR_URL +# - docker tag marconi.aoc.nrao.edu/workspaces/workflow:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME marconi.aoc.nrao.edu/workspaces/workflow:dev +# - docker push marconi.aoc.nrao.edu/workspaces/workflow:$CI_COMMIT_SHORT_SHA +# - docker push marconi.aoc.nrao.edu/workspaces/workflow:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME +# - docker push marconi.aoc.nrao.edu/workspaces/workflow:dev +# rules: +# - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "development"' +# when: manual -push dev capability: - stage: push-dev - script: - - echo "$HARBOR_PASSWORD" | docker login -u "$HARBOR_USER" --password-stdin $HARBOR_URL - - docker tag marconi.aoc.nrao.edu/workspaces/capability:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME marconi.aoc.nrao.edu/workspaces/capability:dev - - docker push marconi.aoc.nrao.edu/workspaces/capability:$CI_COMMIT_SHORT_SHA - - docker push marconi.aoc.nrao.edu/workspaces/capability:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME - rules: - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_COMMIT_MESSAGE =~ /\A(?i)Merge/ && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "development"' - # needs: ["build dev capability"] +# push dev capability: +# stage: push-dev +# script: +# - echo "$HARBOR_PASSWORD" | docker login -u "$HARBOR_USER" --password-stdin $HARBOR_URL +# - docker tag marconi.aoc.nrao.edu/workspaces/capability:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME marconi.aoc.nrao.edu/workspaces/capability:dev +# - docker push marconi.aoc.nrao.edu/workspaces/capability:$CI_COMMIT_SHORT_SHA +# - docker push marconi.aoc.nrao.edu/workspaces/capability:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME +# - docker push marconi.aoc.nrao.edu/workspaces/capability:dev +# rules: +# - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "development"' +# when: manual # Cleanup # clean runner: @@ -109,4 +129,7 @@ push dev capability: # stage: deploy-dev # script: # - env SWARM_NODE_ENV="dev" docker stack deploy --compose-file docker-compose.dev.yml workspaces-dev +# environment: +# name: development +# url: https://wirth.aoc.nrao.edu # when: manual \ No newline at end of file