Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
.gitlab-ci.yml 5.07 KiB
variables:
  IMAGE_ORG: xpub
  IMAGE_NAME: xpub
  BASE_DOMAIN: gateway.xpub.semioticsquares.com
  CONFIGURATION_REPOSITORY: https://gitlab.coko.foundation/xpub/deployment-config.git

stages:
  - build
  - test
  - review
  - staging
  - production
  - demo

build:
  image: docker:latest
  stage: build
  script:
    - docker version
    - docker build -t $IMAGE_ORG/$IMAGE_NAME:$CI_COMMIT_SHA .
    - if [ -z "$DOCKERHUB_USERNAME" ] || [ -z "$DOCKERHUB_PASSWORD" ]; then echo "Not pushing" && exit 0; fi
    - docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
    - echo "Ignore warning! Cannot perform an interactive login from a non TTY device"
    - docker push $IMAGE_ORG/$IMAGE_NAME:$CI_COMMIT_SHA

lint:
  image: $IMAGE_ORG/$IMAGE_NAME:$CI_COMMIT_SHA
  stage: test
  variables:
    GIT_STRATEGY: none
  script:
    - cd ${HOME}
    - npm run lint

test:
  image: $IMAGE_ORG/$IMAGE_NAME:$CI_COMMIT_SHA
  stage: test
  variables:
    GIT_STRATEGY: none
  script:
    - cd ${HOME}
    - npm run test

push:latest:
  image: docker:latest
  stage: staging
  script:
    - if [ -z "$DOCKERHUB_USERNAME" ] || [ -z "$DOCKERHUB_PASSWORD" ]; then echo "Not pushing" && exit 0; fi
    - docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
    - echo "Ignore warning! Cannot perform an interactive login from a non TTY device"
    - docker build -t $IMAGE_ORG/$IMAGE_NAME:latest --label COMMIT_SHA=$CI_COMMIT_SHA .
    - docker push $IMAGE_ORG/$IMAGE_NAME:latest
  only:
  - master

# -----------------------------------------------
# xpub-collabra ---------------------------------
# -----------------------------------------------

review:xpub-collabra:
  image: pubsweet/deployer:latest
  stage: review
  variables:
    PACKAGE_NAME: xpub-collabra
    FORCE_FRESH_DB: "yes"
    REQUIRES_PROVISIONING: "yes"
  environment:
    name: $PACKAGE_NAME/review/$CI_COMMIT_REF_NAME
    # !! kube-lego will fail if domain > 64 chars
    url: "http://${CI_ENVIRONMENT_SLUG}.${BASE_DOMAIN}"