mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-12-18 14:33:49 +01:00
371 lines
10 KiB
YAML
371 lines
10 KiB
YAML
stages:
|
|
- tests
|
|
- build
|
|
- publish
|
|
- release
|
|
|
|
variables:
|
|
DOC_BRANCH: doc
|
|
DOC_REMOTE: https://gitlab-ci-token:${ACCESS_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git
|
|
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
|
|
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_TAG}"
|
|
|
|
tests:bookworm:
|
|
image:
|
|
name: docker.io/brenard/ldapsaisie:bookworm
|
|
entrypoint: [""]
|
|
stage: tests
|
|
rules:
|
|
- changes:
|
|
- src/**/*.php
|
|
script:
|
|
- rm -fr vendor
|
|
- composer install
|
|
- service slapd start
|
|
- >
|
|
if [ "$GITLAB_CI" == "true" ]; then
|
|
./vendor/bin/phpstan analyse --no-interaction --configuration=.phpstan/config.neon --error-format=junit > tests-report-bookworm.xml
|
|
else
|
|
./vendor/bin/phpstan analyse --no-interaction --configuration=.phpstan/config.neon
|
|
fi
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- tests-report-bookworm.xml
|
|
reports:
|
|
junit: tests-report-bookworm.xml
|
|
|
|
tests:bullseye:
|
|
image:
|
|
name: docker.io/brenard/ldapsaisie:bullseye
|
|
entrypoint: [""]
|
|
stage: tests
|
|
rules:
|
|
- changes:
|
|
- src/**/*.php
|
|
script:
|
|
- rm -fr vendor
|
|
- composer install
|
|
- service slapd start
|
|
- >
|
|
if [ "$GITLAB_CI" == "true" ]; then
|
|
./vendor/bin/phpstan analyse --no-interaction --configuration=.phpstan/config.neon --error-format=junit > tests-report-bullseye.xml
|
|
else
|
|
./vendor/bin/phpstan analyse --no-interaction --configuration=.phpstan/config.neon
|
|
fi
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- tests-report-bullseye.xml
|
|
reports:
|
|
junit: tests-report-bullseye.xml
|
|
|
|
tests:buster:
|
|
image:
|
|
name: docker.io/brenard/ldapsaisie:buster
|
|
entrypoint: [""]
|
|
stage: tests
|
|
rules:
|
|
- changes:
|
|
- src/**/*.php
|
|
script:
|
|
- rm -fr vendor
|
|
- composer install
|
|
- service slapd start
|
|
- ./vendor/bin/phpstan analyse --no-interaction --configuration=.phpstan/config.neon --error-format=junit > tests-report-buster.xml
|
|
- >
|
|
if [ "$GITLAB_CI" == "true" ]; then
|
|
./vendor/bin/phpstan analyse --no-interaction --configuration=.phpstan/config.neon --error-format=junit > tests-report-buster.xml
|
|
else
|
|
./vendor/bin/phpstan analyse --no-interaction --configuration=.phpstan/config.neon
|
|
fi
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- tests-report-buster.xml
|
|
reports:
|
|
junit: tests-report-buster.xml
|
|
|
|
tests:stretch:
|
|
image:
|
|
name: docker.io/brenard/ldapsaisie:stretch
|
|
entrypoint: [""]
|
|
stage: tests
|
|
rules:
|
|
- changes:
|
|
- src/*
|
|
script:
|
|
- cd /tmp/
|
|
- composer require overtrue/phplint --dev
|
|
- cd -
|
|
- rm -f .phplint-cache
|
|
- /tmp/vendor/bin/phplint src
|
|
|
|
tests:jessie:
|
|
image:
|
|
name: docker.io/brenard/ldapsaisie:jessie
|
|
entrypoint: [""]
|
|
stage: tests
|
|
rules:
|
|
- changes:
|
|
- src/**/*.php
|
|
script:
|
|
- cd /tmp/
|
|
- composer require overtrue/phplint --dev
|
|
- cd -
|
|
- rm -f .phplint-cache
|
|
- /tmp/vendor/bin/phplint src
|
|
|
|
build:debian-stable:
|
|
image: docker.io/brenard/debian-python-deb:debian11
|
|
stage: build
|
|
cache:
|
|
paths:
|
|
- .cache/pip
|
|
only:
|
|
- tags
|
|
before_script:
|
|
# Gitlab CI use shallow clone, but we need full history to generate changelog
|
|
- git fetch --unshallow
|
|
script:
|
|
- ./build-deb.sh --install-build-deps
|
|
- rm -fr dist/ldapsaisie-*
|
|
- dpkg-parsechangelog --format dpkg|awk '/ ldapsaisie /,0'|tail -n +3 > dist/release-notes.md
|
|
artifacts:
|
|
paths:
|
|
- dist/*
|
|
|
|
build:debian-sid:
|
|
image: docker.io/brenard/debian-python-deb:debian11
|
|
stage: build
|
|
cache:
|
|
paths:
|
|
- .cache/pip
|
|
only:
|
|
- master
|
|
before_script:
|
|
# Gitlab CI use shallow clone, but we need full history to generate changelog
|
|
- git fetch --unshallow
|
|
script:
|
|
- ./build-deb.sh --install-build-deps --sid
|
|
- rm -fr dist/ldapsaisie-*
|
|
artifacts:
|
|
paths:
|
|
- dist/*
|
|
|
|
build:snapshot:
|
|
stage: build
|
|
image: docker.io/alpine
|
|
only:
|
|
- master
|
|
script:
|
|
- tar -czf ldapsaisie-snapshot.tar.gz --exclude=ldapsaisie-snapshot.tar.gz ./
|
|
artifacts:
|
|
paths:
|
|
- ldapsaisie-snapshot.tar.gz
|
|
|
|
build:doc:html:
|
|
stage: build
|
|
image: docker.io/python:alpine
|
|
cache:
|
|
paths:
|
|
- .cache/pip
|
|
- doc/venv
|
|
only:
|
|
- master
|
|
before_script:
|
|
- apk add make git
|
|
- git config user.name $GITLAB_USER_NAME
|
|
- git config user.email $GITLAB_USER_EMAIL
|
|
# Compute current version
|
|
# Note: Gitlab CI use shallow clone, be sure to have all commits since latest tag
|
|
- |
|
|
git fetch --tags
|
|
latest_tag_commit=$(git rev-list --tags --max-count=1)
|
|
commit_date=$(git show -s --format="%ad" --date=short $latest_tag_commit)
|
|
git fetch --shallow-since=$commit_date
|
|
VERSION=$(git describe --tags)
|
|
- cd doc
|
|
- git fetch origin $DOC_BRANCH
|
|
- git rev-parse --verify $DOC_BRANCH && git branch -D $DOC_BRANCH || echo "No existing local git $DOC_BRANCH branch"
|
|
- git checkout -b $DOC_BRANCH origin/$DOC_BRANCH
|
|
- git checkout $CI_COMMIT_SHA
|
|
- make clean && make venv
|
|
script:
|
|
- make LdapSaisie.html
|
|
- test -n "$CI_COMMIT_TAG" && DOC_TAG=stable || DOC_TAG=dev
|
|
- source venv/bin/activate # We must have to activate the venv to use mike (direct call not supported)
|
|
- mike deploy --branch $DOC_BRANCH --remote $DOC_REMOTE --push --update-aliases $VERSION $DOC_TAG
|
|
- mike set-default --branch $DOC_BRANCH --remote $DOC_REMOTE --push $DOC_TAG
|
|
artifacts:
|
|
paths:
|
|
- doc/LdapSaisie.html
|
|
|
|
build:doc:pdf:
|
|
stage: build
|
|
image:
|
|
name: docker.io/pink33n/html-to-pdf
|
|
entrypoint: ["/bin/sh", "-c"]
|
|
only:
|
|
- master
|
|
needs:
|
|
- build:doc:html
|
|
script:
|
|
- rm -f doc/LdapSaisie.pdf
|
|
- /usr/local/bin/entrypoint --url file://$(pwd)/doc/LdapSaisie.html --pdf doc/LdapSaisie.pdf || test -f doc/LdapSaisie.pdf
|
|
artifacts:
|
|
paths:
|
|
- doc/LdapSaisie.pdf
|
|
|
|
build:doc:epub:
|
|
stage: build
|
|
image:
|
|
name: docker.io/pandoc/core
|
|
entrypoint: ["/bin/sh", "-c"]
|
|
only:
|
|
- master
|
|
needs:
|
|
- build:doc:html
|
|
before_script:
|
|
- apk add make
|
|
script:
|
|
- cd doc
|
|
- test ! -d venv && mkdir venv && touch public_html LdapSaisie.html
|
|
- make LdapSaisie.epub
|
|
artifacts:
|
|
paths:
|
|
- doc/LdapSaisie.epub
|
|
|
|
build:doc:append_additional_versions:
|
|
stage: build
|
|
image: docker.io/python:alpine
|
|
only:
|
|
- master
|
|
needs:
|
|
- build:doc:html
|
|
- build:doc:pdf
|
|
- build:doc:epub
|
|
before_script:
|
|
- apk add git
|
|
- git config user.name $GITLAB_USER_NAME
|
|
- git config user.email $GITLAB_USER_EMAIL
|
|
# Compute current version
|
|
# Note: Gitlab CI use shallow clone, be sure to have all commits since latest tag
|
|
- |
|
|
git fetch --tags
|
|
latest_tag_commit=$(git rev-list --tags --max-count=1)
|
|
commit_date=$(git show -s --format="%ad" --date=short $latest_tag_commit)
|
|
git fetch --shallow-since=$commit_date
|
|
VERSION=$(git describe --tags)
|
|
- cd doc
|
|
- git fetch origin $DOC_BRANCH
|
|
- git rev-parse --verify $DOC_BRANCH && git branch -D $DOC_BRANCH || echo "No existing local git $DOC_BRANCH branch"
|
|
- git checkout -b $DOC_BRANCH origin/$DOC_BRANCH
|
|
- git pull origin $DOC_BRANCH
|
|
script:
|
|
- cp LdapSaisie.html LdapSaisie.pdf LdapSaisie.epub dist/$VERSION/
|
|
- git add dist/$VERSION/
|
|
- git commit --amend --no-edit
|
|
- git push --force $DOC_REMOTE $DOC_BRANCH
|
|
|
|
publish:doc:
|
|
stage: publish
|
|
image: docker.io/alpine:latest
|
|
only:
|
|
- master
|
|
needs:
|
|
- build:doc:append_additional_versions
|
|
before_script:
|
|
- apk update && apk add git openssh-client rsync
|
|
- eval $(ssh-agent -s)
|
|
- echo "$SSH_PRIVATE_KEY" | base64 -d | ssh-add -
|
|
- mkdir ~/.ssh
|
|
- echo "$SSH_HOST_KEY" | base64 -d > ~/.ssh/known_hosts
|
|
- git fetch origin $DOC_BRANCH
|
|
- git rev-parse --verify $DOC_BRANCH && git branch -D $DOC_BRANCH || echo "No existing local git $DOC_BRANCH branch"
|
|
- git checkout -b $DOC_BRANCH origin/$DOC_BRANCH
|
|
- git pull origin $DOC_BRANCH
|
|
script:
|
|
- rsync -atv --exclude '.git*' --delete --progress ./doc/dist/ $SSH_USER@$SSH_HOST:doc/
|
|
|
|
publish:snapshot:
|
|
stage: publish
|
|
image: docker.io/alpine:latest
|
|
only:
|
|
- master
|
|
needs:
|
|
- build:snapshot
|
|
before_script:
|
|
- apk update && apk add openssh-client rsync
|
|
- eval $(ssh-agent -s)
|
|
- echo "$SSH_PRIVATE_KEY" | base64 -d | ssh-add -
|
|
- mkdir ~/.ssh
|
|
- echo "$SSH_HOST_KEY" | base64 -d > ~/.ssh/known_hosts
|
|
script:
|
|
- rsync -atv ldapsaisie-snapshot.tar.gz $SSH_USER@$SSH_HOST:download/ldapsaisie-snapshot.tar.gz
|
|
|
|
publish:debian-stable:
|
|
stage: publish
|
|
image: docker.io/debian:stable-slim
|
|
needs:
|
|
- build:debian-stable
|
|
only:
|
|
- tags
|
|
before_script:
|
|
- apt-get update
|
|
- apt-get install -y --no-install-recommends rsync openssh-client dupload
|
|
- eval $(ssh-agent -s)
|
|
- echo "$SSH_PRIVATE_KEY" | base64 -d | ssh-add -
|
|
- mkdir ~/.ssh
|
|
- echo "$SSH_HOST_KEY" | base64 -d > ~/.ssh/known_hosts
|
|
- echo "$DUPLOAD_CONFIG" | base64 -d > ~/.dupload.conf
|
|
script:
|
|
- echo "Publish stable debian packages on APT repository..."
|
|
- dupload --to debian-stable dist/ldapsaisie*changes
|
|
|
|
publish:gitlab:
|
|
stage: publish
|
|
image:
|
|
name: docker.io/alpine/httpie
|
|
entrypoint: ["/bin/sh", "-c"]
|
|
needs:
|
|
- build:debian-stable
|
|
only:
|
|
- tags
|
|
script:
|
|
- ./.gitlab/publish.sh
|
|
artifacts:
|
|
paths:
|
|
- dist/release-notes.md
|
|
- dist/release-files.txt
|
|
|
|
publish:debian-sid:
|
|
stage: publish
|
|
image: docker.io/debian:stable-slim
|
|
only:
|
|
- master
|
|
needs:
|
|
- build:debian-sid
|
|
before_script:
|
|
- apt-get update
|
|
- apt-get install -y --no-install-recommends rsync openssh-client dupload
|
|
- eval $(ssh-agent -s)
|
|
- echo "$SSH_PRIVATE_KEY" | base64 -d | ssh-add -
|
|
- mkdir ~/.ssh
|
|
- echo "$SSH_HOST_KEY" | base64 -d > ~/.ssh/known_hosts
|
|
- echo "$DUPLOAD_CONFIG" | base64 -d > ~/.dupload.conf
|
|
script:
|
|
- echo "Publish Sid debian packages on APT repository..."
|
|
- dupload --to debian-sid dist/ldapsaisie*changes
|
|
|
|
release:
|
|
stage: release
|
|
image:
|
|
name: registry.gitlab.com/gitlab-org/release-cli:latest
|
|
entrypoint: ["/bin/sh", "-c"]
|
|
needs:
|
|
- publish:gitlab
|
|
only:
|
|
- tags
|
|
script:
|
|
- ./.gitlab/release.sh
|