Skip to content
Snippets Groups Projects
.gitlab-ci.yml 3.79 KiB
variables:
  MAIN_BRANCH: &main-branch main
  BASE_IMAGE_NAME: $CI_REGISTRY_IMAGE
  BASE_IMAGE_TAG: $CI_COMMIT_SHA
  DOCKER_AUTH_CONFIG: $DOCKER_AUTH_RO
  KANIKO_REGISTRY_MIRROR: docker-proxy.binary.picodata.io


workflow:
  # See https://docs.gitlab.com/ee/ci/jobs/job_control.html#avoid-duplicate-pipelines
  rules:
    # To avoid duplicate pipelines we disable merge request events,
    # leaving only pushes and manual triggering.
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
      when: never
    - if: $CI_PIPELINE_SOURCE == "push"
    - if: $CI_PIPELINE_SOURCE == "web"

default:
  tags:
    - docker

stages:
  - build-base-image
  - lint
  - pack-doc
  - upload
  - deploy

build-base-image:
  stage: build-base-image
  variables:
    DOCKERFILE: "Dockerfile"
    PUSH_DOCKER: ""
    GIT_USERNAME: $CI_REGISTRY_USER
    GIT_PASSWORD: $CI_REGISTRY_PASSWORD
  image:
    name: docker-public.binary.picodata.io/kaniko-project/executor:v1.20.1-debug
    entrypoint: ['']
    pull_policy: [if-not-present]
  script:
    - echo "Build picodata doc..."
    - cd docker/static
    - >
      /kaniko/executor --context $CI_PROJECT_DIR --dockerfile ${DOCKERFILE}
      --build-arg IMAGE_DIR=$CI_PROJECT_DIR
      --build-arg COMMIT_HASH=${CI_COMMIT_SHA} ${PUSH_DOCKER}
      --cache=false --cache-run-layers=true --single-snapshot --compressed-caching=false --use-new-run --snapshot-mode=redo --cleanup
      --destination ${BASE_IMAGE_NAME}:${BASE_IMAGE_TAG}

lint:
  image: ${BASE_IMAGE_NAME}:${BASE_IMAGE_TAG}
  stage: lint
  script:
    - echo "Checking picodata doc..."
    - pipenv run lint
    - echo "Picodata doc successfully checked"

pack-doc:
  image: ${BASE_IMAGE_NAME}:${BASE_IMAGE_TAG}
  stage: pack-doc
  variables:
    SED_SLUG: 's/[^a-zA-Z0-9.]+/_/g'
  before_script:
    - |
      if [ "$CI_COMMIT_BRANCH" == "main" ]; then
        PICODATA_DOC_VER="devel"
      elif [ "$CI_COMMIT_BRANCH" == "$MAIN_BRANCH" ]; then
        PICODATA_DOC_VER="$MAIN_BRANCH"
      else