Skip to content
Snippets Groups Projects
.gitlab-ci.yml 2.69 KiB
Newer Older
Dominik Hebeler's avatar
Dominik Hebeler committed
stages:
  - prepare
Dominik Hebeler's avatar
Dominik Hebeler committed
  - build
Dominik Hebeler's avatar
Dominik Hebeler committed
prepare_node:
Dominik Hebeler's avatar
Dominik Hebeler committed
  stage: prepare
Dominik Hebeler's avatar
Dominik Hebeler committed
  image: node:10
Dominik Hebeler's avatar
Dominik Hebeler committed
  before_script:
Dominik Hebeler's avatar
Dominik Hebeler committed
    - npm install
Dominik Hebeler's avatar
Dominik Hebeler committed
  script: 
    - npm run prod
Dominik Hebeler's avatar
Dominik Hebeler committed
  artifacts:
    paths:
      - node_modules
Dominik Hebeler's avatar
Dominik Hebeler committed
      - public/css/all.css
  cache:
    # Cache per Branch
Dominik Hebeler's avatar
Dominik Hebeler committed
    key: "node-$CI_JOB_STAGE-$CI_COMMIT_REF_SLUG"
Dominik Hebeler's avatar
Dominik Hebeler committed
    paths:
      - node_modules
Dominik Hebeler's avatar
Dominik Hebeler committed
  only:
    - branches
Dominik Hebeler's avatar
Dominik Hebeler committed
    - tags
    
prepare_composer:
  stage: prepare
  image: composer/composer:latest
  script:
Dominik Hebeler's avatar
Dominik Hebeler committed
    - composer install
Dominik Hebeler's avatar
Dominik Hebeler committed
  artifacts:
    paths:
      - vendor
  cache:
Dominik Hebeler's avatar
Dominik Hebeler committed
    key: "composer-$CI_JOB_STAGE-$CI_COMMIT_REF_SLUG"
Dominik Hebeler's avatar
Dominik Hebeler committed
    paths:
Dominik Hebeler's avatar
Dominik Hebeler committed
      - vendor

Dominik Hebeler's avatar
Dominik Hebeler committed
build:
Dominik Hebeler's avatar
Dominik Hebeler committed
  stage: build
Dominik Hebeler's avatar
Dominik Hebeler committed
  image: "registry.gitlab.com/gitlab-org/cluster-integration/auto-build-image/master:stable"
  variables:
    DOCKER_TLS_CERTDIR: ""
  services:
    - docker:stable-dind
  script:
    - |
      if [[ -z "$CI_COMMIT_TAG" ]]; then
        export CI_APPLICATION_REPOSITORY=${CI_APPLICATION_REPOSITORY:-$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG}
        export CI_APPLICATION_TAG=${CI_APPLICATION_TAG:-$CI_COMMIT_SHA}
      else
        export CI_APPLICATION_REPOSITORY=${CI_APPLICATION_REPOSITORY:-$CI_REGISTRY_IMAGE}
        export CI_APPLICATION_TAG=${CI_APPLICATION_TAG:-$CI_COMMIT_TAG}
      fi
    - |
      if ! docker info &>/dev/null; then
Dominik Hebeler's avatar
Dominik Hebeler committed
        export DOCKER_HOST='tcp://docker-dind.gitlab:2375'
Dominik Hebeler's avatar
Dominik Hebeler committed
      fi
    - |
      if [[ -n "$CI_REGISTRY" && -n "$CI_REGISTRY_USER" ]]; then
        echo "Logging to GitLab Container Registry with CI credentials..."
        docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
      fi
    - |
      if [[ -f Dockerfile ]]; then
        echo "Building Dockerfile-based application..."
      else
        echo "Building Heroku-based application using gliderlabs/herokuish docker image..."
        cp /build/Dockerfile Dockerfile
      fi
    # shellcheck disable=SC2154 # missing variable warning for the lowercase variables
    # shellcheck disable=SC2086 # double quoting for globbing warning for $AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGS
    - docker pull $CI_APPLICATION_REPOSITORY:latest
Dominik Hebeler's avatar
Dominik Hebeler committed
    - docker build --cache-from $CI_REGISTRY_IMAGE:latest --build-arg BUILDPACK_URL="$BUILDPACK_URL" --build-arg HTTP_PROXY="$HTTP_PROXY" --build-arg http_proxy="$http_proxy" --build-arg HTTPS_PROXY="$HTTPS_PROXY" --build-arg https_proxy="$https_proxy" --build-arg FTP_PROXY="$FTP_PROXY" --build-arg ftp_proxy="$ftp_proxy" --build-arg NO_PROXY="$NO_PROXY" --build-arg no_proxy="$no_proxy" $AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGS --tag "$CI_APPLICATION_REPOSITORY:$CI_APPLICATION_TAG" --tag "$CI_APPLICATION_REPOSITORY:latest" .
Dominik Hebeler's avatar
Dominik Hebeler committed
    - docker push "$CI_APPLICATION_REPOSITORY:latest"
    - docker push "$CI_APPLICATION_REPOSITORY:$CI_APPLICATION_TAG"
Dominik Hebeler's avatar
Dominik Hebeler committed
  only:
    - branches
    - tags