mirror of
https://github.com/linuxserver/docker-code-server
synced 2025-06-26 18:27:40 +00:00
Compare commits
8 Commits
4.20.1-ls1
...
4.22.0-ls1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b18e8877ad | ||
|
|
48262b8882 | ||
|
|
d2a5ef414a | ||
|
|
4931dd3b82 | ||
|
|
2d7ee3529b | ||
|
|
33e0d230c9 | ||
|
|
7d835391a9 | ||
|
|
3ce9c4e675 |
4
.github/ISSUE_TEMPLATE/issue.bug.yml
vendored
4
.github/ISSUE_TEMPLATE/issue.bug.yml
vendored
@@ -67,10 +67,10 @@ body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
description: |
|
||||
Provide a full docker log, output of "docker logs linuxserver.io"
|
||||
Provide a full docker log, output of "docker logs code-server"
|
||||
label: Container logs
|
||||
placeholder: |
|
||||
Output of `docker logs linuxserver.io`
|
||||
Output of `docker logs code-server`
|
||||
render: bash
|
||||
validations:
|
||||
required: true
|
||||
|
||||
2
.github/workflows/external_trigger.yml
vendored
2
.github/workflows/external_trigger.yml
vendored
@@ -7,7 +7,7 @@ jobs:
|
||||
external-trigger-master:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3.1.0
|
||||
- uses: actions/checkout@v4.1.1
|
||||
|
||||
- name: External Trigger
|
||||
if: github.ref == 'refs/heads/master'
|
||||
|
||||
@@ -9,7 +9,7 @@ jobs:
|
||||
external-trigger-scheduler:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3.1.0
|
||||
- uses: actions/checkout@v4.1.1
|
||||
with:
|
||||
fetch-depth: '0'
|
||||
|
||||
|
||||
2
.github/workflows/package_trigger.yml
vendored
2
.github/workflows/package_trigger.yml
vendored
@@ -7,7 +7,7 @@ jobs:
|
||||
package-trigger-master:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3.1.0
|
||||
- uses: actions/checkout@v4.1.1
|
||||
|
||||
- name: Package Trigger
|
||||
if: github.ref == 'refs/heads/master'
|
||||
|
||||
@@ -9,7 +9,7 @@ jobs:
|
||||
package-trigger-scheduler:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3.1.0
|
||||
- uses: actions/checkout@v4.1.1
|
||||
with:
|
||||
fetch-depth: '0'
|
||||
|
||||
|
||||
297
Jenkinsfile
vendored
297
Jenkinsfile
vendored
@@ -245,9 +245,11 @@ pipeline {
|
||||
-v ${WORKSPACE}:/mnt \
|
||||
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
|
||||
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
|
||||
ghcr.io/linuxserver/baseimage-alpine:3.17 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
|
||||
apk add --no-cache py3-pip && \
|
||||
pip install s3cmd && \
|
||||
ghcr.io/linuxserver/baseimage-alpine:3.19 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 && \
|
||||
pip install --no-cache-dir s3cmd && \
|
||||
s3cmd put --no-preserve --acl-public -m text/xml /mnt/shellcheck-result.xml s3://ci-tests.linuxserver.io/${IMAGE}/${META_TAG}/shellcheck-result.xml" || :'''
|
||||
}
|
||||
}
|
||||
@@ -262,150 +264,149 @@ pipeline {
|
||||
}
|
||||
}
|
||||
steps {
|
||||
withCredentials([
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
||||
usernameVariable: 'DOCKERUSER',
|
||||
passwordVariable: 'DOCKERPASS'
|
||||
]
|
||||
]) {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
TEMPDIR=$(mktemp -d)
|
||||
docker pull ghcr.io/linuxserver/jenkins-builder:latest
|
||||
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
|
||||
# Stage 1 - Jenkinsfile update
|
||||
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
|
||||
mkdir -p ${TEMPDIR}/repo
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||
git checkout -f master
|
||||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
|
||||
git add Jenkinsfile
|
||||
git commit -m 'Bot Updating Templated Files'
|
||||
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
|
||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
|
||||
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
echo "Updating Jenkinsfile"
|
||||
rm -Rf ${TEMPDIR}
|
||||
exit 0
|
||||
else
|
||||
echo "Jenkinsfile is up to date."
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
TEMPDIR=$(mktemp -d)
|
||||
docker pull ghcr.io/linuxserver/jenkins-builder:latest
|
||||
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
|
||||
# Stage 1 - Jenkinsfile update
|
||||
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
|
||||
mkdir -p ${TEMPDIR}/repo
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||
git checkout -f master
|
||||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
|
||||
git add Jenkinsfile
|
||||
git commit -m 'Bot Updating Templated Files'
|
||||
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
|
||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
|
||||
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
echo "Updating Jenkinsfile"
|
||||
rm -Rf ${TEMPDIR}
|
||||
exit 0
|
||||
else
|
||||
echo "Jenkinsfile is up to date."
|
||||
fi
|
||||
# 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"
|
||||
for i in ${OLD_TEMPLATES}; do
|
||||
if [[ -f "${i}" ]]; then
|
||||
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
|
||||
fi
|
||||
# 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"
|
||||
for i in ${OLD_TEMPLATES}; do
|
||||
if [[ -f "${i}" ]]; then
|
||||
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
|
||||
fi
|
||||
done
|
||||
if [[ -n "${TEMPLATES_TO_DELETE}" ]]; then
|
||||
mkdir -p ${TEMPDIR}/repo
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||
git checkout -f master
|
||||
for i in ${TEMPLATES_TO_DELETE}; do
|
||||
git rm "${i}"
|
||||
done
|
||||
if [[ -n "${TEMPLATES_TO_DELETE}" ]]; then
|
||||
mkdir -p ${TEMPDIR}/repo
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||
git checkout -f master
|
||||
for i in ${TEMPLATES_TO_DELETE}; do
|
||||
git rm "${i}"
|
||||
done
|
||||
git commit -m 'Bot Updating Templated Files'
|
||||
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
|
||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
|
||||
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
echo "Deleting old and deprecated templates"
|
||||
rm -Rf ${TEMPDIR}
|
||||
exit 0
|
||||
else
|
||||
echo "No templates to delete"
|
||||
fi
|
||||
# Stage 3 - Update templates
|
||||
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
|
||||
git commit -m 'Bot Updating Templated Files'
|
||||
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
|
||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
|
||||
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
echo "Deleting old and deprecated templates"
|
||||
rm -Rf ${TEMPDIR}
|
||||
exit 0
|
||||
else
|
||||
echo "No templates to delete"
|
||||
fi
|
||||
# Stage 3 - Update templates
|
||||
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
|
||||
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
|
||||
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
|
||||
if [[ "${CURRENTHASH}" != "${NEWHASH}" ]] || ! grep -q '.jenkins-external' "${WORKSPACE}/.gitignore" 2>/dev/null; then
|
||||
mkdir -p ${TEMPDIR}/repo
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||
git checkout -f master
|
||||
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
|
||||
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
|
||||
if [[ "${CURRENTHASH}" != "${NEWHASH}" ]] || ! grep -q '.jenkins-external' "${WORKSPACE}/.gitignore" 2>/dev/null; then
|
||||
mkdir -p ${TEMPDIR}/repo
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||
git checkout -f master
|
||||
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
|
||||
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
|
||||
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
|
||||
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
|
||||
cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}/
|
||||
if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
|
||||
echo ".jenkins-external" >> .gitignore
|
||||
git add .gitignore
|
||||
fi
|
||||
git add readme-vars.yml ${TEMPLATED_FILES}
|
||||
git commit -m 'Bot Updating Templated Files'
|
||||
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
|
||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
|
||||
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
|
||||
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
|
||||
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
|
||||
cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}/
|
||||
if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
|
||||
echo ".jenkins-external" >> .gitignore
|
||||
git add .gitignore
|
||||
fi
|
||||
git add readme-vars.yml ${TEMPLATED_FILES}
|
||||
git commit -m 'Bot Updating Templated Files'
|
||||
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
|
||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
|
||||
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
else
|
||||
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
fi
|
||||
mkdir -p ${TEMPDIR}/docs
|
||||
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
|
||||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/docs/docker-documentation/docs/images/
|
||||
cd ${TEMPDIR}/docs/docker-documentation
|
||||
GH_DOCS_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
|
||||
git add docs/images/docker-${CONTAINER_NAME}.md
|
||||
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 push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} || \
|
||||
(MAXWAIT="10" && echo "Push to docs failed, trying again in ${MAXWAIT} seconds" && \
|
||||
sleep $((RANDOM % MAXWAIT)) && \
|
||||
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})
|
||||
fi
|
||||
mkdir -p ${TEMPDIR}/unraid
|
||||
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates
|
||||
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
|
||||
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then
|
||||
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
|
||||
elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then
|
||||
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
|
||||
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
|
||||
cd ${TEMPDIR}/unraid/templates/
|
||||
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
|
||||
echo "Image is on the ignore list, marking Unraid template as deprecated"
|
||||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
|
||||
git add -u unraid/${CONTAINER_NAME}.xml
|
||||
git mv unraid/${CONTAINER_NAME}.xml unraid/deprecated/${CONTAINER_NAME}.xml || :
|
||||
git commit -m 'Bot Moving Deprecated Unraid Template' || :
|
||||
else
|
||||
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
|
||||
git add unraid/${CONTAINER_NAME}.xml
|
||||
git commit -m 'Bot Updating Unraid Template'
|
||||
fi
|
||||
mkdir -p ${TEMPDIR}/docs
|
||||
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
|
||||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/docs/docker-documentation/docs/images/
|
||||
cd ${TEMPDIR}/docs/docker-documentation
|
||||
GH_DOCS_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
|
||||
git add docs/images/docker-${CONTAINER_NAME}.md
|
||||
git commit -m 'Bot Updating Documentation'
|
||||
git pull 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}
|
||||
fi
|
||||
mkdir -p ${TEMPDIR}/unraid
|
||||
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates
|
||||
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
|
||||
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then
|
||||
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
|
||||
elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then
|
||||
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
|
||||
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
|
||||
cd ${TEMPDIR}/unraid/templates/
|
||||
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
|
||||
echo "Image is on the ignore list, marking Unraid template as deprecated"
|
||||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
|
||||
git add -u unraid/${CONTAINER_NAME}.xml
|
||||
git mv unraid/${CONTAINER_NAME}.xml unraid/deprecated/${CONTAINER_NAME}.xml || :
|
||||
git commit -m 'Bot Moving Deprecated Unraid Template' || :
|
||||
else
|
||||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
|
||||
git add unraid/${CONTAINER_NAME}.xml
|
||||
git commit -m 'Bot Updating Unraid Template'
|
||||
fi
|
||||
git pull 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}
|
||||
fi
|
||||
# Stage 4 - Sync Readme to Docker Hub
|
||||
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]]; then
|
||||
if [[ $(cat ${TEMPDIR}/docker-${CONTAINER_NAME}/README.md | wc -m) > 25000 ]]; then
|
||||
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"
|
||||
else
|
||||
echo "Syncing readme to Docker Hub"
|
||||
DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/README.md"
|
||||
fi
|
||||
DH_TOKEN=$(curl -d '{"username":"'${DOCKERUSER}'", "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 PATCH \
|
||||
-d "{\\"full_description\\":$(jq -Rsa . ${DH_README_SYNC_PATH})}" \
|
||||
https://hub.docker.com/v2/repositories/${DOCKERHUB_IMAGE} || :
|
||||
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} || \
|
||||
(MAXWAIT="10" && echo "Push to unraid templates failed, trying again in ${MAXWAIT} seconds" && \
|
||||
sleep $((RANDOM % MAXWAIT)) && \
|
||||
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})
|
||||
fi
|
||||
# Stage 4 - Sync Readme to Docker Hub
|
||||
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]]; then
|
||||
if [[ $(cat ${TEMPDIR}/docker-${CONTAINER_NAME}/README.md | wc -m) > 25000 ]]; then
|
||||
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"
|
||||
else
|
||||
echo "Not the default Github branch. Skipping readme sync to Docker Hub."
|
||||
echo "Syncing readme to Docker Hub"
|
||||
DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/README.md"
|
||||
fi
|
||||
rm -Rf ${TEMPDIR}'''
|
||||
script{
|
||||
env.FILES_UPDATED = sh(
|
||||
script: '''cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''',
|
||||
returnStdout: true).trim()
|
||||
}
|
||||
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 PATCH \
|
||||
-d "{\\"full_description\\":$(jq -Rsa . ${DH_README_SYNC_PATH})}" \
|
||||
https://hub.docker.com/v2/repositories/${DOCKERHUB_IMAGE} || :
|
||||
else
|
||||
echo "Not the default Github branch. Skipping readme sync to Docker Hub."
|
||||
fi
|
||||
rm -Rf ${TEMPDIR}'''
|
||||
script{
|
||||
env.FILES_UPDATED = sh(
|
||||
script: '''cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''',
|
||||
returnStdout: true).trim()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -703,12 +704,6 @@ pipeline {
|
||||
}
|
||||
steps {
|
||||
withCredentials([
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
||||
usernameVariable: 'DOCKERUSER',
|
||||
passwordVariable: 'DOCKERPASS'
|
||||
],
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: 'Quay.io-Robot',
|
||||
@@ -719,7 +714,7 @@ pipeline {
|
||||
retry(5) {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
||||
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
|
||||
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
|
||||
@@ -750,12 +745,6 @@ pipeline {
|
||||
}
|
||||
steps {
|
||||
withCredentials([
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
||||
usernameVariable: 'DOCKERUSER',
|
||||
passwordVariable: 'DOCKERPASS'
|
||||
],
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: 'Quay.io-Robot',
|
||||
@@ -766,7 +755,7 @@ pipeline {
|
||||
retry(5) {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
||||
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
|
||||
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
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
NAME VERSION TYPE
|
||||
1to2 1.0.0 npm
|
||||
@babel/runtime 7.23.2 npm
|
||||
@coder/logger 3.0.1 npm
|
||||
@mapbox/node-pre-gyp 1.0.11 npm
|
||||
@@ -13,25 +12,25 @@ NAME VERSION
|
||||
@tootallnate/once 3.0.0 npm
|
||||
@tootallnate/quickjs-emscripten 0.23.0 npm
|
||||
@vscode/iconv-lite-umd 0.7.0 npm
|
||||
@vscode/proxy-agent 0.18.2 npm
|
||||
@vscode/proxy-agent 0.19.1 npm
|
||||
@vscode/ripgrep 1.15.9 npm
|
||||
@vscode/spdlog 0.13.12 npm
|
||||
@vscode/spdlog 0.15.0 npm
|
||||
@vscode/vscode-languagedetection 1.0.21 npm
|
||||
@vscode/windows-process-tree 0.5.0 npm
|
||||
@vscode/windows-process-tree 0.6.0 npm
|
||||
@vscode/windows-registry 1.1.0 npm
|
||||
@xterm/addon-canvas 0.6.0-beta.14 npm
|
||||
@xterm/addon-image 0.7.0-beta.12 npm
|
||||
@xterm/addon-search 0.14.0-beta.14 npm
|
||||
@xterm/addon-serialize 0.12.0-beta.14 npm
|
||||
@xterm/addon-unicode11 0.7.0-beta.14 npm
|
||||
@xterm/addon-webgl 0.17.0-beta.14 npm
|
||||
@xterm/headless 5.4.0-beta.14 npm
|
||||
@xterm/xterm 5.4.0-beta.14 npm
|
||||
@xterm/addon-canvas 0.6.0-beta.31 npm
|
||||
@xterm/addon-image 0.7.0-beta.29 npm
|
||||
@xterm/addon-search 0.14.0-beta.31 npm
|
||||
@xterm/addon-serialize 0.12.0-beta.31 npm
|
||||
@xterm/addon-unicode11 0.7.0-beta.31 npm
|
||||
@xterm/addon-webgl 0.17.0-beta.31 npm
|
||||
@xterm/headless 5.4.0-beta.31 npm
|
||||
@xterm/xterm 5.4.0-beta.31 npm
|
||||
abbrev 1.1.1 npm
|
||||
accepts 1.3.8 npm
|
||||
adduser 3.118ubuntu5 deb
|
||||
agent-base 6.0.2 npm
|
||||
agent-base 7.1.0 npm
|
||||
agent-base 7.1.0 npm (+1 duplicate)
|
||||
ansi-regex 5.0.1 npm
|
||||
aproba 2.0.0 npm
|
||||
apt 2.4.11 deb
|
||||
@@ -69,7 +68,7 @@ charenc 0.0.2
|
||||
chownr 1.1.4 npm
|
||||
chownr 2.0.0 npm
|
||||
clojure 1.0.0 npm
|
||||
code-server 4.20.1 npm
|
||||
code-server 4.22.0 npm
|
||||
coffeescript 1.0.0 npm
|
||||
color-support 1.1.3 npm
|
||||
compressible 2.0.18 npm
|
||||
@@ -79,7 +78,7 @@ configuration-editing 1.0.0
|
||||
console-control-strings 1.1.0 npm
|
||||
content-disposition 0.5.3 npm
|
||||
content-type 1.0.5 npm
|
||||
cookie 0.4.0 npm
|
||||
cookie 0.4.0 npm (+1 duplicate)
|
||||
cookie 0.4.1 npm
|
||||
cookie-parser 1.4.6 npm
|
||||
cookie-signature 1.0.6 npm
|
||||
@@ -96,9 +95,9 @@ dash 0.5.11+git20210903+057cd650a4ed-3build1
|
||||
data-uri-to-buffer 5.0.1 npm
|
||||
debconf 1.5.79ubuntu1 deb
|
||||
debianutils 5.5-1ubuntu2 deb
|
||||
debug 2.6.9 npm
|
||||
debug 3.1.0 npm
|
||||
debug 4.3.4 npm
|
||||
debug 2.6.9 npm (+3 duplicates)
|
||||
debug 3.1.0 npm (+1 duplicate)
|
||||
debug 4.3.4 npm (+1 duplicate)
|
||||
debug-auto-launch 1.0.0 npm
|
||||
debug-server-ready 1.0.0 npm
|
||||
decompress-response 6.0.0 npm
|
||||
@@ -167,7 +166,7 @@ gpg-wks-server 2.2.27-3ubuntu2.1
|
||||
gpgconf 2.2.27-3ubuntu2.1 deb
|
||||
gpgsm 2.2.27-3ubuntu2.1 deb
|
||||
gpgv 2.2.27-3ubuntu2.1 deb
|
||||
graceful-fs 4.2.11 npm
|
||||
graceful-fs 4.2.11 npm (+1 duplicate)
|
||||
grep 3.7-1build1 deb
|
||||
groovy 1.0.0 npm
|
||||
grunt 1.0.0 npm
|
||||
@@ -182,21 +181,21 @@ html-language-features 1.0.0
|
||||
http-errors 1.7.2 npm
|
||||
http-errors 1.7.3 npm
|
||||
http-proxy 1.18.1 npm
|
||||
http-proxy-agent 7.0.0 npm
|
||||
http-proxy-agent 7.0.0 npm (+1 duplicate)
|
||||
httpolyglot 0.1.2 npm
|
||||
https-proxy-agent 5.0.1 npm
|
||||
https-proxy-agent 7.0.2 npm
|
||||
i18next 23.7.6 npm
|
||||
https-proxy-agent 7.0.2 npm (+1 duplicate)
|
||||
i18next 23.8.2 npm
|
||||
iconv-lite 0.4.24 npm
|
||||
ieee754 1.2.1 npm
|
||||
inflight 1.0.6 npm
|
||||
inherits 2.0.3 npm
|
||||
inherits 2.0.4 npm
|
||||
inherits 2.0.4 npm (+1 duplicate)
|
||||
ini 1.0.0 npm
|
||||
ini 1.3.8 npm
|
||||
init-system-helpers 1.62 deb
|
||||
ip 1.1.8 npm
|
||||
ip 2.0.0 npm
|
||||
ip 1.1.9 npm
|
||||
ip 2.0.1 npm (+1 duplicate)
|
||||
ipaddr.js 1.9.1 npm
|
||||
ipynb 1.0.0 npm
|
||||
is-buffer 1.1.6 npm
|
||||
@@ -209,7 +208,7 @@ jake 1.0.0
|
||||
java 1.0.0 npm
|
||||
javascript 1.0.0 npm
|
||||
jq 1.6-2.1ubuntu3 deb
|
||||
js-debug 1.85.0 npm
|
||||
js-debug 1.87.0 npm
|
||||
js-debug-companion 1.1.2 npm
|
||||
js-yaml 4.1.0 npm
|
||||
jschardet 3.0.0 npm
|
||||
@@ -221,7 +220,7 @@ just-performance 4.3.0
|
||||
kerberos 2.0.1 npm
|
||||
latex 1.0.0 npm
|
||||
less 1.0.0 npm
|
||||
less 590-1ubuntu0.22.04.1 deb
|
||||
less 590-1ubuntu0.22.04.2 deb
|
||||
libacl1 2.3.1-1 deb
|
||||
libapt-pkg6.0 2.4.11 deb
|
||||
libassuan0 2.5.5-1build1 deb
|
||||
@@ -266,8 +265,8 @@ libkeyutils1 1.6.1-2ubuntu3
|
||||
libkrb5-3 1.19.2-2ubuntu0.2 deb
|
||||
libkrb5support0 1.19.2-2ubuntu0.2 deb
|
||||
libksba8 1.6.0-2ubuntu0.2 deb
|
||||
libldap-2.5-0 2.5.16+dfsg-0ubuntu0.22.04.1 deb
|
||||
libldap-common 2.5.16+dfsg-0ubuntu0.22.04.1 deb
|
||||
libldap-2.5-0 2.5.16+dfsg-0ubuntu0.22.04.2 deb
|
||||
libldap-common 2.5.16+dfsg-0ubuntu0.22.04.2 deb
|
||||
liblz4-1 1.9.3-2build2 deb
|
||||
liblzma5 5.2.5-2ubuntu1 deb
|
||||
libmd0 1.0.4-1build1 deb
|
||||
@@ -327,7 +326,7 @@ locales 2.35-0ubuntu3.6
|
||||
log 1.0.0 npm
|
||||
login 1:4.8.1-2ubuntu2.1 deb
|
||||
logsave 1.46.5-2ubuntu1.1 deb
|
||||
lru-cache 6.0.0 npm
|
||||
lru-cache 6.0.0 npm (+1 duplicate)
|
||||
lru-cache 7.18.3 npm
|
||||
lsb-base 11.1.0ubuntu4 deb
|
||||
lua 1.0.0 npm
|
||||
@@ -354,13 +353,12 @@ minimist 1.2.6
|
||||
minipass 3.3.6 npm
|
||||
minipass 5.0.0 npm
|
||||
minizlib 2.1.2 npm
|
||||
mkdirp 1.0.4 npm
|
||||
mkdirp 1.0.4 npm (+1 duplicate)
|
||||
mkdirp-classic 0.5.3 npm
|
||||
mount 2.37.2-4ubuntu3 deb
|
||||
ms 2.0.0 npm
|
||||
ms 2.0.0 npm (+1 duplicate)
|
||||
ms 2.1.1 npm
|
||||
ms 2.1.2 npm
|
||||
nan 2.17.0 npm
|
||||
ms 2.1.2 npm (+1 duplicate)
|
||||
nano 6.2-1 deb
|
||||
napi-build-utils 1.0.2 npm
|
||||
native-watchdog 1.4.2 npm
|
||||
@@ -372,14 +370,15 @@ netbase 6.3
|
||||
netcat 1.218-4ubuntu1 deb
|
||||
netcat-openbsd 1.218-4ubuntu1 deb
|
||||
netmask 2.0.2 npm
|
||||
node 18.15.0 binary
|
||||
node 18.17.1 binary
|
||||
node-abi 3.8.0 npm
|
||||
node-addon-api 3.2.1 npm
|
||||
node-addon-api 4.3.0 npm
|
||||
node-addon-api 7.0.0 npm
|
||||
node-addon-api 7.1.0 npm
|
||||
node-fetch 2.7.0 npm
|
||||
node-gyp-build 4.3.0 npm
|
||||
node-pty 1.1.0-beta5 npm
|
||||
node-pty 1.1.0-beta6 npm
|
||||
nopt 5.0.0 npm
|
||||
npm 1.0.1 npm
|
||||
npmlog 5.0.1 npm
|
||||
@@ -388,9 +387,9 @@ object-assign 4.1.1
|
||||
objective-c 1.0.0 npm
|
||||
on-finished 2.3.0 npm
|
||||
on-headers 1.0.2 npm
|
||||
once 1.4.0 npm
|
||||
once 1.4.0 npm (+1 duplicate)
|
||||
openssh-client 1:8.9p1-3ubuntu0.6 deb
|
||||
openssl 3.0.2-0ubuntu1.12 deb
|
||||
openssl 3.0.2-0ubuntu1.15 deb
|
||||
os-tmpdir 1.0.2 npm
|
||||
pac-proxy-agent 7.0.1 npm
|
||||
pac-resolver 7.0.0 npm
|
||||
@@ -414,7 +413,7 @@ prebuild-install 7.1.1
|
||||
procps 2:3.3.17-6ubuntu2 deb
|
||||
proxy-addr 2.0.7 npm
|
||||
proxy-agent 6.3.1 npm
|
||||
proxy-from-env 1.1.0 npm
|
||||
proxy-from-env 1.1.0 npm (+1 duplicate)
|
||||
publicsuffix 20211207.1025-1 deb
|
||||
pug 1.0.0 npm
|
||||
pump 3.0.0 npm
|
||||
@@ -437,15 +436,15 @@ rotating-file-stream 3.1.1
|
||||
router 2.0.0-alpha.1 npm
|
||||
ruby 1.0.0 npm
|
||||
rust 1.0.0 npm
|
||||
safe-buffer 5.1.2 npm
|
||||
safe-buffer 5.2.1 npm
|
||||
safe-buffer 5.1.2 npm (+2 duplicates)
|
||||
safe-buffer 5.2.1 npm (+1 duplicate)
|
||||
safe-compare 1.1.4 npm
|
||||
safer-buffer 2.1.2 npm
|
||||
scss 1.0.0 npm
|
||||
search-result 1.0.0 npm
|
||||
sed 4.8-1ubuntu2 deb
|
||||
semver 6.3.1 npm
|
||||
semver 7.5.4 npm
|
||||
semver 7.5.4 npm (+1 duplicate)
|
||||
send 0.17.1 npm
|
||||
sensible-utils 0.0.17 deb
|
||||
serve-static 1.14.1 npm
|
||||
@@ -458,15 +457,15 @@ signal-exit 3.0.7
|
||||
simple-browser 1.0.0 npm
|
||||
simple-concat 1.0.1 npm
|
||||
simple-get 4.0.1 npm
|
||||
smart-buffer 4.2.0 npm
|
||||
socks 2.7.1 npm
|
||||
smart-buffer 4.2.0 npm (+1 duplicate)
|
||||
socks 2.7.1 npm (+1 duplicate)
|
||||
socks-proxy-agent 8.0.1 npm
|
||||
socks-proxy-agent 8.0.2 npm
|
||||
source-map 0.6.1 npm
|
||||
sql 1.0.0 npm
|
||||
statuses 1.5.0 npm
|
||||
string-width 4.2.3 npm
|
||||
string_decoder 1.3.0 npm
|
||||
string_decoder 1.3.0 npm (+1 duplicate)
|
||||
strip-ansi 6.0.1 npm
|
||||
strip-json-comments 2.0.1 npm
|
||||
sudo 1.9.9-1ubuntu2.4 deb
|
||||
@@ -502,7 +501,7 @@ ubuntu-keyring 2021.03.26
|
||||
universalify 0.1.2 npm
|
||||
unpipe 1.0.0 npm
|
||||
usrmerge 25ubuntu2 deb
|
||||
util-deprecate 1.0.2 npm
|
||||
util-deprecate 1.0.2 npm (+1 duplicate)
|
||||
util-linux 2.37.2-4ubuntu3 deb
|
||||
utils-merge 1.0.1 npm
|
||||
vary 1.1.2 npm
|
||||
@@ -512,22 +511,22 @@ vscode-extensions 0.0.1
|
||||
vscode-html-languageserver 1.0.0 npm
|
||||
vscode-js-profile-table 1.0.8 npm
|
||||
vscode-json-languageserver 1.3.4 npm
|
||||
vscode-markdown-languageserver 0.4.0-alpha.8 npm
|
||||
vscode-markdown-languageserver 0.4.0 npm
|
||||
vscode-oniguruma 1.7.0 npm
|
||||
vscode-regexpp 3.1.0 npm
|
||||
vscode-reh 1.85.2 npm
|
||||
vscode-reh 1.87.0 npm
|
||||
vscode-textmate 9.0.0 npm
|
||||
vscode-theme-seti 1.0.0 npm
|
||||
webidl-conversions 3.0.1 npm
|
||||
whatwg-url 5.0.0 npm
|
||||
which 2.0.2 npm
|
||||
wide-align 1.1.5 npm
|
||||
wrappy 1.0.2 npm
|
||||
wrappy 1.0.2 npm (+1 duplicate)
|
||||
ws 8.14.2 npm
|
||||
xauth 1:1.1-1build2 deb
|
||||
xdg-basedir 4.0.0 npm
|
||||
xml 1.0.0 npm
|
||||
yallist 4.0.0 npm
|
||||
yallist 4.0.0 npm (+1 duplicate)
|
||||
yaml 1.0.0 npm
|
||||
yauzl 2.10.0 npm
|
||||
yazl 2.4.3 npm
|
||||
|
||||
Reference in New Issue
Block a user