diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 51ca7c924c575d4e6fe6976dc5655a245b852381..ae58d21a4632930acccb7ba6f0a456210012a5af 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,27 +6,59 @@ workflow: rules: - if: $CI_PIPELINE_SOURCE == "push" -test: - rules: - - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH +stages: + - build + - test + - publish + +build_conda: + stage: build script: - - export IMAGE="${DOCKER_ORG}/${DOCKER_REPO}:latest" - - docker build -t $IMAGE . - - docker run --rm $IMAGE tests/test.sh + - mamba env create --force -f environment.yml + - echo $CONDA_DEFAULT_ENV + +build_docker: + stage: build + before_script: + - export IMAGE= + - echo "IMAGE=${DOCKER_ORG}/${DOCKER_REPO}" >> build.env + - echo "TAG=${DOCKER_ORG}/${DOCKER_REPO}" >> build.env + script: + - docker build -t ${IMAGE}:${TAG} . + artifacts: + reports: + dotenv: build.env + +test_conda: + stage: test + needs: + job: build_conda + before_script: + - conda activate ascii-alignment-pileup + script: + - tests/test.sh + +test_docker: + stage: test + needs: + - job: build_docker + artifacts: true + script: + - docker run --rm ${IMAGE}:${TAG} tests/test.sh -test_and_publish: +publish_docker: + stage: publish rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - script: + needs: + - job: build_docker + artifacts: true + - job: test_docker + before_script: + - export IMAGE="${DOCKER_ORG}/${DOCKER_REPO}:latest" - export VERSION=$(grep 'version <-' ascii_alignment_pileup.R | cut -f2 -d'"') - - export IMAGE="${DOCKER_ORG}/${DOCKER_REPO}" - - | - docker build \ - -t ${IMAGE}:${VERSION} \ - --build-arg version=$VERSION \ - . - - docker run --rm ${IMAGE}:${VERSION} tests/test.sh + script: - echo "${DOCKER_TOKEN}" | docker login -u "${DOCKER_USER}" --password-stdin - - docker tag ${IMAGE}:${VERSION} ${IMAGE}:latest + - docker tag ${IMAGE}:${TAG} ${IMAGE}:${VERSION} + - docker push ${IMAGE}:${TAG} - docker push ${IMAGE}:${VERSION} - - docker push ${IMAGE}:latest