summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: e908f294490ad70acd9bf30d499139b8e82148a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
image: claudioandre/settings:fedora.dev
stages:
  - build
  - test
  - delivery

##
# Stage: Build
#
# Checks if GNOME Control Center is properly building and installing. This is the
# most important stage of the CI, and no MR should ever be merged if it breaks
# any of them.
##
build:
  stage: build
  artifacts:
    name: builded
    untracked: true
    expire_in: 3h30min

  script:
    - echo "== Info =="
    - build-aux/ci/ci-helper.sh "INFO"
    - build-aux/ci/ci-helper.sh "GIT_INFO"

    - echo "== Building =="
    - meson . _build
    - ninja -C _build 2>&1 | tee compilation.log

    - echo "== Installing =="
    - ninja -C _build install

    - echo "== Report =="
    - build-aux/ci/ci-helper.sh "WARNINGS"

##
# Stage: Test
#
# Runs the unit tests.
##
test:
  stage: test
  artifacts:
    name: log
    when: always
    paths:
    - $(pwd)/*.log
    - _build/meson-logs/*

  dependencies:
    - build

  script:
    - echo "== Info =="
    - build-aux/ci/ci-helper.sh "INFO"
    - build-aux/ci/ci-helper.sh "GIT_INFO"

    - |
      if [[ -n "${CI_COMMIT_TAG}" ]]; then
        echo "== Distro Test =="
        meson test -C _build
        ninja dist -C _build
      else
        echo "== Testing =="
        meson test -C _build --verbose --no-stdsplit
      fi

##
# Stage: Delivery
#
# Create a flatpak
##
packaging:
  stage: delivery
  image: claudioandre/settings:fedora.flatpak
  artifacts:
    name: package
    paths:
    - $(pwd)/*.flatpak

  variables:
    APPID: "org.gnome.SettingsDevel"
    BUNDLE: "org.gnome.SettingsDevel.flatpak"
    MANIFEST_PATH: "org.gnome.Settings.json"
    PATCHES: "build-aux/flatpak/*.patch"
    PROJECT_FILE: "build-aux/flatpak/org.gnome.Settings.json"
    PROJECT_ID: "org.gnome.Settings"
    PROJECT_NAME: "gnome-control-center.git"
    RUNTIME_REPO: "https://sdk.gnome.org/gnome-nightly.flatpakrepo"

  script:
    - echo "== Flatpak packaging =="

    # Move needed files to the root folder
    - cp ${PATCHES} . || true
    - cp ${PROJECT_FILE} ${MANIFEST_PATH}

    # Make it a develoment manifest
    - sed -i -n "p; s/$PROJECT_NAME//p" ${MANIFEST_PATH}
    - >
      sed -i "s,\"app-id\" : \"$PROJECT_ID\",\"app-id\" : \"<<ID>>\",g" ${MANIFEST_PATH}
    - >
      sed -i "s,\"url\" : \"https://gitlab.gnome.org/GNOME/$PROJECT_NAME\",\"branch\" : \"<<current>>\"\,,g" ${MANIFEST_PATH}
    - >
      sed -i "s,\"url\" : \"https://gitlab.gnome.org/GNOME/\",\"path\" : \".\",g" ${MANIFEST_PATH}

    # Adjust the manifest to HEAD
    - sed -i "s,<<ID>>,$APPID,g" ${MANIFEST_PATH}
    - sed -i "s,<<current>>,origin/$CI_COMMIT_REF_NAME,g" ${MANIFEST_PATH}

    - flatpak-builder --bundle-sources --repo=devel build ${MANIFEST_PATH}
    - flatpak build-bundle devel ${BUNDLE} --runtime-repo=${RUNTIME_REPO} ${APPID}

  cache:
    paths:
    - .flatpak-builder/cache

  environment:
    name: review/$CI_COMMIT_REF_NAME
    url: https://gitlab.gnome.org/$CI_PROJECT_PATH/-/jobs/$CI_JOB_ID/artifacts/raw/${BUNDLE}
  when: manual