From 2bfff82b305ad5cece3e37dfd2d3fc2faa9d9044 Mon Sep 17 00:00:00 2001 From: Ben Banfield-Zanin Date: Fri, 19 Feb 2021 15:59:09 +0000 Subject: [PATCH] Improve the pipeline to attempt to distinguish branches for react-sdk --- .gitlab-ci.yml | 83 +++++++++++++++++++++++--------------------------- 1 file changed, 38 insertions(+), 45 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3b17cd51d2..174a41d68a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,50 +1,43 @@ -docker-build-master: - variables: - USE_CUSTOM_SDKS: "true" - JS_SDK_REF: "master" - JS_SDK_REPO: "https://github.com/matrix-org/matrix-js-sdk.git" - REACT_SDK_REPO: "https://gitlab-ci-token:$GL_BAYERN_REACT_SDK_TOKEN@gitlab.matrix.org/new-vector/dataport/bayern-react-sdk" - REACT_SDK_BRANCH: "master" - tags: ['shell'] - stage: build - before_script: - - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY - script: - - docker build --pull -t "$CI_REGISTRY_IMAGE" --build-arg "USE_CUSTOM_SDKS=$USE_CUSTOM_SDKS" --build-arg "JS_SDK_REF=$JS_SDK_REF" --build-arg "JS_SDK_REPO=$JS_SDK_REPO" --build-arg "REACT_SDK_REPO=$REACT_SDK_REPO" --build-arg "REACT_SDK_BRANCH=$REACT_SDK_BRANCH" . - - docker push "$CI_REGISTRY_IMAGE" - rules: - - if: $CI_COMMIT_BRANCH == "master" +stages: +- prepare +- build -docker-build: - variables: - USE_CUSTOM_SDKS: "true" - JS_SDK_REF: "master" - JS_SDK_REPO: "https://github.com/matrix-org/matrix-js-sdk.git" - REACT_SDK_REPO: "https://gitlab-ci-token:$GL_BAYERN_REACT_SDK_TOKEN@gitlab.matrix.org/new-vector/dataport/bayern-react-sdk" - REACT_SDK_BRANCH: "master" - tags: ['shell'] - stage: build - before_script: - - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY - script: - - docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" --build-arg "USE_CUSTOM_SDKS=$USE_CUSTOM_SDKS" --build-arg "JS_SDK_REF=$JS_SDK_REF" --build-arg "JS_SDK_REPO=$JS_SDK_REPO" --build-arg "REACT_SDK_REPO=$REACT_SDK_REPO" --build-arg "REACT_SDK_BRANCH=$REACT_SDK_BRANCH" . - - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" - rules: - - if: $CI_COMMIT_BRANCH != "master" && $CI_COMMIT_TAG == null +variables: + USE_CUSTOM_SDKS: "true" + JS_SDK_REF: "master" + JS_SDK_REPO: "https://github.com/matrix-org/matrix-js-sdk.git" + REACT_SDK_REPO: "https://gitlab-ci-token:$GL_BAYERN_REACT_SDK_TOKEN@gitlab.matrix.org/new-vector/dataport/bayern-react-sdk" + REACT_SDK_BRANCH: "master" -docker-build-tags: +prepare-master: variables: - USE_CUSTOM_SDKS: "true" - JS_SDK_REF: "master" - JS_SDK_REPO: "https://github.com/matrix-org/matrix-js-sdk.git" - REACT_SDK_REPO: "https://gitlab-ci-token:$GL_BAYERN_REACT_SDK_TOKEN@gitlab.matrix.org/new-vector/dataport/bayern-react-sdk" - REACT_SDK_BRANCH: "master" - tags: ['shell'] - stage: build - before_script: - - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY - script: - - docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME" --build-arg "USE_CUSTOM_SDKS=$USE_CUSTOM_SDKS" --build-arg "JS_SDK_REF=$JS_SDK_REF" --build-arg "JS_SDK_REPO=$JS_SDK_REPO" --build-arg "REACT_SDK_REPO=$REACT_SDK_REPO" --build-arg "REACT_SDK_BRANCH=$REACT_SDK_BRANCH" . - - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME" + SPECIAL_DOCKER_TAG: "$CI_REGISTRY_IMAGE:latest" + stage: prepare + rules: + - if: $CI_COMMIT_BRANCH == "master" && $REACT_SDK_BRANCH == "master" && $JS_SDK_REF == "master" + +prepare-tags: + variables: + SPECIAL_DOCKER_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME" + stage: prepare rules: - if: $CI_COMMIT_TAG + +docker-build: + tags: ['shell'] + stage: build + before_script: + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + - "[ -d './js-sdk' ] && rm -rf ./js-sdk" + - git clone --depth 1 --branch $JS_SDK_REF $JS_SDK_REPO js-sdk && cd js-sdk + - "export JS_SDK_SHA=$(git rev-parse --short=12 HEAD)" + - cd ../ + - "[ -d './react-sdk' ] && rm -rf ./react-sdk" + - git clone --depth 1 --branch $REACT_SDK_BRANCH $REACT_SDK_REPO react-sdk && cd react-sdk + - "export REACT_SDK_SHA=$(git rev-parse --short=12 HEAD)" + - cd ../ + - "export ELEMENT_WEB_SHA=$(git rev-parse --short=12 HEAD)" + - '[[ -z $SPECIAL_DOCKER_TAG ]] && export DOCKER_TAG="$CI_REGISTRY_IMAGE:$ELEMENT_WEB_SHA-react-$REACT_SDK_SHA-js-$JS_SDK_SHA" || export DOCKER_TAG="$SPECIAL_DOCKER_TAG"' + script: + - docker build --pull -t "$DOCKER_TAG" --build-arg "USE_CUSTOM_SDKS=$USE_CUSTOM_SDKS" --build-arg "JS_SDK_REF=$JS_SDK_REF" --build-arg "JS_SDK_REPO=$JS_SDK_REPO" --build-arg "REACT_SDK_REPO=$REACT_SDK_REPO" --build-arg "REACT_SDK_BRANCH=$REACT_SDK_BRANCH" . + - docker push "$DOCKER_TAG"