123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- image: "node:15-slim"
- stages:
- - test
- - artifact
- - release
- before_script:
- # Install dependencies
- - apt-get update
- - apt-get install -y git python3 build-essential libxtst6
- # Prepare Chrome for puppeteer
- - apt-get install -y wget gnupg
- - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
- - sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
- - apt-get update
- - apt-get install -y google-chrome-stable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 --no-install-recommends
- # Build Send, run npm tests
- test:
- stage: test
- script:
- - npm ci
- - npm run lint
- - npm test
- # Build Docker image, export Docker image artifact
- artifact-docker:
- stage: artifact
- image: docker:latest
- needs: []
- services:
- - docker:dind
- variables:
- IMG_FILE: "send:git-$CI_COMMIT_SHORT_SHA.tar"
- IMG_NAME: "send:git-$CI_COMMIT_SHORT_SHA"
- before_script: []
- script:
- - docker build -t $IMG_NAME .
- - docker image save -o $IMG_FILE $IMG_NAME
- artifacts:
- name: artifact-docker
- paths:
- - $IMG_FILE
- expire_in: 1 week
- # Release public Docker image for the master branch
- release-docker-master:
- stage: release
- image: docker:latest
- dependencies:
- - artifact-docker
- services:
- - docker:dind
- only:
- - master
- variables:
- IMG_IMPORT_FILE: "send:git-$CI_COMMIT_SHORT_SHA.tar"
- IMG_IMPORT_NAME: "send:git-$CI_COMMIT_SHORT_SHA"
- IMG_NAME: "registry.gitlab.com/timvisee/send:master-$CI_COMMIT_SHORT_SHA"
- before_script: []
- script:
- # Login in to registry
- - 'docker login registry.gitlab.com -u $DOCKER_USER -p $DOCKER_PASS'
- # Load existing, retag for new image images
- - docker image load -i $IMG_IMPORT_FILE
- - docker tag $IMG_IMPORT_NAME $IMG_NAME
- # Publish tagged image
- - docker push $IMG_NAME
- - 'echo "Docker image artifact published, available as:" && echo " docker pull $IMG_NAME"'
- # Release public Docker image for a version tag
- release-docker:
- stage: release
- image: docker:latest
- dependencies:
- - artifact-docker
- services:
- - docker:dind
- only:
- - /^v(\d+\.)*\d+$/
- variables:
- IMG_IMPORT_FILE: "send:git-$CI_COMMIT_SHORT_SHA.tar"
- IMG_IMPORT_NAME: "send:git-$CI_COMMIT_SHORT_SHA"
- IMG_NAME: "registry.gitlab.com/timvisee/send:$CI_COMMIT_REF_NAME"
- IMG_NAME_LATEST: "registry.gitlab.com/timvisee/send:latest"
- before_script: []
- script:
- # Login in to registry
- - 'docker login registry.gitlab.com -u $DOCKER_USER -p $DOCKER_PASS'
- # Load existing, retag for new image images
- - docker image load -i $IMG_IMPORT_FILE
- - docker tag $IMG_IMPORT_NAME $IMG_NAME
- - docker tag $IMG_IMPORT_NAME $IMG_NAME_LATEST
- # Publish tagged image
- - docker push $IMG_NAME
- - docker push $IMG_NAME_LATEST
- - 'echo "Docker image artifact published, available as:" && echo " docker pull $IMG_NAME_LATEST" && echo " docker pull $IMG_NAME"'
|