.gitlab-ci.yml | 81 ++++++++++++++++++++++++++++++++++++++++--- .gitlab-ci/ci.template | 37 +++++++++++++++++++ .gitlab-ci/config.yml | 4 +- .gitlab-ci/fedora-install.sh | 12 ++++++ 4 files changed, 128 insertions(+), 6 deletions(-) New commits: commit 59e53da82d471c20ba5e43b6aac07a9273303d50 Merge: 25f58a5 78235c0 Author: Akira TAGOH <akira@xxxxxxxxx> Date: Tue Mar 11 13:15:26 2025 +0000 Merge branch 'ci-release' into 'main' ci: Add a release workflow See merge request fontconfig/fontconfig!366 commit 78235c01ef4bded37bd77c8a5f6e95fca87d56c7 Author: Akira TAGOH <akira@xxxxxxxxx> Date: Mon Mar 10 17:22:23 2025 +0900 ci: Add a release workflow diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 989e5f9..f6578e0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -42,8 +42,8 @@ variables: # changing these will force rebuilding the associated image # Note: these tags have no meaning and are not tied to a particular # fontconfig version - FEDORA_TAG: '2025-02-17.3-c09ad6f8f869' - FREEBSD_TAG: '2025-02-17.3-40e170f4e005' + FEDORA_TAG: '2025-03-10.1-788fd421ac5d' + FREEBSD_TAG: '2025-03-10.1-8c6b4797d3ca' FEDORA_EXEC: 'bash .gitlab-ci/fedora-install.sh' FREEBSD_EXEC: 'bash .gitlab-ci/freebsd-install.sh' @@ -97,7 +97,7 @@ fedora:rawhide@container-prep: variables: GIT_STRATEGY: none FDO_DISTRIBUTION_VERSION: 'rawhide' - FDO_DISTRIBUTION_PACKAGES: '@buildsys-build autoconf automake clang-devel clang-tools-extra libtool gettext gettext-devel gperf expat-devel libxml2-devel freetype-devel json-c-devel git git-clang-format docbook-utils docbook-utils-pdf bubblewrap ninja-build wget python3-pip mingw64-expat mingw64-gcc mingw64-gettext mingw64-freetype mingw64-libxml2 rust cargo bindgen-cli' + FDO_DISTRIBUTION_PACKAGES: '@buildsys-build autoconf automake clang-devel clang-tools-extra curl libtool gettext gettext-devel gperf expat-devel libxml2-devel freetype-devel json-c-devel git git-clang-format docbook-utils docbook-utils-pdf bubblewrap ninja-build wget python3-pip mingw64-expat mingw64-gcc mingw64-gettext mingw64-freetype mingw64-libxml2 rust cargo bindgen-cli' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC @@ -107,7 +107,7 @@ fedora:41@container-prep: variables: GIT_STRATEGY: none FDO_DISTRIBUTION_VERSION: '41' - FDO_DISTRIBUTION_PACKAGES: '@buildsys-build autoconf automake clang-devel clang-tools-extra libtool gettext gettext-devel gperf expat-devel libxml2-devel freetype-devel json-c-devel git git-clang-format docbook-utils docbook-utils-pdf bubblewrap ninja-build wget python3-pip mingw64-expat mingw64-gcc mingw64-gettext mingw64-freetype mingw64-libxml2 rust cargo bindgen-cli' + FDO_DISTRIBUTION_PACKAGES: '@buildsys-build autoconf automake clang-devel clang-tools-extra curl libtool gettext gettext-devel gperf expat-devel libxml2-devel freetype-devel json-c-devel git git-clang-format docbook-utils docbook-utils-pdf bubblewrap ninja-build wget python3-pip mingw64-expat mingw64-gcc mingw64-gettext mingw64-freetype mingw64-libxml2 rust cargo bindgen-cli' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC @@ -117,7 +117,7 @@ fedora:40@container-prep: variables: GIT_STRATEGY: none FDO_DISTRIBUTION_VERSION: '40' - FDO_DISTRIBUTION_PACKAGES: '@buildsys-build autoconf automake clang-devel clang-tools-extra libtool gettext gettext-devel gperf expat-devel libxml2-devel freetype-devel json-c-devel git git-clang-format docbook-utils docbook-utils-pdf bubblewrap ninja-build wget python3-pip mingw64-expat mingw64-gcc mingw64-gettext mingw64-freetype mingw64-libxml2 rust cargo bindgen-cli' + FDO_DISTRIBUTION_PACKAGES: '@buildsys-build autoconf automake clang-devel clang-tools-extra curl libtool gettext gettext-devel gperf expat-devel libxml2-devel freetype-devel json-c-devel git git-clang-format docbook-utils docbook-utils-pdf bubblewrap ninja-build wget python3-pip mingw64-expat mingw64-gcc mingw64-gettext mingw64-freetype mingw64-libxml2 rust cargo bindgen-cli' FDO_DISTRIBUTION_TAG: $FEDORA_TAG FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC @@ -337,6 +337,18 @@ clang-format: - build*/test/*log - build*/fontconfig*/_build - build*/meson-logs/* + - build*/meson-dist/* + +.upload: + rules: + - if: $CI_COMMIT_TAG + variables: + PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/fontconfig/${CI_COMMIT_TAG}" + script: + - | + for f in $(pwd)/build-fontconfig-$CI_JOB_NAME_$CI_COMMIT_SHA-*/meson-dist/*; do + curl --location --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $f ${PACKAGE_REGISTRY_URL}/$(basename $f) + done ####################################### # # @@ -361,6 +373,7 @@ t_fedora:rawhide:autotools shared expat: - 'fedora:rawhide@container-prep' + t_fedora:rawhide:autotools shared libxml2: extends: - .build@template @@ -378,6 +391,7 @@ t_fedora:rawhide:autotools shared libxml2: - 'fedora:rawhide@container-prep' + t_fedora:rawhide:meson shared expat: extends: - .build@template @@ -394,6 +408,7 @@ t_fedora:rawhide:meson shared expat: - 'fedora:rawhide@container-prep' + t_fedora:rawhide:meson shared libxml2: extends: - .build@template @@ -410,6 +425,16 @@ t_fedora:rawhide:meson shared libxml2: needs: - 'fedora:rawhide@container-prep' +t_fedora:rawhide:meson shared libxml2:upload: + needs: + - t_fedora:rawhide:meson shared libxml2 + extends: + - .fdo.distribution-image@fedora + - .upload + variables: + FDO_DISTRIBUTION_VERSION: 'rawhide' + FDO_DISTRIBUTION_TAG: $FEDORA_TAG + t_fedora:rawhide:autotools static expat: extends: @@ -427,6 +452,7 @@ t_fedora:rawhide:autotools static expat: - 'fedora:rawhide@container-prep' + t_fedora:rawhide:autotools static libxml2: extends: - .build@template @@ -443,6 +469,7 @@ t_fedora:rawhide:autotools static libxml2: - 'fedora:rawhide@container-prep' + t_fedora:rawhide:meson static expat: extends: - .build@template @@ -459,6 +486,7 @@ t_fedora:rawhide:meson static expat: - 'fedora:rawhide@container-prep' + t_fedora:rawhide:meson static libxml2: extends: - .build@template @@ -475,6 +503,7 @@ t_fedora:rawhide:meson static libxml2: - 'fedora:rawhide@container-prep' + t_fedora:rawhide:mingw autotools static libxml2: extends: - .build@template @@ -493,6 +522,7 @@ t_fedora:rawhide:mingw autotools static libxml2: - 'fedora:rawhide@container-prep' + t_fedora:rawhide:mingw meson static expat: extends: - .build@template @@ -512,6 +542,7 @@ t_fedora:rawhide:mingw meson static expat: - 'fedora:rawhide@container-prep' + t_fedora:rawhide:meson static libxml2 fontations: extends: - .build@template @@ -529,6 +560,7 @@ t_fedora:rawhide:meson static libxml2 fontations: - 'fedora:rawhide@container-prep' + t_fedora:41:autotools shared expat: extends: - .build@template @@ -545,6 +577,7 @@ t_fedora:41:autotools shared expat: - 'fedora:41@container-prep' + t_fedora:41:autotools shared libxml2: extends: - .build@template @@ -562,6 +595,7 @@ t_fedora:41:autotools shared libxml2: - 'fedora:41@container-prep' + t_fedora:41:meson shared expat: extends: - .build@template @@ -578,6 +612,7 @@ t_fedora:41:meson shared expat: - 'fedora:41@container-prep' + t_fedora:41:meson shared libxml2: extends: - .build@template @@ -605,6 +640,14 @@ t_fedora:41:meson shared libxml2: + + + + + + + + @@ -625,6 +668,7 @@ t_fedora:40:autotools shared expat: - 'fedora:40@container-prep' + t_fedora:40:autotools shared libxml2: extends: - .build@template @@ -642,6 +686,7 @@ t_fedora:40:autotools shared libxml2: - 'fedora:40@container-prep' + t_fedora:40:meson shared expat: extends: - .build@template @@ -658,6 +703,7 @@ t_fedora:40:meson shared expat: - 'fedora:40@container-prep' + t_fedora:40:meson shared libxml2: extends: - .build@template @@ -685,6 +731,14 @@ t_fedora:40:meson shared libxml2: + + + + + + + + @@ -707,6 +761,7 @@ t_freebsd:14.1:autotools shared expat: - 'freebsd:14.1@container-prep' + t_freebsd:14.1:autotools shared libxml2: extends: - .build-in-qemu@template @@ -725,6 +780,7 @@ t_freebsd:14.1:autotools shared libxml2: - 'freebsd:14.1@container-prep' + t_freebsd:14.1:meson shared expat: extends: - .build-in-qemu@template @@ -742,6 +798,7 @@ t_freebsd:14.1:meson shared expat: - 'freebsd:14.1@container-prep' + t_freebsd:14.1:meson shared libxml2: extends: - .build-in-qemu@template @@ -759,6 +816,7 @@ t_freebsd:14.1:meson shared libxml2: - 'freebsd:14.1@container-prep' + ####################################### # # # deploy stage # @@ -795,8 +853,21 @@ pages: rules: - if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE != "merge_request_event" +make-release: + stage: deploy + image: registry.gitlab.com/gitlab-org/cli:latest + rules: + - if: $CI_COMMIT_TAG + variables: + PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/fontconfig/${CI_COMMIT_TAG}" + script: + - glab auth login -h ${CI_SERVER_HOST} -j ${CI_JOB_TOKEN} + - | + glab release create ${CI_COMMIT_TAG} --name "Release ${CI_COMMIT_TAG}" -a "[{\"name\": \"fontconfig-${CI_COMMIT_TAG}.tar.xz\", \"url\": \"${PACKAGE_REGISTRY_URL}/fontconfig-${CI_COMMIT_TAG}.tar.xz\"}, {\"name\": \"fontconfig-${CI_COMMIT_TAG}.tar.xz (sha256sum)\", \"url\": \"${PACKAGE_REGISTRY_URL}/fontconfig-${CI_COMMIT_TAG}.tar.xz.sha256sum\"}]" + workflow: rules: + - if: $CI_COMMIT_TAG - if: $CI_PIPELINE_SOURCE == "merge_request_event" - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS when: never diff --git a/.gitlab-ci/ci.template b/.gitlab-ci/ci.template index b2eb0c5..e993695 100644 --- a/.gitlab-ci/ci.template +++ b/.gitlab-ci/ci.template @@ -299,6 +299,18 @@ clang-format: - build*/test/*log - build*/fontconfig*/_build - build*/meson-logs/* + - build*/meson-dist/* + +.upload: + rules: + - if: $CI_COMMIT_TAG + variables: + PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/fontconfig/${CI_COMMIT_TAG}" + script: + - | + for f in $(pwd)/build-fontconfig-$CI_JOB_NAME_$CI_COMMIT_SHA-*/meson-dist/*; do + curl --location --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $f ${PACKAGE_REGISTRY_URL}/$(basename $f) + done ####################################### # # @@ -334,6 +346,18 @@ t_{{distro.name}}:{{version}}:{{build.name}}: - '{{distro.name}}:{{version}}@container-prep' {% endif %} +{% if 'upload' in build and build.upload == version %} +t_{{distro.name}}:{{version}}:{{build.name}}:upload: + needs: + - t_{{distro.name}}:{{version}}:{{build.name}} + extends: + - .fdo.distribution-image@{{distro.name}} + - .upload + variables: + FDO_DISTRIBUTION_VERSION: '{{version}}' + FDO_DISTRIBUTION_TAG: ${{distro.name.upper()}}_TAG +{% endif %} + {% endfor %} {% endfor %} {% endfor %} @@ -374,8 +398,21 @@ pages: rules: - if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE != "merge_request_event" +make-release: + stage: deploy + image: registry.gitlab.com/gitlab-org/cli:latest + rules: + - if: $CI_COMMIT_TAG + variables: + PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/fontconfig/${CI_COMMIT_TAG}" + script: + - glab auth login -h ${CI_SERVER_HOST} -j ${CI_JOB_TOKEN} + - | + glab release create ${CI_COMMIT_TAG} --name "Release ${CI_COMMIT_TAG}" -a "[{\"name\": \"fontconfig-${CI_COMMIT_TAG}.tar.xz\", \"url\": \"${PACKAGE_REGISTRY_URL}/fontconfig-${CI_COMMIT_TAG}.tar.xz\"}, {\"name\": \"fontconfig-${CI_COMMIT_TAG}.tar.xz (sha256sum)\", \"url\": \"${PACKAGE_REGISTRY_URL}/fontconfig-${CI_COMMIT_TAG}.tar.xz.sha256sum\"}]" + workflow: rules: + - if: $CI_COMMIT_TAG - if: $CI_PIPELINE_SOURCE == "merge_request_event" - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS when: never diff --git a/.gitlab-ci/config.yml b/.gitlab-ci/config.yml index 13a6f11..f98bfbe 100644 --- a/.gitlab-ci/config.yml +++ b/.gitlab-ci/config.yml @@ -1,4 +1,4 @@ -.default_tag: &default_tag "2025-02-17.3" +.default_tag: &default_tag "2025-03-10.1" distributions: - name: fedora @@ -27,6 +27,7 @@ distributions: FC_BUILD_TYPE: shared FC_XML_BACKEND: expat - name: "meson shared libxml2" + upload: 'rawhide' variables: FC_BUILDSYS: meson FC_BUILD_TYPE: shared @@ -123,6 +124,7 @@ packages: "automake", "clang-devel", "clang-tools-extra", + "curl", "libtool", "gettext", "gettext-devel", diff --git a/.gitlab-ci/fedora-install.sh b/.gitlab-ci/fedora-install.sh index 16c8d73..773ebfb 100644 --- a/.gitlab-ci/fedora-install.sh +++ b/.gitlab-ci/fedora-install.sh @@ -2,6 +2,18 @@ set -ex +# Disable fedora-cisco-openh264 repo to avoid signature verification fail during +# signature migration for new release. +# We don't need it. +dnf --version|grep dnf5 > /dev/null || ret=$? +if [[ $ret -eq 0 ]]; then + dnf -y install dnf5-plugins + dnf -y config-manager setopt fedora-cisco-openh264.enabled=0 +else + dnf -y install dnf-plugins-core + dnf -y config-manager --set-disabled fedora-cisco-openh264 +fi + # workaround to avoid conflict between systemd and systemd-standalone-sysusers dnf -y swap systemd-standalone-sysusers systemd dnf -y install wine