.gitlab-ci.yml 3.71 KB
Newer Older
1
stages:
2
  - docker_image
3
  - build
4
  - deploy
5

6 7 8 9
variables:
  MANIFEST: build/flatpak/org.pitivi.Pitivi.json
  DBUS_ID: org.pitivi.Pitivi
  XUNIT_PATH: ${CI_PROJECT_DIR}/xunit.xml
10

11
build:
12
  image: registry.gitlab.gnome.org/gnome/pitivi:master-sdk_3.32
13
  stage: build
14
  artifacts:
15
    paths:
16
      - xunit.xml
17
  script:
18 19 20 21 22 23 24 25 26 27 28
    - export BUILDDIR=${HOME}/pitivi
    - export MANIFEST=${BUILDDIR}/build/flatpak/org.pitivi.Pitivi.json
    - export RUN_IN_SANDBOX="flatpak-builder --filesystem=${BUILDDIR} --filesystem=${CI_PROJECT_DIR} --env=PITIVI_DEVELOPMENT=1 --run app ${MANIFEST}"

    # Working around the fact that flatpak-builder *requires* the cache dir
    # to be on the same filesystem as the build dir
    - export FLATPAK_BUILDER_CACHE="--state-dir=${HOME}/flatpak-cache"
    - mv ${CI_PROJECT_DIR} ${BUILDDIR}
    - mkdir -p ${CI_PROJECT_DIR}

    - cd ${BUILDDIR}
29
    - flatpak-builder ${FLATPAK_BUILDER_CACHE} --ccache --repo=${CI_PROJECT_DIR}/repo --force-clean app build/flatpak/org.pitivi.Pitivi.json --subject="Rolling update for pitivi master" --body="See ${CI_JOB_URL}"
30 31
    - ${RUN_IN_SANDBOX} meson mesonbuild/
    - ${RUN_IN_SANDBOX} ninja -C mesonbuild/
32 33 34 35
    - xvfb-run -n 32 -s "-screen 0 640x480x24" ${RUN_IN_SANDBOX} gst-validate-launcher $PWD/tests/ptv_testsuite.py --dump-on-failure --timeout-factor 4 --xunit-file ${XUNIT_PATH} --logs-dir=${CI_PROJECT_DIR}/tests-logs
  cache:
    paths:
    - flatpak-cache
36
  artifacts:
37
    expire_in: 30 days
38
    paths:
39 40 41 42 43 44 45 46 47 48
    - repo/
    - tests-logs/
    reports:
      junit:
        - ${XUNIT_PATH}

deploy:
  tags:
    - PitiviBuildMachine
  stage: deploy
49
  script:
50 51 52 53
    - flatpak build-commit-from --src-repo=repo /srv/http --timestamp=NOW --gpg-sign=739E841A
  only:
    - master@GNOME/pitivi
    - 1.0@GNOME/pitivi
54
    - thiblahute/sdk3.32@GNOME/pitivi
55

56 57
# Not using a Dockerfile because we need the container to be privileged to run flatpak inside of it
# and it is not possible to use a privileged `docker build`.
58 59 60 61 62
.build_emplate: &build_docker_image
    image: docker:latest
    services:
        - docker:dind
    script:
63 64 65
        - export IMAGE="${CI_REGISTRY}/${NAMESPACE}/${CI_PROJECT_NAME}:${BRANCH}-sdk_3.32"
        - export BASE_IMAGE="registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:3.32"
        - export TMPIMAGENAME="tmp-pitivi-${BRANCH}-sdk_3.32"
66 67
        - export RUN_IN_SANDBOX="flatpak-builder --filesystem=${BUILDDIR} --filesystem=${CI_PROJECT_DIR} --env=PITIVI_DEVELOPMENT=1 --run app ${MANIFEST}"
        - export BUILDDIR="\${HOME}/pitivi"
68
        - export CLONE_PITIVI="git clone ${CI_PROJECT_URL}.git --single-branch \${HOME}/pitivi -b ${CI_COMMIT_REF_NAME}"
69 70
        - export BUILD_PITIVI="flatpak-builder ${BUILDDIR}/app ${BUILDDIR}/build/flatpak/org.pitivi.Pitivi.json --state-dir=\${HOME}/flatpak-cache --ccache"

71 72 73
        - env

        - docker run --privileged --name ${TMPIMAGENAME} ${BASE_IMAGE} bash -c "${CLONE_PITIVI} && ${BUILD_PITIVI} && rm -Rf ${BUILDDIR}"
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
        - docker commit ${TMPIMAGENAME} ${IMAGE}
        - docker rm ${TMPIMAGENAME}
        - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
        - docker push ${IMAGE}
    only:
        - triggers
        - schedules
    retry: 1

pitivi:master:
    stage: docker_image
    before_script:
        # https://stackoverflow.com/questions/2264428/converting-string-to-lower-case-in-bash#2264537
        - export NAMESPACE="$(echo "${CI_PROJECT_NAMESPACE}" | tr A-Z a-z)"
        - export BRANCH=master
    <<: *build_docker_image

pitivi:1.0:
    stage: docker_image
    before_script:
        # https://stackoverflow.com/questions/2264428/converting-string-to-lower-case-in-bash#2264537
        - export BRANCH=1.0
        - export NAMESPACE="$(echo "${CI_PROJECT_NAMESPACE}" | tr A-Z a-z)"
    <<: *build_docker_image