Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
.gitlab-ci.yml 6.43 KiB
variables:
  CCACHE_COMPILERCHECK: content
  CCACHE_DIR: "${CI_PROJECT_DIR}/.ccache"
  # prevent configure tzdata hanging apt install commands
  DEBIAN_FRONTEND: noninteractive

include:
  - template: 'Workflows/Branch-Pipelines.gitlab-ci.yml'

stages:
  - prepare
  - build

.build-synapse-image:
  stage: prepare
  image:
    # newer version doesn't seem to like our arm runner
    name: gcr.io/kaniko-project/executor:v1.6.0-debug
    entrypoint: [""]
  rules:
    - if: $CI_COMMIT_BRANCH
      changes:
        - .ci/synapse/Dockerfile
        - .ci/synapse/setup-synapse.sh
        - .ci/synapse/service/synapse/*
        - .ci/synapse/service/postgresql/*
  script:
    - mkdir -p /kaniko/.docker
    - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
    - /kaniko/executor --whitelist-var-run=false --context $CI_PROJECT_DIR/.ci/synapse --dockerfile $CI_PROJECT_DIR/.ci/synapse/Dockerfile --destination $CI_REGISTRY_IMAGE/synapse-${M_ARCH}:latest

build synapse amd64:
  extends: .build-synapse-image
  tags: [docker]
  variables:
    M_ARCH: x86_64

build synapse arm64:
  extends: .build-synapse-image
  tags: [docker-arm64]
  variables:
    M_ARCH: aarch64

.build-linux:
  stage: build
  image:
    name: ubuntu:22.04
  services:
    - name: $CI_REGISTRY_IMAGE/synapse-${M_ARCH}:latest
      alias: synapse
  variables:
    TRAVIS_OS_NAME: linux
  before_script:
    - apt-get update
    - apt-get install -y software-properties-common
    - add-apt-repository ppa:ubuntu-toolchain-r/test -y
    - apt-get update && apt-get -y install --no-install-recommends build-essential ninja-build libssl-dev git ccache curl lcov gcovr cmake libgtest-dev
    # need recommended deps for wget
    - apt-get -y install wget
    - rm -rf ../.hunter && mv .hunter ../.hunter || true
  script:
    - curl -s -f -k https://synapse:8008/_matrix/client/versions
    - export PATH="/usr/lib/ccache:${PATH}"
    - export CMAKE_BUILD_PARALLEL_LEVEL=$(cat /proc/cpuinfo | awk '/^processor/{print $3}' | wc -l)
    - export PATH="/usr/local/bin/:${PATH}"
    - cmake -GNinja -H. -Bbuild
        -DCMAKE_INSTALL_PREFIX=.deps/usr
        -DHUNTER_ROOT="../.hunter"
        -DHUNTER_ENABLED=ON -DBUILD_SHARED_LIBS=OFF
        -DCMAKE_BUILD_TYPE=Debug -DHUNTER_CONFIGURATION_TYPES=Debug