PeerTube/.gitlab-ci.yml

104 lines
2.7 KiB
YAML

image: chocobozzz/peertube-ci:10
stages:
- build-and-lint
- test
- clients
- docker-nightly
- external-plugins
cache:
key: yarn
paths:
- .yarn-cache
- cached-fixtures
build-openapi-clients:
stage: clients
only:
refs:
- master
- schedules
changes:
- support/doc/api/openapi.yaml
script:
- apt-get update -qq
- apt-get -yqqq install openjdk-8-jre
- yarn install --pure-lockfile
- scripts/openapi-peertube-version.sh
- scripts/openapi-clients.sh
build-nightly:
stage: docker-nightly
only:
- schedules
script:
- yarn install --pure-lockfile --cache-folder .yarn-cache
- npm run nightly
- mkdir "${HOME}/.ssh"
- chmod 700 "${HOME}/.ssh"
- if [ ! -z ${DEPLOYEMENT_KNOWN_HOSTS+x} ]; then echo -e "${DEPLOYEMENT_KNOWN_HOSTS}" > ${HOME}/.ssh/known_hosts; fi
- eval `ssh-agent -s`
- if [ ! -z ${DEPLOYEMENT_KEY+x} ]; then ssh-add <(echo "${DEPLOYEMENT_KEY}"); fi
- if [ ! -z ${DEPLOYEMENT_KEY+x} ]; then scp ./peertube-nightly-* ${DEPLOYEMENT_USER}@${DEPLOYEMENT_HOST}:../../web/nightly; fi
.docker: &docker
stage: docker-nightly
cache: {}
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
before_script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$CI_REGISTRY_AUTH\",\"email\":\"$CI_REGISTRY_EMAIL\"}}}" > /kaniko/.docker/config.json
script:
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/support/docker/production/Dockerfile.buster --destination $DOCKER_IMAGE_NAME
build-docker-develop:
<<: *docker
only:
- schedules
variables:
DOCKER_IMAGE_NAME: chocobozzz/peertube:develop-buster
build-docker-tag:
<<: *docker
only:
- tags
variables:
DOCKER_IMAGE_NAME: chocobozzz/peertube:$CI_COMMIT_TAG-buster
build-docker-master:
<<: *docker
only:
- master
variables:
DOCKER_IMAGE_NAME: chocobozzz/peertube:production-buster
test-external-plugins:
stage: external-plugins
only:
- schedules
services:
- name: postgres:9.6
alias: postgres
- name: redis:latest
alias: redis
- name: rroemhild/test-openldap
alias: ldap
variables:
POSTGRES_USER: peertube
POSTGRES_HOST_AUTH_METHOD: trust
REDIS_HOST: redis
artifacts:
expire_in: 1 day
paths:
- test*/logs
when: always
before_script:
- 'sed -i -z "s/database:\n hostname: ''localhost''/database:\n hostname: ''postgres''/" config/test.yaml'
- 'sed -i -z "s/redis:\n hostname: ''localhost''/redis:\n hostname: ''redis''/" config/test.yaml'
- NOCLIENT=1 yarn install --pure-lockfile --cache-folder .yarn-cache
script:
- PGHOST=postgres PGUSER=peertube npm run ci -- "external-plugins"