.gitlab-ci.yml 4.3 KB
Newer Older
1
stages:
2
  - docker_image
3
  - build
4
  - test-results
5

6

7
build:
8
  image: registry.gitlab.gnome.org/gnome/pitivi:master
9
  stage: build
10
  artifacts:
11
    paths:
12
      - xunit.xml
13
  script:
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
    - export BUILDDIR=${HOME}/pitivi
    - export XUNIT_PATH=${CI_PROJECT_DIR}/xunit.xml
    - 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}
    - flatpak-builder ${FLATPAK_BUILDER_CACHE} --ccache --force-clean app build/flatpak/org.pitivi.Pitivi.json
    - ${RUN_IN_SANDBOX} meson mesonbuild/
    - ${RUN_IN_SANDBOX} ninja -C mesonbuild/
    - 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}

31 32 33 34 35 36 37 38 39 40 41 42 43
test-results:
  image: registry.gitlab.gnome.org/gnome/pitivi:master
  stage: test-results
  artifacts:
    paths:
      - test-results
  dependencies:
    - build
  script:
    - (wget https://gitlab.gnome.org/GNOME/${CI_PROJECT_NAME}/-/jobs/artifacts/${CI_COMMIT_REF_NAME}/download?job=test-results -O history.zip && unzip history.zip && mv test-results history && ls history/) || echo "No history"
    - /opt/allure/bin/allure generate --clean --output test-results/ history/ .
    - printf "=========================\n\n TEST RESULTS WILL BE AVAILABLE AT https://gnome.pages.gitlab.gnome.org/-/${CI_PROJECT_NAME}/-/jobs/${CI_JOB_ID}/artifacts/test-results/index.html\n\n==================="

44 45 46 47 48 49 50 51 52 53 54 55 56 57
.build_emplate: &build_docker_image
    image: docker:latest
    services:
        - docker:dind
    script:
        # For debugging
        - echo ${BRANCH}
        - export IMAGE="${CI_REGISTRY}/${NAMESPACE}/${CI_PROJECT_NAME}:${BRANCH}"
        - echo ${IMAGE}
        - export BASE_IMAGE="registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:3.28"
        - echo ${BASE_IMAGE}
        - export TMPIMAGENAME="tmp-pitivi-${BRANCH}"
        - echo ${TMPIMAGENAME}

luz.paz's avatar
luz.paz committed
58 59
        # 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`.
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
        - export ALLURE_VERSION=2.7.0
        - export ALLURE_DL_URL="https://bintray.com/qameta/generic/download_file?file_path=io%2Fqameta%2Fallure%2Fallure%2F2.7.0%2Fallure-${ALLURE_VERSION}.zip"
        - export INSTALL_ALLURE="yum install java wget -y && wget ${ALLURE_DL_URL} -O allure.zip && unzip allure.zip && mv allure-${ALLURE_VERSION} /opt/allure && chmod +x /opt/allure/bin/allure && rm allure.zip"
        - export RUN_IN_SANDBOX="flatpak-builder --filesystem=${BUILDDIR} --filesystem=${CI_PROJECT_DIR} --env=PITIVI_DEVELOPMENT=1 --run app ${MANIFEST}"

        - export BUILDDIR="\${HOME}/pitivi"
        - export CLONE_PITIVI="git clone https://gitlab.gnome.org/GNOME/pitivi.git --single-branch \${HOME}/pitivi -b ${BRANCH}"

        - export BUILD_PITIVI="flatpak-builder ${BUILDDIR}/app ${BUILDDIR}/build/flatpak/org.pitivi.Pitivi.json --state-dir=\${HOME}/flatpak-cache --ccache"

        - docker run --privileged --name ${TMPIMAGENAME} ${BASE_IMAGE} bash -c "${INSTALL_ALLURE} && ${CLONE_PITIVI} && ${BUILD_PITIVI} && rm -Rf ${BUILDDIR}"
        - 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