--- image: python:3.9-bullseye stages: - test - build - deploy before_script: - pip3 install coverage pycodestyle - export EASYWKS_VERSION=$(python -c 'import easywks; print(easywks.__version__)') test: stage: test script: - pip3 install -e . - python3 -m coverage run --rcfile=setup.cfg -m unittest discover easywks - python3 -m coverage combine - python3 -m coverage report --rcfile=setup.cfg codestyle: stage: test script: - pip3 install -e . - pycodestyle easywks build_docker: stage: build script: - docker build -t "registry.gitlab.com/s3lph/easywks:$CI_COMMIT_SHA" -f package/docker/Dockerfile . - docker tag "registry.gitlab.com/s3lph/easywks:$CI_COMMIT_SHA" "registry.gitlab.com/s3lph/easywks:$CI_COMMIT_REF_NAME" - if [[ -n "$CI_COMMIT_TAG" ]]; then docker tag "registry.gitlab.com/s3lph/easywks:$CI_COMMIT_SHA" "registry.gitlab.com/s3lph/easywks:$CI_COMMIT_TAG"; fi - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD registry.gitlab.com - docker push "registry.gitlab.com/s3lph/easywks:$CI_COMMIT_SHA" - docker push "registry.gitlab.com/s3lph/easywks:$CI_COMMIT_REF_NAME" - if [[ -n "$CI_COMMIT_TAG" ]]; then docker push "registry.gitlab.com/s3lph/easywks:$CI_COMMIT_TAG"; fi only: - staging - tags build_wheel: stage: build script: - python3 setup.py egg_info bdist_wheel - cd dist - sha256sum *.whl > SHA256SUMS artifacts: paths: - "dist/*.whl" - dist/SHA256SUMS only: - tags build_debian: stage: build script: - apt update && apt install lintian - echo -n > package/debian/easywks/usr/share/doc/easywks/changelog - | for version in "$(cat CHANGELOG.md | grep '" | grep -B 1000 "<"'!'"-- END CHANGES ${version} -->" | tail -n +2 | head -n -1 | sed -re 's/^-/ */g' >> package/debian/easywks/usr/share/doc/easywks/changelog echo "\n -- ${PACKAGE_AUTHOR} $(date -R)\n" >> package/debian/easywks/usr/share/doc/easywks/changelog done - gzip -9n package/debian/easywks/usr/share/doc/easywks/changelog - python3 setup.py egg_info install --root=package/debian/easywks/ --prefix=/usr --optimize=1 - cd package/debian - sed -re "s/__EASYWKS_VERSION__/${EASYWKS_VERSION}/g" -i easywks/DEBIAN/control - mkdir -p easywks/usr/lib/python3/dist-packages/ - rsync -a easywks/usr/lib/python3.9/site-packages/ easywks/usr/lib/python3/dist-packages/ - rm -rf easywks/usr/lib/python3.9/site-packages - find easywks/usr/lib/python3/dist-packages -name __pycache__ -exec rm -r {} \; 2>/dev/null || true - find easywks/usr/lib/python3/dist-packages -name '*.pyc' -exec rm {} \; - find easywks/usr/lib/python3/dist-packages -name '*.pyo' -exec rm {} \; - sed -re 's$#!/usr/local/bin/python3.9$#!/usr/bin/python3$' -i easywks/usr/bin/easywks - find easywks -type f -exec chmod 0644 {} \; - find easywks -type d -exec chmod 755 {} \; - chmod +x easywks/usr/bin/easywks easywks/DEBIAN/postinst easywks/DEBIAN/prerm easywks/DEBIAN/postrm - dpkg-deb --build easywks - mv easywks.deb "easywks_${EASTWKS_VERSION}-1_all.deb" - sudo -u nobody lintian "easywks_${EASTWKS_VERSION}-1_all.deb" - sha256sum *.deb > SHA256SUMS artifacts: paths: - "package/debian/*.deb" - package/debian/SHA256SUMS only: - tags release: stage: deploy script: - python3 package/release.py only: - tags