summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: 47d002c00bb44de73277ebe5de48da217cccc916 (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
include:
  - project: 'gnome/citemplates'
    file: 'flatpak/flatpak_ci_initiative.yml'

variables:
  MANIFEST_PATH: 'examples/demo/org.gnome.RestDemo.json'
  FLATPAK_MODULE: 'librest-demo'
  FLATPAK_BUILD_DIR: build
  LAST_ABI_BREAK: "a36606b6633e4244740793ab3a17d392b1cf6035"

image: fedora:36

stages:
  - build
  - docs
  - deploy

build-librest:
  stage: build
  except:
    - tags
  before_script:
    - dnf update -y --nogpgcheck
    - dnf -y install --nogpgcheck redhat-rpm-config
      glib2-devel gobject-introspection-devel libxml2-devel meson ninja-build libsoup-devel
      libsoup3-devel vala json-glib-devel git python3-jinja2 python3-toml python3-typogrify python3-pygments
      libadwaita-devel gtksourceview5-devel git libabigail
  script:
    - meson _build -Dexamples=true
    - ninja -C _build
    - bash +x ./.gitlab-ci/run-tests.sh
    - curl https://gitlab.freedesktop.org/hadess/check-abi/-/raw/main/contrib/check-abi-fedora.sh | bash
    - check-abi ${LAST_ABI_BREAK} $(git rev-parse HEAD)
  artifacts:
    reports:
      junit: "_build/${CI_JOB_NAME}-report.xml"
    name: "librest-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
    when: always
    paths:
      - "_build/config.h"
      - "_build/meson-logs"
      - "_build/${CI_JOB_NAME}-report.xml"

build-flatpak:
  extends: '.flatpak'
  stage: build
  before_script: []
  variables:
    RUNTIME_REPO: 'https://nightly.gnome.org/gnome-nightly.flatpakrepo'
    APP_ID: 'org.gnome.RestDemo'
    BUNDLE: 'org.gnome.RestDemo.flatpak'

.gidocgen-build:
  image: fedora:latest
  before_script:
    - export PATH="$HOME/.local/bin:$PATH"
    - dnf install -y python3 python3-pip python3-wheel gobject-introspection-devel graphviz ninja-build redhat-rpm-config
    - dnf install -y ${PROJECT_DEPS}
    - pip3 install --user meson==${MESON_VERSION} gi-docgen jinja2 Markdown markupsafe pygments toml typogrify
  script:
    - meson setup ${MESON_EXTRA_FLAGS} ${DOCS_FLAGS} _docs .
    - meson compile -C _docs
    - |
      pushd "_docs/${DOCS_PATH}" > /dev/null
      tar cf ${CI_PROJECT_NAME}-docs.tar .
      popd > /dev/null
    - mv _docs/${DOCS_PATH}/${CI_PROJECT_NAME}-docs.tar .
  artifacts:
    when: always
    name: 'Documentation'
    expose_as: 'Download the API reference'
    paths:
      - ${CI_PROJECT_NAME}-docs.tar

reference:
  stage: docs
  needs: []
  extends: .gidocgen-build
  variables:
    PROJECT_DEPS:
      docbook-style-xsl
      gcc
      gettext
      git
      glib2-devel
      libxml2-devel
      libxslt
      libsoup3-devel
      gtk-doc
      json-glib-devel
    MESON_VERSION: "0.56"
    MESON_EXTRA_FLAGS: "-Dintrospection=true -Dexamples=false"
    DOCS_FLAGS: -Dgtk_doc=true
    DOCS_PATH: docs/librest-1.0

pages:
  stage: deploy
  needs: ['reference']
  script:
    - mkdir public && cd public
    - tar xf ../${CI_PROJECT_NAME}-docs.tar
  artifacts:
    paths:
      - public
  only:
    - master