stages: - build - debian-package - release .image-buster: image: '${CONTAINER_REGISTRY_NAME}/exim-encrypt-dlfunc-build-buster' .image-bullseye: image: '${CONTAINER_REGISTRY_NAME}/exim-encrypt-dlfunc-build-bullseye' .image-focal: image: '${CONTAINER_REGISTRY_NAME}/exim-encrypt-dlfunc-build-focal' .code-coverage: stage: build script: - "export PATH=/usr/local/sbin:/usr/local/bin:${PATH}" - meson build -Db_coverage=true - cd build - ninja - ninja test - ninja coverage-xml - grep -Eo 'line-rate="[^"]+"' meson-logs/coverage.xml | head -n 1 | grep -Eo '[0-9.]+' | awk '{ printf "coverage\x3a %.2f%% of statements\n", $1 * 100 }' - ninja coverage-html - mv meson-logs/coveragereport ../coverage artifacts: paths: - coverage/ reports: cobertura: build/meson-logs/coverage.xml .build: stage: build script: - which meson - meson build - cd build - ninja - ninja test artifacts: paths: - build/src/libexim-encrypt-dlfunc.so - build/src/libexim-encrypt-dlfunc-genkeys - build/src/libexim-encrypt-dlfunc-decrypt-secretbox - build/src/libexim-encrypt-dlfunc-decrypt-sealedbox .debian-package: stage: debian-package script: - mkdir ~/.gnupg; chown root:root ~/.gnupg; chmod 700 ~/.gnupg - eval $(gpg-agent --batch --sh --disable-scdaemon) - echo "pinentry-mode loopback" > ~/.gnupg/gpg.conf - echo "allow-loopback-pinentry" > ~/.gnupg/gpg-agent.conf - gpg-connect-agent /bye - echo $DEBIAN_SIGNING_KEY_ASC | base64 -d | gpg --batch --import --always-trust --yes - echo "1DC7C2770DC111723D505DD61614D5CDEE1555A7:6:" | gpg --import-ownertrust - dpkg-buildpackage --sign-key=1DC7C2770DC111723D505DD61614D5CDEE1555A7 - mv -t . ../*.deb ../*.dsc ../*.tar.gz ../*.changes ../*.buildinfo artifacts: paths: - ./*.deb - ./*.dsc - ./*.tar.gz - ./*.changes - ./*.buildinfo code-coverage: extends: - .image-bullseye - .code-coverage needs: [ ] build:bullseye: extends: - .image-bullseye - .build - .code-coverage needs: [ ] build:focal: extends: - .image-focal - .build needs: [ ] build:buster: extends: - .build - .image-buster needs: [ ] debian-package:bullseye: extends: - .image-bullseye - .debian-package dependencies: - build:bullseye needs: [ "build:bullseye" ] debian-package:focal: extends: - .image-focal - .debian-package dependencies: - build:focal needs: [ "build:focal" ] debian-package:buster: extends: - .image-buster - .debian-package dependencies: - build:buster needs: [ "build:buster" ] prepare_job: stage: prepare # This stage must run before the release stage rules: - if: $CI_COMMIT_TAG when: never # Do not run this job when a tag is created manually # - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch script: - echo "TAG=v$(cat VERSION)" >> variables.env # and append to the variables.env file artifacts: reports: dotenv: variables.env # Use artifacts:reports:dotenv to expose the variables to other jobs release_job: stage: release image: registry.gitlab.com/gitlab-org/release-cli:latest rules: - if: $CI_COMMIT_TAG # Run this job when a tag is created manually script: - echo "running release_job" release: name: 'Release $CI_COMMIT_TAG' description: 'Created using the release-cli' tag_name: '$CI_COMMIT_TAG' ref: '$CI_COMMIT_TAG'