summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: bdb78a2d48dcb96026a3359d5ad00e7561ddf420 (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
include:
 - remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/7811ba9814a3bad379377241c6c6b62d78b20eac/templates/arch.yml'

variables:
  FDO_UPSTREAM_REPO: gnome/gnome-initial-setup

stages:
  - prepare
  - build

.arch.container.common:
  variables:
    # When branching a stable release, change 'main'
    # to the release number/branch to ensure that
    # a new image will be created, tailored for the
    # stable branch.
    FDO_DISTRIBUTION_TAG: '2023-04-05.01-main'

# See also https://gitlab.freedesktop.org/freedesktop/ci-templates
build.container.arch@x86_64:
  extends:
  - '.fdo.container-build@arch'
  - '.arch.container.common'
  stage: 'prepare'
  variables:
    # no need to pull the whole tree for rebuilding the image
    GIT_STRATEGY: none
    # Expiry sets fdo.expires on the image
    FDO_EXPIRES_AFTER: 8w
    FDO_DISTRIBUTION_PACKAGES: >-
      accountsservice
      appstream
      base-devel
      flatpak
      fontconfig
      gdm
      geoclue
      geocode-glib
      git
      gnome-desktop-4
      gnome-online-accounts
      gsettings-desktop-schemas
      gobject-introspection
      gtk4
      gtk-doc
      itstool
      json-glib
      krb5
      libadwaita
      libglib-testing
      libgweather-4
      libibus
      libmalcontent
      libnm
      libnma-gtk4
      libpwquality
      librest
      libsecret
      malcontent
      meson
      polkit
      sassc
      webkit2gtk-5.0
      yelp-tools

.job_template: &job_definition
  extends:
    - '.fdo.distribution-image@arch'
    - '.arch.container.common'

  stage: build

  script:
    # In general, we would like warnings to be fatal. However, code copied from
    # gnome-control-center uses many deprecated functions. Until we have a good
    # answer to sharing that code (#68), make those warnings non-fatal.
    - meson setup
        --wrap-mode=nofallback
        --fatal-meson-warnings
        -Dsystemd=${EXPLICIT_FEATURES}
        --auto-features ${AUTO_FEATURES}
        ${OPTIONS}
        -Dwerror=true -Dc_args=-Wno-error=deprecated-declarations
        ${EXTRA_PARAMETERS}
        _build
        .
    - cd _build
    - ninja -v
    # Check that strings can be extracted
    - ninja -v gnome-initial-setup-pot
    # Check the package can be installed
    - DESTDIR=$(mktemp -d) ninja -v install
    - meson test
  artifacts:
    when: on_failure
    name: "gnome-initial-setup-${CI_COMMIT_REF_NAME}-${CI_JOB_NAME}"
    paths:
      - "${CI_PROJECT_DIR}/_build/meson-logs"

build-minimal:
  <<: *job_definition
  variables:
    EXPLICIT_FEATURES: 'false'
    AUTO_FEATURES: 'disabled'
    OPTIONS: ''

build-maximal:
  <<: *job_definition
  variables:
    EXPLICIT_FEATURES: 'true'
    AUTO_FEATURES: 'enabled'
    OPTIONS: '-Dvendor-conf-file=/var/lib/weird-vendor-specific-path.ini'