mirror of
https://github.com/linuxserver/docker-heimdall.git
synced 2026-04-14 14:22:26 +09:00
Compare commits
4 Commits
developmen
...
developmen
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4d728e90a3 | ||
|
|
ed8c89fc22 | ||
|
|
b2078bfbf6 | ||
|
|
fff281c5b8 |
61
Jenkinsfile
vendored
61
Jenkinsfile
vendored
@@ -278,8 +278,15 @@ pipeline {
|
|||||||
set -e
|
set -e
|
||||||
TEMPDIR=$(mktemp -d)
|
TEMPDIR=$(mktemp -d)
|
||||||
docker pull ghcr.io/linuxserver/jenkins-builder:latest
|
docker pull ghcr.io/linuxserver/jenkins-builder:latest
|
||||||
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=development -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
|
# Cloned repo paths for templating:
|
||||||
# Stage 1 - Jenkinsfile update
|
# ${TEMPDIR}/docker-${CONTAINER_NAME}: Cloned branch development of ${LS_USER}/${LS_REPO} for running the jenkins builder on
|
||||||
|
# ${TEMPDIR}/repo/${LS_REPO}: Cloned branch development of ${LS_USER}/${LS_REPO} for commiting various templated file changes and pushing back to Github
|
||||||
|
# ${TEMPDIR}/docs/docker-documentation: Cloned docs repo for pushing docs updates to Github
|
||||||
|
# ${TEMPDIR}/unraid/docker-templates: Cloned docker-templates repo to check for logos
|
||||||
|
# ${TEMPDIR}/unraid/templates: Cloned templates repo for commiting unraid template changes and pushing back to Github
|
||||||
|
git clone --branch development --depth 1 https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/docker-${CONTAINER_NAME}
|
||||||
|
docker run --rm -v ${TEMPDIR}/docker-${CONTAINER_NAME}:/tmp -e LOCAL=true ghcr.io/linuxserver/jenkins-builder:latest
|
||||||
|
echo "Starting Stage 1 - Jenkinsfile update"
|
||||||
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
|
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
|
||||||
mkdir -p ${TEMPDIR}/repo
|
mkdir -p ${TEMPDIR}/repo
|
||||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||||
@@ -291,13 +298,13 @@ pipeline {
|
|||||||
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
|
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
|
||||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
|
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
|
||||||
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||||
echo "Updating Jenkinsfile"
|
echo "Updating Jenkinsfile and exiting build, new one will trigger based on commit"
|
||||||
rm -Rf ${TEMPDIR}
|
rm -Rf ${TEMPDIR}
|
||||||
exit 0
|
exit 0
|
||||||
else
|
else
|
||||||
echo "Jenkinsfile is up to date."
|
echo "Jenkinsfile is up to date."
|
||||||
fi
|
fi
|
||||||
# Stage 2 - Delete old templates
|
echo "Starting Stage 2 - Delete old templates"
|
||||||
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml Dockerfile.armhf"
|
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml Dockerfile.armhf"
|
||||||
for i in ${OLD_TEMPLATES}; do
|
for i in ${OLD_TEMPLATES}; do
|
||||||
if [[ -f "${i}" ]]; then
|
if [[ -f "${i}" ]]; then
|
||||||
@@ -316,13 +323,13 @@ pipeline {
|
|||||||
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
|
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
|
||||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
|
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
|
||||||
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||||
echo "Deleting old and deprecated templates"
|
echo "Deleting old/deprecated templates and exiting build, new one will trigger based on commit"
|
||||||
rm -Rf ${TEMPDIR}
|
rm -Rf ${TEMPDIR}
|
||||||
exit 0
|
exit 0
|
||||||
else
|
else
|
||||||
echo "No templates to delete"
|
echo "No templates to delete"
|
||||||
fi
|
fi
|
||||||
# Stage 3 - Update templates
|
echo "Starting Stage 3 - Update templates"
|
||||||
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
|
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
|
||||||
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
|
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
|
||||||
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
|
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
|
||||||
@@ -346,9 +353,14 @@ pipeline {
|
|||||||
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
|
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
|
||||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
|
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
|
||||||
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||||
|
echo "Updating templates and exiting build, new one will trigger based on commit"
|
||||||
|
rm -Rf ${TEMPDIR}
|
||||||
|
exit 0
|
||||||
else
|
else
|
||||||
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||||
|
echo "No templates to update"
|
||||||
fi
|
fi
|
||||||
|
echo "Starting Stage 4 - External repo updates: Docs, Unraid Template and Readme Sync to Docker Hub"
|
||||||
mkdir -p ${TEMPDIR}/docs
|
mkdir -p ${TEMPDIR}/docs
|
||||||
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation
|
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation
|
||||||
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
|
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
|
||||||
@@ -356,6 +368,7 @@ pipeline {
|
|||||||
cd ${TEMPDIR}/docs/docker-documentation
|
cd ${TEMPDIR}/docs/docker-documentation
|
||||||
GH_DOCS_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
|
GH_DOCS_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
|
||||||
git add docs/images/docker-${CONTAINER_NAME}.md
|
git add docs/images/docker-${CONTAINER_NAME}.md
|
||||||
|
echo "Updating docs repo"
|
||||||
git commit -m 'Bot Updating Documentation'
|
git commit -m 'Bot Updating Documentation'
|
||||||
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} --rebase
|
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} --rebase
|
||||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} || \
|
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} || \
|
||||||
@@ -363,6 +376,8 @@ pipeline {
|
|||||||
sleep $((RANDOM % MAXWAIT)) && \
|
sleep $((RANDOM % MAXWAIT)) && \
|
||||||
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} --rebase && \
|
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} --rebase && \
|
||||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH})
|
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH})
|
||||||
|
else
|
||||||
|
echo "Docs update not needed, skipping"
|
||||||
fi
|
fi
|
||||||
mkdir -p ${TEMPDIR}/unraid
|
mkdir -p ${TEMPDIR}/unraid
|
||||||
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates
|
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates
|
||||||
@@ -373,6 +388,7 @@ pipeline {
|
|||||||
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
|
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
|
||||||
fi
|
fi
|
||||||
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then
|
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then
|
||||||
|
echo "Updating Unraid template"
|
||||||
cd ${TEMPDIR}/unraid/templates/
|
cd ${TEMPDIR}/unraid/templates/
|
||||||
GH_TEMPLATES_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
|
GH_TEMPLATES_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
|
||||||
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
|
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
|
||||||
@@ -392,16 +408,27 @@ pipeline {
|
|||||||
sleep $((RANDOM % MAXWAIT)) && \
|
sleep $((RANDOM % MAXWAIT)) && \
|
||||||
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH} --rebase && \
|
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH} --rebase && \
|
||||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH})
|
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH})
|
||||||
|
else
|
||||||
|
echo "No updates to Unraid template needed, skipping"
|
||||||
fi
|
fi
|
||||||
# Stage 4 - Sync Readme to Docker Hub
|
|
||||||
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]]; then
|
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]]; then
|
||||||
if [[ $(cat ${TEMPDIR}/docker-${CONTAINER_NAME}/README.md | wc -m) > 25000 ]]; then
|
if [[ $(cat ${TEMPDIR}/docker-${CONTAINER_NAME}/README.md | wc -m) -gt 25000 ]]; then
|
||||||
echo "Readme is longer than 25,000 characters. Syncing the lite version to Docker Hub"
|
echo "Readme is longer than 25,000 characters. Syncing the lite version to Docker Hub"
|
||||||
DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/README.lite"
|
DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/README.lite"
|
||||||
else
|
else
|
||||||
echo "Syncing readme to Docker Hub"
|
echo "Syncing readme to Docker Hub"
|
||||||
DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/README.md"
|
DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/README.md"
|
||||||
fi
|
fi
|
||||||
|
if curl -s https://hub.docker.com/v2/namespaces/${DOCKERHUB_IMAGE%%/*}/repositories/${DOCKERHUB_IMAGE##*/}/tags | jq -r '.message' | grep -q 404; then
|
||||||
|
echo "Docker Hub endpoint doesn't exist. Creating endpoint first."
|
||||||
|
DH_TOKEN=$(curl -d '{"username":"linuxserverci", "password":"'${DOCKERHUB_TOKEN}'"}' -H "Content-Type: application/json" -X POST https://hub.docker.com/v2/users/login | jq -r '.token')
|
||||||
|
curl -s \
|
||||||
|
-H "Authorization: JWT ${DH_TOKEN}" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-X POST \
|
||||||
|
-d '{"name":"'${DOCKERHUB_IMAGE##*/}'", "namespace":"'${DOCKERHUB_IMAGE%%/*}'"}' \
|
||||||
|
https://hub.docker.com/v2/repositories/ || :
|
||||||
|
fi
|
||||||
DH_TOKEN=$(curl -d '{"username":"linuxserverci", "password":"'${DOCKERHUB_TOKEN}'"}' -H "Content-Type: application/json" -X POST https://hub.docker.com/v2/users/login | jq -r '.token')
|
DH_TOKEN=$(curl -d '{"username":"linuxserverci", "password":"'${DOCKERHUB_TOKEN}'"}' -H "Content-Type: application/json" -X POST https://hub.docker.com/v2/users/login | jq -r '.token')
|
||||||
curl -s \
|
curl -s \
|
||||||
-H "Authorization: JWT ${DH_TOKEN}" \
|
-H "Authorization: JWT ${DH_TOKEN}" \
|
||||||
@@ -466,14 +493,16 @@ pipeline {
|
|||||||
}
|
}
|
||||||
steps{
|
steps{
|
||||||
sh '''curl -H "Content-Type: application/json" -H "Private-Token: ${GITLAB_TOKEN}" -X POST https://gitlab.com/api/v4/projects \
|
sh '''curl -H "Content-Type: application/json" -H "Private-Token: ${GITLAB_TOKEN}" -X POST https://gitlab.com/api/v4/projects \
|
||||||
-d '{"namespace_id":'${GITLAB_NAMESPACE}',\
|
-d '{"namespace_id":'${GITLAB_NAMESPACE}',\
|
||||||
"name":"'${LS_REPO}'",
|
"name":"'${LS_REPO}'",
|
||||||
"mirror":true,\
|
"mirror":true,\
|
||||||
"import_url":"https://github.com/linuxserver/'${LS_REPO}'.git",\
|
"import_url":"https://github.com/linuxserver/'${LS_REPO}'.git",\
|
||||||
"issues_access_level":"disabled",\
|
"issues_access_level":"disabled",\
|
||||||
"merge_requests_access_level":"disabled",\
|
"merge_requests_access_level":"disabled",\
|
||||||
"repository_access_level":"enabled",\
|
"repository_access_level":"enabled",\
|
||||||
"visibility":"public"}' '''
|
"visibility":"public"}' '''
|
||||||
|
sh '''curl -H "Private-Token: ${GITLAB_TOKEN}" -X PUT "https://gitlab.com/api/v4/projects/Linuxserver.io%2F${LS_REPO}" \
|
||||||
|
-d "mirror=true&import_url=https://github.com/linuxserver/${LS_REPO}.git" '''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* ###############
|
/* ###############
|
||||||
|
|||||||
@@ -19,11 +19,11 @@ brotli-libs 1.1.0-r1 apk
|
|||||||
busybox 1.36.1-r15 apk
|
busybox 1.36.1-r15 apk
|
||||||
busybox-binsh 1.36.1-r15 apk
|
busybox-binsh 1.36.1-r15 apk
|
||||||
c-ares 1.24.0-r1 apk
|
c-ares 1.24.0-r1 apk
|
||||||
ca-certificates 20230506-r0 apk
|
ca-certificates 20240226-r0 apk
|
||||||
ca-certificates-bundle 20230506-r0 apk
|
ca-certificates-bundle 20240226-r0 apk
|
||||||
carbonphp/carbon-doctrine-types 2.1.0 php-composer
|
carbonphp/carbon-doctrine-types 2.1.0 php-composer
|
||||||
clue/stream-filter v1.7.0 php-composer
|
clue/stream-filter v1.7.0 php-composer
|
||||||
composer 2.7.1 binary
|
composer 2.7.2 binary
|
||||||
composer/class-map-generator 1.1.0 php-composer
|
composer/class-map-generator 1.1.0 php-composer
|
||||||
composer/pcre 3.1.1 php-composer
|
composer/pcre 3.1.1 php-composer
|
||||||
coreutils 9.4-r2 apk
|
coreutils 9.4-r2 apk
|
||||||
@@ -80,7 +80,7 @@ libc-utils 0.7.2-r5 apk
|
|||||||
libcrypto3 3.1.4-r5 apk
|
libcrypto3 3.1.4-r5 apk
|
||||||
libcurl 8.5.0-r0 apk
|
libcurl 8.5.0-r0 apk
|
||||||
libedit 20230828.3.1-r3 apk
|
libedit 20230828.3.1-r3 apk
|
||||||
libexpat 2.6.0-r0 apk
|
libexpat 2.6.2-r0 apk
|
||||||
libgcc 13.2.1_git20231014-r0 apk
|
libgcc 13.2.1_git20231014-r0 apk
|
||||||
libidn2 2.3.4-r4 apk
|
libidn2 2.3.4-r4 apk
|
||||||
libintl 0.22.3-r0 apk
|
libintl 0.22.3-r0 apk
|
||||||
@@ -127,30 +127,30 @@ php-http/message 1.16.0 php-composer
|
|||||||
php-http/message-factory 1.1.0 php-composer
|
php-http/message-factory 1.1.0 php-composer
|
||||||
php-http/multipart-stream-builder 1.3.0 php-composer
|
php-http/multipart-stream-builder 1.3.0 php-composer
|
||||||
php-http/promise 1.3.0 php-composer
|
php-http/promise 1.3.0 php-composer
|
||||||
php83 8.3.3-r0 apk
|
php83 8.3.4-r0 apk
|
||||||
php83-common 8.3.3-r0 apk
|
php83-common 8.3.4-r0 apk
|
||||||
php83-ctype 8.3.3-r0 apk
|
php83-ctype 8.3.4-r0 apk
|
||||||
php83-curl 8.3.3-r0 apk
|
php83-curl 8.3.4-r0 apk
|
||||||
php83-dom 8.3.3-r0 apk
|
php83-dom 8.3.4-r0 apk
|
||||||
php83-fileinfo 8.3.3-r0 apk
|
php83-fileinfo 8.3.4-r0 apk
|
||||||
php83-fpm 8.3.3-r0 apk
|
php83-fpm 8.3.4-r0 apk
|
||||||
php83-iconv 8.3.3-r0 apk
|
php83-iconv 8.3.4-r0 apk
|
||||||
php83-intl 8.3.3-r0 apk
|
php83-intl 8.3.4-r0 apk
|
||||||
php83-mbstring 8.3.3-r0 apk
|
php83-mbstring 8.3.4-r0 apk
|
||||||
php83-mysqlnd 8.3.3-r0 apk
|
php83-mysqlnd 8.3.4-r0 apk
|
||||||
php83-opcache 8.3.3-r0 apk
|
php83-opcache 8.3.4-r0 apk
|
||||||
php83-openssl 8.3.3-r0 apk
|
php83-openssl 8.3.4-r0 apk
|
||||||
php83-pdo 8.3.3-r0 apk
|
php83-pdo 8.3.4-r0 apk
|
||||||
php83-pdo_mysql 8.3.3-r0 apk
|
php83-pdo_mysql 8.3.4-r0 apk
|
||||||
php83-pdo_pgsql 8.3.3-r0 apk
|
php83-pdo_pgsql 8.3.4-r0 apk
|
||||||
php83-pdo_sqlite 8.3.3-r0 apk
|
php83-pdo_sqlite 8.3.4-r0 apk
|
||||||
php83-phar 8.3.3-r0 apk
|
php83-phar 8.3.4-r0 apk
|
||||||
php83-session 8.3.3-r0 apk
|
php83-session 8.3.4-r0 apk
|
||||||
php83-simplexml 8.3.3-r0 apk
|
php83-simplexml 8.3.4-r0 apk
|
||||||
php83-tokenizer 8.3.3-r0 apk
|
php83-tokenizer 8.3.4-r0 apk
|
||||||
php83-xml 8.3.3-r0 apk
|
php83-xml 8.3.4-r0 apk
|
||||||
php83-xmlwriter 8.3.3-r0 apk
|
php83-xmlwriter 8.3.4-r0 apk
|
||||||
php83-zip 8.3.3-r0 apk
|
php83-zip 8.3.4-r0 apk
|
||||||
phpdocumentor/reflection-common 2.2.0 php-composer
|
phpdocumentor/reflection-common 2.2.0 php-composer
|
||||||
phpdocumentor/type-resolver 1.8.0 php-composer
|
phpdocumentor/type-resolver 1.8.0 php-composer
|
||||||
phpoption/phpoption 1.9.2 php-composer
|
phpoption/phpoption 1.9.2 php-composer
|
||||||
|
|||||||
Reference in New Issue
Block a user