diff --git a/Jenkinsfile b/Jenkinsfile index e258879..07e45b2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -218,6 +218,7 @@ pipeline { env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache' + env.CITEST_IMAGETAG = 'latest' } } } @@ -243,6 +244,7 @@ pipeline { env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/' env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache' + env.CITEST_IMAGETAG = 'develop' } } } @@ -268,6 +270,7 @@ pipeline { env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/' env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache' + env.CITEST_IMAGETAG = 'develop' } } } @@ -290,7 +293,7 @@ pipeline { -v ${WORKSPACE}:/mnt \ -e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \ -e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \ - ghcr.io/linuxserver/baseimage-alpine:3.20 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\ + ghcr.io/linuxserver/baseimage-alpine:3 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\ apk add --no-cache python3 && \ python3 -m venv /lsiopy && \ pip install --no-cache-dir -U pip && \ @@ -625,13 +628,16 @@ pipeline { echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin + if [[ "${PACKAGE_CHECK}" != "true" ]]; then + declare -A pids IFS=',' read -ra CACHE <<< "$BUILDCACHE" for i in "${CACHE[@]}"; do docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} & + pids[$!]="$i" done - for p in $(jobs -p); do - wait "$p" || { echo "job $p failed" >&2; exit 1; } + for p in "${!pids[@]}"; do + wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; } done fi ''' @@ -691,13 +697,16 @@ pipeline { echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin + if [[ "${PACKAGE_CHECK}" != "true" ]]; then + declare -A pids IFS=',' read -ra CACHE <<< "$BUILDCACHE" for i in "${CACHE[@]}"; do docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} & + pids[$!]="$i" done - for p in $(jobs -p); do - wait "$p" || { echo "job $p failed" >&2; exit 1; } + for p in "${!pids[@]}"; do + wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; } done fi ''' @@ -751,12 +760,14 @@ pipeline { echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin if [[ "${PACKAGE_CHECK}" != "true" ]]; then + declare -A pids IFS=',' read -ra CACHE <<< "$BUILDCACHE" for i in "${CACHE[@]}"; do docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} & + pids[$!]="$i" done - for p in $(jobs -p); do - wait "$p" || { echo "job $p failed" >&2; exit 1; } + for p in "${!pids[@]}"; do + wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; } done fi ''' @@ -881,7 +892,7 @@ pipeline { CI_DOCKERENV="LSIO_FIRST_PARTY=true" fi fi - docker pull ghcr.io/linuxserver/ci:latest + docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} if [ "${MULTIARCH}" == "true" ]; then docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64 docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} @@ -905,7 +916,7 @@ pipeline { -e WEB_PATH=\"${CI_WEBPATH}\" \ -e NODE_NAME=\"${NODE_NAME}\" \ -e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \ - -t ghcr.io/linuxserver/ci:latest \ + -t ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} \ python3 test_build.py''' } } @@ -931,9 +942,11 @@ pipeline { CACHEIMAGE=${i} fi done - docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} + docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \ + { if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } if [ -n "${SEMVER}" ]; then - docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} + docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \ + { if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } fi done ''' @@ -958,20 +971,27 @@ pipeline { CACHEIMAGE=${i} fi done - docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} - docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} + docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \ + { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } + docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \ + { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } if [ -n "${SEMVER}" ]; then - docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} - docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} + docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \ + { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } + docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \ + { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } fi done for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do - docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest - docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} - - docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} + docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest || \ + { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } + docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} || \ + { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } + docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \ + { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } if [ -n "${SEMVER}" ]; then - docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} + docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \ + { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } fi done ''' @@ -989,23 +1009,41 @@ pipeline { environment name: 'EXIT_STATUS', value: '' } steps { - echo "Pushing New tag for current commit ${META_TAG}" - sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \ - -d '{"tag":"'${META_TAG}'",\ - "object": "'${COMMIT_SHA}'",\ - "message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to main",\ - "type": "commit",\ - "tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' ''' - echo "Pushing New release for Tag" sh '''#! /bin/bash - curl -H "Authorization: token ${GITHUB_TOKEN}" -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq '. |.body' | sed 's:^.\\(.*\\).$:\\1:' > releasebody.json - echo '{"tag_name":"'${META_TAG}'",\ - "target_commitish": "main",\ - "name": "'${META_TAG}'",\ - "body": "**CI Report:**\\n\\n'${CI_URL:-N/A}'\\n\\n**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start - printf '","draft": false,"prerelease": false}' >> releasebody.json - paste -d'\\0' start releasebody.json > releasebody.json.done - curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done''' + echo "Auto-generating release notes" + if [ "$(git tag --points-at HEAD)" != "" ]; then + echo "Existing tag points to current commit, suggesting no new LS changes" + AUTO_RELEASE_NOTES="No changes" + else + AUTO_RELEASE_NOTES=$(curl -fsL -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github+json" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/generate-notes \ + -d '{"tag_name":"'${META_TAG}'",\ + "target_commitish": "main"}' \ + | jq -r '.body' | sed 's|## What.s Changed||') + fi + echo "Pushing New tag for current commit ${META_TAG}" + curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \ + -d '{"tag":"'${META_TAG}'",\ + "object": "'${COMMIT_SHA}'",\ + "message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to main",\ + "type": "commit",\ + "tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' + echo "Pushing New release for Tag" + curl -H "Authorization: token ${GITHUB_TOKEN}" -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq -r '. |.body' > releasebody.json + jq -n \ + --arg tag_name "$META_TAG" \ + --arg target_commitish "main" \ + --arg ci_url "${CI_URL:-N/A}" \ + --arg ls_notes "$AUTO_RELEASE_NOTES" \ + --arg remote_notes "$(cat releasebody.json)" \ + '{ + "tag_name": $tag_name, + "target_commitish": $target_commitish, + "name": $tag_name, + "body": ("**CI Report:**\\n\\n" + $ci_url + "\\n\\n**LinuxServer Changes:**\\n\\n" + $ls_notes + "\\n\\n**Remote Changes:**\\n\\n" + $remote_notes), + "draft": false, + "prerelease": false }' > releasebody.json.done + curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done + ''' } } // Add protection to the release branch diff --git a/package_versions.txt b/package_versions.txt index 5fad029..38ed158 100644 --- a/package_versions.txt +++ b/package_versions.txt @@ -35,21 +35,21 @@ curl 8.14.1-r2 apk danharrin/date-format-converter v0.3.1 php-composer danharrin/livewire-rate-limiting v2.1.0 php-composer dflydev/dot-access-data v3.0.3 php-composer -doctrine/dbal 4.3.3 php-composer +doctrine/dbal 4.3.4 php-composer doctrine/deprecations 1.1.5 php-composer doctrine/inflector 2.1.0 php-composer doctrine/lexer 3.0.1 php-composer dragonmantank/cron-expression v3.4.0 php-composer egulias/email-validator 4.0.4 php-composer -filament/actions v3.3.39 php-composer -filament/filament v3.3.39 php-composer -filament/forms v3.3.39 php-composer -filament/infolists v3.3.39 php-composer -filament/notifications v3.3.39 php-composer -filament/spatie-laravel-settings-plugin v3.3.39 php-composer -filament/support v3.3.39 php-composer -filament/tables v3.3.39 php-composer -filament/widgets v3.3.39 php-composer +filament/actions v3.3.43 php-composer +filament/filament v3.3.43 php-composer +filament/forms v3.3.43 php-composer +filament/infolists v3.3.43 php-composer +filament/notifications v3.3.43 php-composer +filament/spatie-laravel-settings-plugin v3.3.43 php-composer +filament/support v3.3.43 php-composer +filament/tables v3.3.43 php-composer +filament/widgets v3.3.43 php-composer findutils 4.10.0-r0 apk freetype 2.13.3-r0 apk fruitcake/php-cors v1.3.0 php-composer @@ -68,14 +68,14 @@ influxdata/influxdb-client-php 3.8.0 php-composer jq 1.8.0-r0 apk kirschbaum-development/eloquent-power-joins 4.2.8 php-composer laravel-notification-channels/telegram 6.0.0 php-composer -laravel/framework v12.30.1 php-composer -laravel/prompts v0.3.6 php-composer +laravel/framework v12.35.1 php-composer +laravel/prompts v0.3.7 php-composer laravel/sanctum v4.2.0 php-composer -laravel/serializable-closure v2.0.4 php-composer +laravel/serializable-closure v2.0.6 php-composer league/commonmark 2.7.1 php-composer league/config v1.2.0 php-composer -league/csv 9.25.0 php-composer -league/flysystem 3.30.0 php-composer +league/csv 9.27.0 php-composer +league/flysystem 3.30.1 php-composer league/flysystem-local 3.30.0 php-composer league/mime-type-detection 1.16.0 php-composer league/uri 7.5.1 php-composer @@ -138,47 +138,46 @@ nette/schema v1.3.2 php-composer nette/utils v4.0.8 php-composer nghttp2-libs 1.65.0-r0 apk nginx 1.28.0-r3 apk -nikic/php-parser v5.6.1 php-composer -nunomaduro/termwind v2.3.1 php-composer +nikic/php-parser v5.6.2 php-composer +nunomaduro/termwind v2.3.2 php-composer oniguruma 6.9.10-r0 apk openspout/openspout v4.32.0 php-composer openssl 3.5.4-r0 apk -pcre2 10.43-r1 apk -phiki/phiki v2.0.4 php-composer +pcre2 10.46-r0 apk php-http/client-common 2.7.2 php-composer php-http/discovery 1.20.0 php-composer php-http/httplug 2.4.1 php-composer php-http/message 1.16.2 php-composer php-http/promise 1.3.1 php-composer -php84 8.4.13-r0 apk -php84-common 8.4.13-r0 apk -php84-ctype 8.4.13-r0 apk -php84-curl 8.4.13-r0 apk -php84-dom 8.4.13-r0 apk -php84-fileinfo 8.4.13-r0 apk -php84-fpm 8.4.13-r0 apk -php84-gd 8.4.13-r0 apk -php84-iconv 8.4.13-r0 apk -php84-intl 8.4.13-r0 apk -php84-mbstring 8.4.13-r0 apk -php84-mysqlnd 8.4.13-r0 apk -php84-openssl 8.4.13-r0 apk -php84-pdo 8.4.13-r0 apk -php84-pdo_mysql 8.4.13-r0 apk -php84-pdo_pgsql 8.4.13-r0 apk -php84-pdo_sqlite 8.4.13-r0 apk +php84 8.4.14-r0 apk +php84-common 8.4.14-r0 apk +php84-ctype 8.4.14-r0 apk +php84-curl 8.4.14-r0 apk +php84-dom 8.4.14-r0 apk +php84-fileinfo 8.4.14-r0 apk +php84-fpm 8.4.14-r0 apk +php84-gd 8.4.14-r0 apk +php84-iconv 8.4.14-r0 apk +php84-intl 8.4.14-r0 apk +php84-mbstring 8.4.14-r0 apk +php84-mysqlnd 8.4.14-r0 apk +php84-openssl 8.4.14-r0 apk +php84-pdo 8.4.14-r0 apk +php84-pdo_mysql 8.4.14-r0 apk +php84-pdo_pgsql 8.4.14-r0 apk +php84-pdo_sqlite 8.4.14-r0 apk php84-pecl-igbinary 3.2.16-r1 apk php84-pecl-msgpack 3.0.0-r0 apk php84-pecl-redis 6.2.0-r0 apk -php84-phar 8.4.13-r0 apk -php84-session 8.4.13-r0 apk -php84-simplexml 8.4.13-r0 apk -php84-sockets 8.4.13-r0 apk -php84-tokenizer 8.4.13-r0 apk -php84-xml 8.4.13-r0 apk -php84-xmlreader 8.4.13-r0 apk -php84-xmlwriter 8.4.13-r0 apk -php84-zip 8.4.13-r0 apk +php84-phar 8.4.14-r0 apk +php84-session 8.4.14-r0 apk +php84-simplexml 8.4.14-r0 apk +php84-sockets 8.4.14-r0 apk +php84-tokenizer 8.4.14-r0 apk +php84-xml 8.4.14-r0 apk +php84-xmlreader 8.4.14-r0 apk +php84-xmlwriter 8.4.14-r0 apk +php84-zip 8.4.14-r0 apk phpdocumentor/reflection-common 2.2.0 php-composer phpdocumentor/type-resolver 1.10.0 php-composer phpoption/phpoption 1.9.4 php-composer @@ -209,8 +208,8 @@ spatie/color 1.8.0 php-composer spatie/invade 2.1.0 php-composer spatie/laravel-json-api-paginate 1.16.3 php-composer spatie/laravel-package-tools 1.92.7 php-composer -spatie/laravel-query-builder 6.3.5 php-composer -spatie/laravel-settings 3.4.4 php-composer +spatie/laravel-query-builder 6.3.6 php-composer +spatie/laravel-settings 3.5.0 php-composer spatie/laravel-webhook-server 3.8.3 php-composer spatie/temporary-directory 2.3.0 php-composer sqlite-libs 3.49.2-r1 apk @@ -218,18 +217,18 @@ ssl_client 1.37.0-r19 apk ssmtp 2.64-r22 apk swagger-php-tools 1.0.0 npm symfony/clock v7.3.0 php-composer -symfony/console v7.3.3 php-composer +symfony/console v7.3.4 php-composer symfony/css-selector v7.3.0 php-composer symfony/deprecation-contracts v3.6.0 php-composer -symfony/error-handler v7.3.2 php-composer +symfony/error-handler v7.3.4 php-composer symfony/event-dispatcher v7.3.3 php-composer symfony/event-dispatcher-contracts v3.6.0 php-composer symfony/finder v7.3.2 php-composer symfony/html-sanitizer v7.3.3 php-composer -symfony/http-foundation v7.3.3 php-composer -symfony/http-kernel v7.3.3 php-composer -symfony/mailer v7.3.3 php-composer -symfony/mime v7.3.2 php-composer +symfony/http-foundation v7.3.4 php-composer +symfony/http-kernel v7.3.4 php-composer +symfony/mailer v7.3.4 php-composer +symfony/mime v7.3.4 php-composer symfony/options-resolver v7.3.3 php-composer symfony/polyfill-ctype v1.33.0 php-composer symfony/polyfill-intl-grapheme v1.33.0 php-composer @@ -241,22 +240,22 @@ symfony/polyfill-php83 v1.33.0 php-composer symfony/polyfill-php84 v1.33.0 php-composer symfony/polyfill-php85 v1.33.0 php-composer symfony/polyfill-uuid v1.33.0 php-composer -symfony/process v7.3.3 php-composer -symfony/routing v7.3.2 php-composer +symfony/process v7.3.4 php-composer +symfony/routing v7.3.4 php-composer symfony/service-contracts v3.6.0 php-composer -symfony/string v7.3.3 php-composer -symfony/translation v7.3.3 php-composer +symfony/string v7.3.4 php-composer +symfony/translation v7.3.4 php-composer symfony/translation-contracts v3.6.0 php-composer symfony/uid v7.3.1 php-composer -symfony/var-dumper v7.3.3 php-composer +symfony/var-dumper v7.3.4 php-composer symfony/yaml v7.3.3 php-composer tijsverkoyen/css-to-inline-styles v2.3.0 php-composer tzdata 2025b-r0 apk utmps-libs 0.1.3.1-r0 apk vlucas/phpdotenv v5.6.2 php-composer voku/portable-ascii 2.0.3 php-composer -webmozart/assert 1.11.0 php-composer +webmozart/assert 1.12.0 php-composer xz-libs 5.8.1-r0 apk -zircote/swagger-php 5.3.2 php-composer +zircote/swagger-php 5.5.1 php-composer zlib 1.3.1-r2 apk zstd-libs 1.5.7-r0 apk