Skip to content
Snippets Groups Projects
Select Git revision
  • 23180bd763720604d58cce70bacf89eff04782ae
  • main default protected
  • SDC-1588-bugfix-location-for-multiple-inputs
  • SDCH-4259-attempt2-after-broken-branch
  • SDCH-4259-bugfix-add-successor
  • nv-testing-locally
  • SDC-1056/disable-debug-true
  • add-prometheus
  • lta-exporter-experiment
9 results

.gitlab-ci.yml

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    .gitlab-ci.yml 6.34 KiB
    stages:
      - test
      - build
      - integration
      - deploy_to_test
      - deploy_to_production
    
    workflow:
      rules:
        # don't create a pipeline if its a commit pipeline, on a branch and that branch has open merge requests.
        - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
          when: never
        - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
          variables:
            DOCKER_IMAGE_TAG: "latest"
        - if: $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH
          variables:
            DOCKER_IMAGE_TAG: "$CI_COMMIT_REF_SLUG"
    
    test-code:
      image: python:3.10
      stage: test
      services:
        - postgres:11.0
      variables:
        POSTGRES_DB: ldv-spec-db
        POSTGRES_USER: postgres
        POSTGRES_PASSWORD: "atdb123"
      script:
        - cd ldvspec
        - pip install -r requirements/dev.txt
        - python manage.py migrate --settings ldvspec.settings.ci
        - python manage.py test --settings ldvspec.settings.ci
    
    docker-build:
      image: docker:20-cli
      stage: build
      services:
        - docker:dind
      before_script:
        - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
      script:
        - HASH=$(sha256sum ldvspec/Dockerfile.base | awk '{ print $1 }')
        - >
          if docker manifest inspect $CI_REGISTRY_IMAGE/base:$HASH > /dev/null; then
            echo "Base image exists"
          else
            docker build -t "$CI_REGISTRY_IMAGE/base:$HASH" -f ldvspec/Dockerfile.base ldvspec
            docker push "$CI_REGISTRY_IMAGE/base:$HASH"
          fi
        - echo "Build using $CI_REGISTRY_IMAGE/base:$HASH"
        # Try pulling the existing image for layer reuse; || true to ignore if it does not exist
        #- docker build --cache-from $CI_REGISTRY_IMAGE:$DOCKER_IMAGE_TAG --build-arg BASE_IMAGE="$CI_REGISTRY_IMAGE/base:$HASH" --pull -t "$CI_REGISTRY_IMAGE:$DOCKER_IMAGE_TAG" ldvspec
        - docker build --pull -t "$CI_REGISTRY_IMAGE:$DOCKER_IMAGE_TAG" ldvspec
        - docker push "$CI_REGISTRY_IMAGE:$DOCKER_IMAGE_TAG"
    
    integration-test:
      image: docker:20-cli
      services:
        - docker:20-dind
      before_script:
        - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
      stage: integration
      tags:
        - "sdc-dev"
      script:
        - cd integration
        # TODO: cache the integration image
        - docker compose build
        - docker compose up -d atdb-backend ldv-specification-backend