# .gitlab-ci.yml -- to test some source code build scenarios # Copyright (C) 2016-2020 Olaf Meeuwissen # # License: GPL-3.0+ variables: REGISTRY_HUB: "registry.gitlab.com/sane-project/ci-envs" CONFIGURE_MINI: "--enable-silent-rules" CONFIGURE_FULL: "--with-usb --with-usb-record-replay --with-avahi --enable-pnm-backend --with-libcurl --with-poppler-glib" stages: - tarball - compile - snapshot - release # This job creates the source tarball that is the *sole* input to our # compile stage. The job is meant to be run on the stable release of # Debian GNU/Linux. make-dist: image: $REGISTRY_HUB:debian-bullseye-mini stage: tarball script: - git ls-files | xargs ./tools/style-check.sh - ./autogen.sh - ./tools/create-changelog.sh - ./configure - make dist artifacts: paths: - sane-backends-*.tar.gz expire_in: 1 day .compile_template: &compile_definition stage: compile script: - mkdir build - cd build - tar xzf ../sane-backends-*.tar.gz --strip-components=1 - ./configure $CONFIGURE_OPTS - make -j2 -k $MAKE_FLAGS debian-10-full: image: $REGISTRY_HUB:debian-buster-full variables: CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL" MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-Werror" <<: *compile_definition debian-11-mini: image: $REGISTRY_HUB:debian-bullseye-mini variables: CONFIGURE_OPTS: "$CONFIGURE_MINI" MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-Werror" <<: *compile_definition # In addition to the regular compile check, the full Debian stable # environment is used to keep some of the HTML documentation that's # available from our website up-to-date. debian-11-full: image: $REGISTRY_HUB:debian-bullseye-full variables: CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL" MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-Werror" <<: *compile_definition after_script: - make -C build/doc html-pages - rm -rf lists && mkdir lists && mv build/doc/*.html lists/ - cd build/doc && doxygen doxygen-sanei.conf && mv sanei-html ../../doc artifacts: paths: - sane-backends-*.tar.gz - lists - doc/sanei-html expire_in: 1 day fedora-36-clang: image: $REGISTRY_HUB:fedora-36-clang variables: CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL" MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-Werror" <<: *compile_definition alpine-3.15-musl: image: $REGISTRY_HUB:alpine-3.15-musl variables: CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL" MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-Werror" <<: *compile_definition allow_failure: true ubuntu-22.04-lts: image: $REGISTRY_HUB:ubuntu-jammy-dist variables: CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL" MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-Werror" <<: *compile_definition # This snapshot stage job makes sure that the source tarball has all # it needs to rebuild itself, install everything built and cleans up # without leaving any droppings behind when uninstalling. The build # result will be available as a snapshot for a limited time period. # People that prefer a source tarball to work with should use this # snapshot. # Some HTML documentation derived from this project's source is also # uploaded for use by our website so it uses the latest information. # It gets these artifacts from the full compile job on Debian stable, # hence the dependency. make-distcheck: image: $REGISTRY_HUB:debian-bullseye-full stage: snapshot dependencies: - debian-11-full script: - tar xzf sane-backends-*.tar.gz --strip-components=1 - rm sane-backends-*.tar.gz - ./configure - make distcheck artifacts: paths: - sane-backends-*.tar.gz - lists - doc/sanei-html expire_in: 90 days # For release tags only, this manual job handles putting all of the # releasables on the Project Releases page. See the script for more # details. upload: image: alpine stage: release before_script: - apk --no-cache add curl git jq script: - ./tools/create-release.sh only: - tags when: manual variables: GIT_DEPTH: "3" allow_failure: false