diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 78240e392..7df73bbb0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,9 @@ -include: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_ci_initiative.yml' +include: + - remote: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_ci_initiative.yml' + - remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/5888c7388134cbe4661600222fe9befb10441f6e/templates/fedora.yml' stages: + - prep - review - build - test @@ -18,6 +21,41 @@ variables: - tags - merge_requests +.gnome-shell.fedora:33: + variables: + FDO_DISTRIBUTION_VERSION: 33 + FDO_DISTRIBUTION_TAG: '2020-11-17.0' + FDO_UPSTREAM_REPO: GNOME/gnome-shell + FDO_DISTRIBUTION_EXEC: | + # For syntax checks using js78 + dnf install -y findutils mozjs78-devel && + + # For static analysis with eslint + dnf install -y nodejs && + npm install -g eslint && + + dnf group install -y 'Development Tools' \ + 'C Development Tools and Libraries' && + dnf install -y meson && + dnf install -y 'pkgconfig(gio-2.0)' 'pkgconfig(gio-unix-2.0)' \ + 'pkgconfig(gnome-autoar-0)' 'pkgconfig(json-glib-1.0)' && + + ./.gitlab-ci/install-meson-project.sh \ + -Dman=false \ + https://gitlab.gnome.org/GNOME/gnome-shell.git \ + 3.38.0 \ + subprojects/extensions-tool/ \ + ./generate-translations.sh && + + dnf clean all + +build-fedora-container: + extends: + - .fdo.container-build@fedora@x86_64 + - .gnome-shell.fedora:33 + stage: prep + <<: *only_default + check_commit_log: image: registry.gitlab.gnome.org/gnome/mutter/master:v4 stage: review @@ -34,10 +72,12 @@ check_commit_log: junit: commit-message-junit-report.xml js_check: - image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v2 + extends: + - .fdo.distribution-image@fedora + - .gnome-shell.fedora:33 stage: review script: - - find js -name '*.js' -exec js68 -c -s '{}' ';' 2>&1 | tee $JS_LOG + - find js -name '*.js' -exec js78 -c '{}' ';' 2>&1 | tee $JS_LOG - (! grep -q . $JS_LOG) <<: *only_default artifacts: @@ -46,7 +86,9 @@ js_check: when: on_failure eslint: - image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v2 + extends: + - .fdo.distribution-image@fedora + - .gnome-shell.fedora:33 stage: review script: - export NODE_PATH=$(npm root -g) @@ -73,14 +115,18 @@ eslint_mr: when: always potfile_check: - image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v2 + extends: + - .fdo.distribution-image@fedora + - .gnome-shell.fedora:33 stage: review script: - ./.gitlab-ci/check-potfiles.sh <<: *only_default no_template_check: - image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v2 + extends: + - .fdo.distribution-image@fedora + - .gnome-shell.fedora:33 stage: review script: - ./.gitlab-ci/check-template-strings.sh diff --git a/.gitlab-ci/Dockerfile b/.gitlab-ci/Dockerfile deleted file mode 100644 index fd0eb2a93..000000000 --- a/.gitlab-ci/Dockerfile +++ /dev/null @@ -1,24 +0,0 @@ -# Rebuild and push with -# -# cd .gitlab-ci/ -# podman build --format docker --no-cache -t registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v2 . -# podman push registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v2 -# - -FROM registry.fedoraproject.org/fedora:32 - -RUN dnf -y update && dnf -y upgrade && \ - dnf install -y 'dnf-command(copr)' git && \ - - # For syntax checks with `find . -name '*.js' -exec js68 -c -s '{}' ';'` - dnf install -y findutils mozjs68-devel && \ - - # For static analysis with eslint - dnf install -y nodejs && \ - npm install -g eslint && \ - - # Shameless plug for my own tooling; useful for generating zip - dnf copr enable -y fmuellner/gnome-shell-ci && \ - dnf install -y gnome-extensions-tool meson && \ - - dnf clean all diff --git a/.gitlab-ci/install-meson-project.sh b/.gitlab-ci/install-meson-project.sh new file mode 100755 index 000000000..feea61149 --- /dev/null +++ b/.gitlab-ci/install-meson-project.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +set -e + +if [[ $# -lt 4 ]]; then + echo Usage: $0 [options] [repo-url] [commit] [subdir] + echo Options: + echo -Dkey=val + exit 1 +fi + +MESON_OPTIONS=() + +while [[ $1 =~ ^-D ]]; do + MESON_OPTIONS+=( "$1" ) + shift +done + +REPO_URL="$1" +COMMIT="$2" +SUBDIR="$3" +PREPARE="$4" + +REPO_DIR="$(basename ${REPO_URL%.git})" + +git clone --depth 1 "$REPO_URL" -b "$COMMIT" +pushd "$REPO_DIR" +pushd "$SUBDIR" +sh -c "$PREPARE" +meson --prefix=/usr _build "${MESON_OPTIONS[@]}" +ninja -C _build install +popd +popd +rm -rf "$REPO_DIR"