diff --git a/.gitlab-ci-files/deploy.yml b/.gitlab-ci-files/deploy.yml index 27e2814..bf31f0c 100644 --- a/.gitlab-ci-files/deploy.yml +++ b/.gitlab-ci-files/deploy.yml @@ -24,26 +24,30 @@ debian12-deploy: remi-rocky8-deploy: extends: .deploy + rules: + - changes: + - .gitlab-ci.yml script: - - ./deploy_packages.sh rockylinux + - ./deploy_packages.sh rockylinux 8 needs: - remi-rocky8-package - - remi-rocky8-test remi-rocky9-deploy: extends: .deploy + rules: + - changes: + - .gitlab-ci.yml script: - - ./deploy_packages.sh rockylinux + - ./deploy_packages.sh rockylinux 9 needs: - remi-rocky9-package - - remi-rocky9-test .deploy: stage: deploy tags: ["docker"] - only: - - master - - /^release/.*$/ + rules: + - if: $CI_COMMIT_REF_NAME == "master" + - if: $CI_COMMIT_REF_NAME =~ /^release/ before_script: - rm -f $CI_PROJECT_DIR/build/*devel*.rpm # Remove devel packages diff --git a/.gitlab-ci-files/package.yml b/.gitlab-ci-files/package.yml index 87b5e02..f2c8991 100644 --- a/.gitlab-ci-files/package.yml +++ b/.gitlab-ci-files/package.yml @@ -1,4 +1,6 @@ rocky8-package: + needs: + - prepare-package extends: .package image: gitlab.linphone.org:4567/bc/public/docker/rocky8-php:$ROCKY_8_IMAGE_VERSION script: @@ -8,9 +10,11 @@ rocky8-package: - dnf -y module enable php:remi-8.2 - dnf -y update php\* - dnf -y install php-sodium - - make rpm-el8 + - make package-el8 rocky9-package: + needs: + - prepare-package extends: .package image: gitlab.linphone.org:4567/bc/public/docker/rocky9-php:$ROCKY_9_IMAGE_VERSION script: @@ -20,16 +24,18 @@ rocky9-package: - dnf -y module enable php:remi-8.2 - dnf -y update php\* - dnf -y install php-sodium - - make rpm-el9 + - make package-el9 debian12-package: + needs: + - prepare-package extends: .debian_package image: gitlab.linphone.org:4567/bc/public/docker/debian12-php:$DEBIAN_12_IMAGE_VERSION .debian_package: extends: .package script: - - make deb + - make package-deb remi-rocky8-package: image: gitlab.linphone.org:4567/bc/public/docker/rocky8-php:$ROCKY_8_IMAGE_VERSION @@ -51,6 +57,9 @@ remi-rocky9-package: .remi-rocky-package: extends: .package + rules: + - changes: + - .gitlab-ci.yml script: # Remi - mkdir -p $CI_PROJECT_DIR/build @@ -88,7 +97,13 @@ remi-rocky9-package: - build/* when: always expire_in: 1 day + + variables: + COMPOSER_CACHE_DIR: $CI_PROJECT_DIR/.composer/cache + COMPOSER_ALLOW_SUPERUSER: 1 + cache: key: ${CI_COMMIT_REF_SLUG} paths: - flexiapi/vendor/ + - .composer/cache diff --git a/.gitlab-ci-files/prepare-package.yml b/.gitlab-ci-files/prepare-package.yml new file mode 100644 index 0000000..7e230f6 --- /dev/null +++ b/.gitlab-ci-files/prepare-package.yml @@ -0,0 +1,11 @@ +prepare-package: + tags: ["docker"] + stage: prepare-package + image: gitlab.linphone.org:4567/bc/public/docker/debian12-php:$DEBIAN_12_IMAGE_VERSION + script: + - make prepare-common + artifacts: + paths: + - rpmbuild/* + when: always + expire_in: 1 day diff --git a/.gitlab-ci-files/test.yml b/.gitlab-ci-files/test.yml index 5f80b24..5269757 100644 --- a/.gitlab-ci-files/test.yml +++ b/.gitlab-ci-files/test.yml @@ -3,19 +3,16 @@ rocky8-test: image: gitlab.linphone.org:4567/bc/public/docker/rocky8-php:$ROCKY_8_IMAGE_VERSION needs: - rocky8-package - - remi-rocky8-package rocky9-test: extends: .rocky-test image: gitlab.linphone.org:4567/bc/public/docker/rocky9-php:$ROCKY_9_IMAGE_VERSION needs: - rocky9-package - - remi-rocky9-package .rocky-test: extends: .test script: - - ls build - yum -y localinstall build/*.rpm - cd /opt/belledonne-communications/share/flexisip-account-manager/flexiapi - composer install --ignore-platform-req=ext-sodium # Rocky 8 use the external library @@ -36,31 +33,12 @@ debian12-test: - apt update - apt install -y ./build/*.deb - cd /opt/belledonne-communications/share/flexisip-account-manager/flexiapi - - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" - - php composer-setup.php - - php -r "unlink('composer-setup.php');" - - php composer.phar install + - composer install - vendor/bin/phpcs - vendor/bin/phpmd . ansi phpmd.xml - php artisan key:generate - vendor/bin/phpunit --log-junit $CI_PROJECT_DIR/flexiapi_phpunit.log -remi-rocky8-test: - extends: .test - image: gitlab.linphone.org:4567/bc/public/docker/rocky8-php:$ROCKY_8_IMAGE_VERSION - needs: - - remi-rocky8-package - script: - - yum -y localinstall build/*.rpm - -remi-rocky9-test: - extends: .test - image: gitlab.linphone.org:4567/bc/public/docker/rocky9-php:$ROCKY_9_IMAGE_VERSION - needs: - - remi-rocky9-package - script: - - yum -y localinstall build/*.rpm - mysql-latest-test: extends: .test image: gitlab.linphone.org:4567/bc/public/docker/debian12-php:$DEBIAN_12_IMAGE_VERSION @@ -75,6 +53,9 @@ mysql-latest-test: DB_DATABASE: flexiapi DB_PASSWORD: flexiapi DB_USERNAME: root + rules: + - changes: + - flexiapi/database/migrations/* script: - apt update - apt install -y ./build/*.deb diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7f61b18..5d2df3c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,11 +7,13 @@ variables: PHP_MSGPACK_REMI_VERSION: php-pecl-msgpack-2.2.0-3 include: + - '.gitlab-ci-files/prepare-package.yml' - '.gitlab-ci-files/package.yml' - '.gitlab-ci-files/test.yml' - '.gitlab-ci-files/deploy.yml' stages: + - prepare-package - package - test - deploy diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ede4f4..741fb43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,6 +62,7 @@ v2.0 - Fix FLEXIAPI-350 Fix wrongly assigned variables in some views - Fix FLEXIAPI-351 Fix import of CSV generated on Windows - Fix FLEXIAPI-352 Add missing errors box in the password change form +- Fix FLEXIAPI-356 Cleanup and reorganize the pipeline to mutualize some things and save time v1.6 ---- diff --git a/Makefile b/Makefile index 2d97ce7..e2b9702 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ else endif cleanup-package-semvers: - rm flexisip-account-manager.spec.run + rm -f flexisip-account-manager.spec.run prepare: cd flexiapi && php composer.phar install --ignore-platform-req=ext-redis --no-dev @@ -58,11 +58,13 @@ package-end-common: rm -rf $(OUTPUT_DIR)/rpmbuild/SPECS $(OUTPUT_DIR)/rpmbuild/SOURCES $(OUTPUT_DIR)/rpmbuild/SRPMS $(OUTPUT_DIR)/rpmbuild/BUILD $(OUTPUT_DIR)/rpmbuild/BUILDROOT rpm-el8-only: + mkdir -p build sed -i 's/Requires:.*/Requires: php >= 8.1, php-gd, php-pdo, php-redis, php-mysqlnd, php-mbstring/g' $(OUTPUT_DIR)/rpmbuild/SPECS/flexisip-account-manager.spec rpmbuild -v -bb --define 'dist .el8' --define '_topdir $(OUTPUT_DIR)/rpmbuild' --define "_rpmdir $(OUTPUT_DIR)/rpmbuild" $(OUTPUT_DIR)/rpmbuild/SPECS/flexisip-account-manager.spec @echo "📦✅ RPM el8 Package Created" rpm-el9-only: + mkdir -p build rpmbuild -v -bb --define 'dist .el9' --define '_topdir $(OUTPUT_DIR)/rpmbuild' --define "_rpmdir $(OUTPUT_DIR)/rpmbuild" $(OUTPUT_DIR)/rpmbuild/SPECS/flexisip-account-manager.spec @echo "📦✅ RPM el9 Package Created" @@ -72,6 +74,7 @@ rpm-cleanup: rm -r rpmbuild deb-only: + mkdir -p build sed -i 's/posttrans/post/g' $(OUTPUT_DIR)/rpmbuild/SPECS/flexisip-account-manager.spec rpmbuild -v -bb --with deb --define '_topdir $(OUTPUT_DIR)/rpmbuild' --define "_rpmfilename tmp.rpm" --define "_rpmdir $(OUTPUT_DIR)/rpmbuild" $(OUTPUT_DIR)/rpmbuild/SPECS/flexisip-account-manager.spec fakeroot alien -g -k --scripts $(OUTPUT_DIR)/rpmbuild/tmp.rpm @@ -88,11 +91,18 @@ deb-only: mv *.deb build/. -rpm-el8: prepare package-semvers package-common rpm-el8-only rpm-cleanup cleanup-package-semvers package-end-common -rpm-el8-dev: prepare-dev package-semvers package-common rpm-el8-only rpm-cleanup cleanup-package-semvers package-end-common -rpm-el9: prepare package-semvers package-common rpm-el9-only rpm-cleanup cleanup-package-semvers package-end-common -rpm-el9-dev: prepare-dev package-semvers package-common rpm-el9-only rpm-cleanup cleanup-package-semvers package-end-common -deb: prepare package-semvers package-common deb-only cleanup-package-semvers package-end-common -deb-dev: prepare-dev package-semvers package-common deb-only cleanup-package-semvers package-end-common +prepare-common: prepare package-semvers package-common + +package-el8: rpm-el8-only rpm-cleanup cleanup-package-semvers package-end-common +rpm-el8: prepare-common package-el8 +rpm-el8-dev: prepare-dev package-semvers package-common package-el8 + +package-el9: rpm-el9-only rpm-cleanup cleanup-package-semvers package-end-common +rpm-el9: prepare-common package-el9 +rpm-el9-dev: prepare-dev package-semvers package-common package-el9 + +package-deb: deb-only cleanup-package-semvers package-end-common +deb: prepare-common package-deb +deb-dev: prepare-dev package-semvers package-common package-deb .PHONY: rpm