Compare commits

..

No commits in common. "master" and "4.97.2-ls258" have entirely different histories.

20 changed files with 639 additions and 758 deletions

0
.editorconfig Normal file → Executable file
View File

0
.github/CONTRIBUTING.md vendored Normal file → Executable file
View File

0
.github/FUNDING.yml vendored Normal file → Executable file
View File

0
.github/ISSUE_TEMPLATE/config.yml vendored Normal file → Executable file
View File

0
.github/ISSUE_TEMPLATE/issue.bug.yml vendored Normal file → Executable file
View File

0
.github/ISSUE_TEMPLATE/issue.feature.yml vendored Normal file → Executable file
View File

3
.github/workflows/call_issue_pr_tracker.yml vendored Normal file → Executable file
View File

@ -8,9 +8,6 @@ on:
pull_request_review: pull_request_review:
types: [submitted,edited,dismissed] types: [submitted,edited,dismissed]
permissions:
contents: read
jobs: jobs:
manage-project: manage-project:
permissions: permissions:

3
.github/workflows/call_issues_cron.yml vendored Normal file → Executable file
View File

@ -4,9 +4,6 @@ on:
- cron: '31 1 * * *' - cron: '31 1 * * *'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
stale: stale:
permissions: permissions:

View File

@ -3,9 +3,6 @@ name: External Trigger Main
on: on:
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
external-trigger-master: external-trigger-master:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -46,8 +43,8 @@ jobs:
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1 exit 1
fi fi
EXT_RELEASE_SANITIZED=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g') EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
echo "Sanitized external version: \`${EXT_RELEASE_SANITIZED}\`" >> $GITHUB_STEP_SUMMARY echo "External version: \`${EXT_RELEASE}\`" >> $GITHUB_STEP_SUMMARY
echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY
image="linuxserver/code-server" image="linuxserver/code-server"
tag="latest" tag="latest"
@ -103,8 +100,8 @@ jobs:
exit 1 exit 1
fi fi
echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY
if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY echo "Version \`${EXT_RELEASE}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
@ -119,7 +116,7 @@ jobs:
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
else else
printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY
echo "New sanitized version \`${EXT_RELEASE_SANITIZED}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY echo "New version \`${EXT_RELEASE}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
if [[ "${artifacts_found}" == "true" ]]; then if [[ "${artifacts_found}" == "true" ]]; then
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
fi fi
@ -139,7 +136,7 @@ jobs:
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \ --data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit" --data-urlencode "Submit=Submit"
echo "**** Notifying Discord ****" echo "**** Notifying Discord ****"
TRIGGER_REASON="A version change was detected for code-server tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE_SANITIZED}" TRIGGER_REASON="A version change was detected for code-server tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}], "description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}

View File

@ -5,9 +5,6 @@ on:
- cron: '32 * * * *' - cron: '32 * * * *'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
external-trigger-scheduler: external-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest

6
.github/workflows/greetings.yml vendored Normal file → Executable file
View File

@ -2,14 +2,8 @@ name: Greetings
on: [pull_request_target, issues] on: [pull_request_target, issues]
permissions:
contents: read
jobs: jobs:
greeting: greeting:
permissions:
issues: write
pull-requests: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/first-interaction@v1 - uses: actions/first-interaction@v1

View File

@ -5,9 +5,6 @@ on:
- cron: '0 20 * * 6' - cron: '0 20 * * 6'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
package-trigger-scheduler: package-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest

0
.github/workflows/permissions.yml vendored Normal file → Executable file
View File

107
Jenkinsfile vendored
View File

@ -94,11 +94,7 @@ pipeline {
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/'
env.PULL_REQUEST = env.CHANGE_ID env.PULL_REQUEST = env.CHANGE_ID
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml' env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml'
if ( env.SYFT_IMAGE_TAG == null ) {
env.SYFT_IMAGE_TAG = 'latest'
} }
}
echo "Using syft image tag ${SYFT_IMAGE_TAG}"
sh '''#! /bin/bash sh '''#! /bin/bash
echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" ''' echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" '''
script{ script{
@ -208,7 +204,6 @@ pipeline {
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN 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.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'
} }
} }
} }
@ -234,7 +229,6 @@ pipeline {
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/' 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.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'
} }
} }
} }
@ -260,7 +254,6 @@ pipeline {
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST 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.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.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'
} }
} }
} }
@ -283,7 +276,7 @@ pipeline {
-v ${WORKSPACE}:/mnt \ -v ${WORKSPACE}:/mnt \
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \ -e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \ -e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
ghcr.io/linuxserver/baseimage-alpine:3 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\ ghcr.io/linuxserver/baseimage-alpine:3.20 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
apk add --no-cache python3 && \ apk add --no-cache python3 && \
python3 -m venv /lsiopy && \ python3 -m venv /lsiopy && \
pip install --no-cache-dir -U pip && \ pip install --no-cache-dir -U pip && \
@ -618,16 +611,13 @@ pipeline {
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --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 $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} & docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done done
for p in "${!pids[@]}"; do for p in $(jobs -p); do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; } wait "$p" || { echo "job $p failed" >&2; exit 1; }
done done
fi fi
''' '''
@ -687,16 +677,13 @@ pipeline {
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --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 $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} & docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done done
for p in "${!pids[@]}"; do for p in $(jobs -p); do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; } wait "$p" || { echo "job $p failed" >&2; exit 1; }
done done
fi fi
''' '''
@ -750,14 +737,12 @@ pipeline {
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --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 echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} & docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done done
for p in "${!pids[@]}"; do for p in $(jobs -p); do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; } wait "$p" || { echo "job $p failed" >&2; exit 1; }
done done
fi fi
''' '''
@ -795,7 +780,7 @@ pipeline {
docker run --rm \ docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock:ro \ -v /var/run/docker.sock:/var/run/docker.sock:ro \
-v ${TEMPDIR}:/tmp \ -v ${TEMPDIR}:/tmp \
ghcr.io/anchore/syft:${SYFT_IMAGE_TAG} \ ghcr.io/anchore/syft:latest \
${LOCAL_CONTAINER} -o table=/tmp/package_versions.txt ${LOCAL_CONTAINER} -o table=/tmp/package_versions.txt
NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 ) NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github" echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
@ -882,7 +867,7 @@ pipeline {
CI_DOCKERENV="LSIO_FIRST_PARTY=true" CI_DOCKERENV="LSIO_FIRST_PARTY=true"
fi fi
fi fi
docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} docker pull ghcr.io/linuxserver/ci:latest
if [ "${MULTIARCH}" == "true" ]; then if [ "${MULTIARCH}" == "true" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64 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} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
@ -905,10 +890,7 @@ pipeline {
-e WEB_AUTH=\"${CI_AUTH}\" \ -e WEB_AUTH=\"${CI_AUTH}\" \
-e WEB_PATH=\"${CI_WEBPATH}\" \ -e WEB_PATH=\"${CI_WEBPATH}\" \
-e NODE_NAME=\"${NODE_NAME}\" \ -e NODE_NAME=\"${NODE_NAME}\" \
-e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \ -t ghcr.io/linuxserver/ci:latest \
-e COMMIT_SHA=\"${COMMIT_SHA}\" \
-e BUILD_NUMBER=\"${BUILD_NUMBER}\" \
-t ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} \
python3 test_build.py''' python3 test_build.py'''
} }
} }
@ -934,11 +916,9 @@ pipeline {
CACHEIMAGE=${i} CACHEIMAGE=${i}
fi fi
done 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 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 fi
done done
''' '''
@ -963,27 +943,20 @@ pipeline {
CACHEIMAGE=${i} CACHEIMAGE=${i}
fi fi
done 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}: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}
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 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}: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}
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 fi
done done
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do 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}: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}
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}
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 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 fi
done done
''' '''
@ -1001,41 +974,23 @@ pipeline {
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
sh '''#! /bin/bash
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": "master"}' \
| jq -r '.body' | sed 's|## What.s Changed||')
fi
echo "Pushing New tag for current commit ${META_TAG}" 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 \ sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\ -d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\ "object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\ "message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
"type": "commit",\ "type": "commit",\
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' "tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
echo "Pushing New release for Tag" echo "Pushing New release for Tag"
sh '''#! /bin/bash
echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json
jq -n \ echo '{"tag_name":"'${META_TAG}'",\
--arg tag_name "$META_TAG" \ "target_commitish": "master",\
--arg target_commitish "master" \ "name": "'${META_TAG}'",\
--arg ci_url "${CI_URL:-N/A}" \ "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
--arg ls_notes "$AUTO_RELEASE_NOTES" \ printf '","draft": false,"prerelease": false}' >> releasebody.json
--arg remote_notes "$(cat 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'''
"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 // Add protection to the release branch

0
LICENSE Normal file → Executable file
View File

View File

@ -5,6 +5,7 @@
[![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!") [![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!")
[![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://linuxserver.io/discord "realtime support / chat with the community and the team.") [![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://linuxserver.io/discord "realtime support / chat with the community and the team.")
[![Discourse](https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=discourse)](https://discourse.linuxserver.io "post on our community forum.") [![Discourse](https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=discourse)](https://discourse.linuxserver.io "post on our community forum.")
[![Fleet](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Fleet)](https://fleet.linuxserver.io "an online web interface which displays all of our maintained images.")
[![GitHub](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub&logo=github)](https://github.com/linuxserver "view the source for all of our repositories.") [![GitHub](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub&logo=github)](https://github.com/linuxserver "view the source for all of our repositories.")
[![Open Collective](https://img.shields.io/opencollective/all/linuxserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Supporters&logo=open%20collective)](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget") [![Open Collective](https://img.shields.io/opencollective/all/linuxserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Supporters&logo=open%20collective)](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget")
@ -21,6 +22,7 @@ Find us at:
* [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more! * [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more!
* [Discord](https://linuxserver.io/discord) - realtime support / chat with the community and the team. * [Discord](https://linuxserver.io/discord) - realtime support / chat with the community and the team.
* [Discourse](https://discourse.linuxserver.io) - post on our community forum. * [Discourse](https://discourse.linuxserver.io) - post on our community forum.
* [Fleet](https://fleet.linuxserver.io) - an online web interface which displays all of our maintained images.
* [GitHub](https://github.com/linuxserver) - view the source for all of our repositories. * [GitHub](https://github.com/linuxserver) - view the source for all of our repositories.
* [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget * [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget
@ -59,6 +61,7 @@ The architectures supported by this image are:
| :----: | :----: | ---- | | :----: | :----: | ---- |
| x86-64 | ✅ | amd64-\<version tag\> | | x86-64 | ✅ | amd64-\<version tag\> |
| arm64 | ✅ | arm64v8-\<version tag\> | | arm64 | ✅ | arm64v8-\<version tag\> |
| armhf | ❌ | |
## Application Setup ## Application Setup
@ -75,23 +78,6 @@ git config --global user.email "email address"
How to create the [hashed password](https://github.com/cdr/code-server/blob/master/docs/FAQ.md#can-i-store-my-password-hashed). How to create the [hashed password](https://github.com/cdr/code-server/blob/master/docs/FAQ.md#can-i-store-my-password-hashed).
## Read-Only Operation
This image can be run with a read-only container filesystem. For details please [read the docs](https://docs.linuxserver.io/misc/read-only/).
### Caveats
* `/tmp` must be mounted to tmpfs
* `sudo` will not be available
## Non-Root Operation
This image can be run with a non-root user. For details please [read the docs](https://docs.linuxserver.io/misc/non-root/).
### Caveats
* `sudo` will not be available
## Usage ## Usage
To help you get started creating a container from this image you can either use docker-compose or the docker cli. To help you get started creating a container from this image you can either use docker-compose or the docker cli.
@ -117,7 +103,6 @@ services:
- SUDO_PASSWORD_HASH= #optional - SUDO_PASSWORD_HASH= #optional
- PROXY_DOMAIN=code-server.my.domain #optional - PROXY_DOMAIN=code-server.my.domain #optional
- DEFAULT_WORKSPACE=/config/workspace #optional - DEFAULT_WORKSPACE=/config/workspace #optional
- PWA_APPNAME=code-server #optional
volumes: volumes:
- /path/to/code-server/config:/config - /path/to/code-server/config:/config
ports: ports:
@ -139,7 +124,6 @@ docker run -d \
-e SUDO_PASSWORD_HASH= `#optional` \ -e SUDO_PASSWORD_HASH= `#optional` \
-e PROXY_DOMAIN=code-server.my.domain `#optional` \ -e PROXY_DOMAIN=code-server.my.domain `#optional` \
-e DEFAULT_WORKSPACE=/config/workspace `#optional` \ -e DEFAULT_WORKSPACE=/config/workspace `#optional` \
-e PWA_APPNAME=code-server `#optional` \
-p 8443:8443 \ -p 8443:8443 \
-v /path/to/code-server/config:/config \ -v /path/to/code-server/config:/config \
--restart unless-stopped \ --restart unless-stopped \
@ -162,10 +146,7 @@ Containers are configured using parameters passed at runtime (such as those abov
| `-e SUDO_PASSWORD_HASH=` | Optionally set sudo password via hash (takes priority over `SUDO_PASSWORD` var). Format is `$type$salt$hashed`. | | `-e SUDO_PASSWORD_HASH=` | Optionally set sudo password via hash (takes priority over `SUDO_PASSWORD` var). Format is `$type$salt$hashed`. |
| `-e PROXY_DOMAIN=code-server.my.domain` | If this optional variable is set, this domain will be proxied for subdomain proxying. See [Documentation](https://github.com/coder/code-server/blob/main/docs/guide.md#using-a-subdomain) | | `-e PROXY_DOMAIN=code-server.my.domain` | If this optional variable is set, this domain will be proxied for subdomain proxying. See [Documentation](https://github.com/coder/code-server/blob/main/docs/guide.md#using-a-subdomain) |
| `-e DEFAULT_WORKSPACE=/config/workspace` | If this optional variable is set, code-server will open this directory by default | | `-e DEFAULT_WORKSPACE=/config/workspace` | If this optional variable is set, code-server will open this directory by default |
| `-e PWA_APPNAME=code-server` | If this optional variable is set, the PWA app will the specified name. |
| `-v /config` | Contains all relevant configuration files. | | `-v /config` | Contains all relevant configuration files. |
| `--read-only=true` | Run container with a read-only filesystem. Please [read the docs](https://docs.linuxserver.io/misc/read-only/). |
| `--user=1000:1000` | Run container with a non-root user. Please [read the docs](https://docs.linuxserver.io/misc/non-root/). |
## Environment variables from files (Docker secrets) ## Environment variables from files (Docker secrets)
@ -329,8 +310,6 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions ## Versions
* **10.08.25:** - Let server listen on both ipv4 and ipv6.
* **03.06.25:** - Allow setting PWA name using env var `PWA_APPNAME`.
* **13.10.24:** - Only chown config folder when change to ownership or new install is detected. * **13.10.24:** - Only chown config folder when change to ownership or new install is detected.
* **09.10.24:** - Manage permissions in /config/.ssh according to file type * **09.10.24:** - Manage permissions in /config/.ssh according to file type
* **19.08.24:** - Rebase to Ubuntu Noble. * **19.08.24:** - Rebase to Ubuntu Noble.

View File

@ -1,5 +1,5 @@
NAME VERSION TYPE NAME VERSION TYPE
@babel/runtime 7.27.6 npm @babel/runtime 7.25.7 npm
@coder/logger 3.0.1 npm @coder/logger 3.0.1 npm
@mapbox/node-pre-gyp 1.0.11 npm @mapbox/node-pre-gyp 1.0.11 npm
@microsoft/1ds-core-js 3.2.13 npm @microsoft/1ds-core-js 3.2.13 npm
@ -7,47 +7,48 @@ NAME VERSION TY
@microsoft/applicationinsights-core-js 2.8.15 npm @microsoft/applicationinsights-core-js 2.8.15 npm
@microsoft/applicationinsights-shims 2.0.2 npm @microsoft/applicationinsights-shims 2.0.2 npm
@microsoft/dynamicproto-js 1.1.9 npm @microsoft/dynamicproto-js 1.1.9 npm
@parcel/watcher 2.5.0 npm
@parcel/watcher-linux-x64-glibc 2.5.0 npm
@parcel/watcher-linux-x64-musl 2.5.0 npm
@phc/format 1.0.0 npm @phc/format 1.0.0 npm
@tootallnate/once 3.0.0 npm @tootallnate/once 3.0.0 npm
@tootallnate/quickjs-emscripten 0.23.0 npm @tootallnate/quickjs-emscripten 0.23.0 npm
@vscode/deviceid 0.1.1 npm @vscode/deviceid 0.1.1 npm
@vscode/iconv-lite-umd 0.7.1 npm @vscode/iconv-lite-umd 0.7.0 npm
@vscode/proxy-agent 0.36.0 npm @vscode/proxy-agent 0.31.0 npm
@vscode/ripgrep 1.15.14 npm @vscode/ripgrep 1.15.10 npm
@vscode/spdlog 0.15.4 npm @vscode/spdlog 0.15.1 npm
@vscode/tree-sitter-wasm 0.3.0 npm @vscode/tree-sitter-wasm 0.0.5 npm
@vscode/vscode-languagedetection 1.0.21 npm @vscode/vscode-languagedetection 1.0.21 npm
@vscode/watcher 2.5.1-vscode npm @vscode/windows-process-tree 0.6.0 npm
@vscode/windows-process-tree 0.6.2 npm @vscode/windows-registry 1.1.0 npm
@vscode/windows-registry 1.1.2 npm @xterm/addon-clipboard 0.2.0-beta.80 npm
@xterm/addon-clipboard 0.3.0-beta.91 npm @xterm/addon-image 0.9.0-beta.97 npm
@xterm/addon-image 0.10.0-beta.91 npm @xterm/addon-ligatures 0.10.0-beta.97 npm
@xterm/addon-ligatures 0.11.0-beta.91 npm @xterm/addon-progress 0.2.0-beta.3 npm
@xterm/addon-progress 0.3.0-beta.91 npm @xterm/addon-search 0.16.0-beta.97 npm
@xterm/addon-search 0.17.0-beta.91 npm @xterm/addon-serialize 0.14.0-beta.97 npm
@xterm/addon-serialize 0.15.0-beta.91 npm @xterm/addon-unicode11 0.9.0-beta.97 npm
@xterm/addon-unicode11 0.10.0-beta.91 npm @xterm/addon-webgl 0.19.0-beta.97 npm
@xterm/addon-webgl 0.20.0-beta.101 npm @xterm/headless 5.6.0-beta.97 npm
@xterm/headless 6.1.0-beta.91 npm @xterm/xterm 5.6.0-beta.97 npm
@xterm/xterm 6.1.0-beta.104 npm OpenConsole.exe 1.20.240626001 dotnet (+1 duplicate)
ConPTY Interface Library 1.23.251008001 binary (+1 duplicate)
Console Window and PTY Host (Open Source) 1.23.251008001 binary (+1 duplicate)
abbrev 1.1.1 npm abbrev 1.1.1 npm
accepts 2.0.0 npm accepts 1.3.8 npm
adduser 3.137ubuntu1 deb adduser 3.137ubuntu1 deb
agent-base 6.0.2 npm agent-base 6.0.2 npm
agent-base 7.1.1 npm agent-base 7.1.1 npm (+4 duplicates)
agent-base 7.1.3 npm (+3 duplicates)
ansi-regex 5.0.1 npm ansi-regex 5.0.1 npm
aproba 2.0.0 npm aproba 2.0.0 npm
apt 2.8.3 deb apt 2.7.14build2 deb
apt-utils 2.8.3 deb apt-utils 2.7.14build2 deb
are-we-there-yet 2.0.0 npm are-we-there-yet 2.0.0 npm
argon2 0.31.2 npm argon2 0.31.2 npm
argparse 2.0.1 npm argparse 2.0.1 npm
array-flatten 3.0.0 npm
ast-types 0.13.4 npm ast-types 0.13.4 npm
balanced-match 1.0.2 npm balanced-match 1.0.2 npm
base-files 13ubuntu10.3 deb base-files 13ubuntu10.2 deb
base-passwd 3.6.3build1 deb base-passwd 3.6.3build1 deb
base64-js 1.5.1 npm base64-js 1.5.1 npm
bash 5.2.21-2ubuntu4 deb bash 5.2.21-2ubuntu4 deb
@ -56,42 +57,43 @@ bat 1.0.0 np
beep-boop 1.2.3 npm beep-boop 1.2.3 npm
bindings 1.5.0 npm bindings 1.5.0 npm
bl 4.1.0 npm bl 4.1.0 npm
body-parser 2.2.0 npm body-parser 2.0.0-beta.2 npm
brace-expansion 1.1.12 npm brace-expansion 1.1.11 npm
braces 3.0.3 npm braces 3.0.3 npm
bsdutils 1:2.39.3-9ubuntu6.4 deb bsdutils 1:2.39.3-9ubuntu6.2 deb
buffer 5.7.1 npm buffer 5.7.1 npm
buffer-alloc 1.2.0 npm buffer-alloc 1.2.0 npm
buffer-alloc-unsafe 1.1.0 npm buffer-alloc-unsafe 1.1.0 npm
buffer-crc32 0.2.13 npm buffer-crc32 0.2.13 npm
buffer-fill 1.0.0 npm buffer-fill 1.0.0 npm
builtin-notebook-renderers 1.0.0 npm builtin-notebook-renderers 1.0.0 npm
bytes 3.1.2 npm bytes 3.0.0 npm
bytes 3.1.2 npm (+1 duplicate)
ca-certificates 20240203 deb ca-certificates 20240203 deb
call-bind-apply-helpers 1.0.2 npm call-bind 1.0.7 npm
call-bound 1.0.4 npm
catatonit 0.1.7-1 deb catatonit 0.1.7-1 deb
charenc 0.0.2 npm charenc 0.0.2 npm
chownr 1.1.4 npm chownr 1.1.4 npm
chownr 2.0.0 npm chownr 2.0.0 npm
clojure 1.0.0 npm clojure 1.0.0 npm
code-server 1.108.1 npm code-server 1.97.2 npm
code-server 4.108.1 npm code-server 4.97.2 npm
coffeescript 1.0.0 npm coffeescript 1.0.0 npm
color-support 1.1.3 npm color-support 1.1.3 npm
commander 8.3.0 npm
compressible 2.0.18 npm compressible 2.0.18 npm
compression 1.8.1 npm compression 1.7.4 npm
concat-map 0.0.1 npm concat-map 0.0.1 npm
configuration-editing 1.0.0 npm configuration-editing 1.0.0 npm
conpty.dll 1.20.240626001 dotnet (+1 duplicate)
console-control-strings 1.1.0 npm console-control-strings 1.1.0 npm
content-disposition 1.0.0 npm content-disposition 0.5.4 npm
content-type 1.0.5 npm content-type 1.0.5 npm
cookie 0.7.2 npm (+1 duplicate) cookie 0.4.1 npm
cookie-parser 1.4.7 npm cookie 0.6.0 npm
cookie 0.7.2 npm
cookie-parser 1.4.6 npm
cookie-signature 1.0.6 npm cookie-signature 1.0.6 npm
cookie-signature 1.2.2 npm coreutils 9.4-3ubuntu6 deb
coreutils 9.4-3ubuntu6.1 deb
cpp 1.0.0 npm cpp 1.0.0 npm
cron 3.0pl1-184ubuntu2 deb cron 3.0pl1-184ubuntu2 deb
cron-daemon-common 3.0pl1-184ubuntu2 deb cron-daemon-common 3.0pl1-184ubuntu2 deb
@ -105,35 +107,36 @@ dash 0.5.12-6ubuntu5 de
data-uri-to-buffer 6.0.2 npm data-uri-to-buffer 6.0.2 npm
debconf 1.5.86ubuntu1 deb debconf 1.5.86ubuntu1 deb
debianutils 5.17build1 deb debianutils 5.17build1 deb
debug 2.6.9 npm debug 2.6.9 npm (+1 duplicate)
debug 3.1.0 npm (+2 duplicates)
debug 4.3.4 npm debug 4.3.4 npm
debug 4.4.1 npm debug 4.3.7 npm
debug-auto-launch 1.0.0 npm debug-auto-launch 1.0.0 npm
debug-server-ready 1.0.0 npm debug-server-ready 1.0.0 npm
decompress-response 6.0.0 npm decompress-response 6.0.0 npm
deep-extend 0.6.0 npm deep-extend 0.6.0 npm
define-data-property 1.1.4 npm
degenerator 5.0.1 npm degenerator 5.0.1 npm
delegates 1.0.0 npm delegates 1.0.0 npm
depd 2.0.0 npm depd 2.0.0 npm
destroy 1.2.0 npm
detect-libc 1.0.3 npm
detect-libc 2.0.1 npm
detect-libc 2.0.3 npm detect-libc 2.0.3 npm
detect-libc 2.0.4 npm
diff 1.0.0 npm diff 1.0.0 npm
diffutils 1:3.10-1build1 deb diffutils 1:3.10-1build1 deb
dirmngr 2.4.4-2ubuntu17.4 deb dirmngr 2.4.4-2ubuntu17 deb
docker 1.0.0 npm docker 1.0.0 npm
dotenv 1.0.0 npm dpkg 1.22.6ubuntu6.1 deb
dpkg 1.22.6ubuntu6.5 deb
dunder-proto 1.0.1 npm
e2fsprogs 1.47.0-2.4~exp1ubuntu4.1 deb e2fsprogs 1.47.0-2.4~exp1ubuntu4.1 deb
ee-first 1.1.1 npm ee-first 1.1.1 npm
emmet 1.0.0 npm emmet 1.0.0 npm
emoji-regex 8.0.0 npm emoji-regex 8.0.0 npm
encodeurl 2.0.0 npm encodeurl 1.0.2 npm
end-of-stream 1.4.4 npm end-of-stream 1.4.4 npm
env-paths 2.2.1 npm env-paths 2.2.1 npm
es-define-property 1.0.1 npm es-define-property 1.0.0 npm
es-errors 1.3.0 npm es-errors 1.3.0 npm
es-object-atoms 1.1.1 npm
es6-promisify 7.0.0 npm es6-promisify 7.0.0 npm
escape-html 1.0.3 npm escape-html 1.0.3 npm
escodegen 2.1.0 npm escodegen 2.1.0 npm
@ -143,54 +146,58 @@ esutils 2.0.3 np
etag 1.8.1 npm etag 1.8.1 npm
eventemitter3 4.0.7 npm eventemitter3 4.0.7 npm
expand-template 2.0.3 npm expand-template 2.0.3 npm
express 5.1.0 npm express 5.0.0-beta.3 npm
extension-editing 1.0.0 npm extension-editing 1.0.0 npm
fd-slicer 1.1.0 npm fd-slicer 1.1.0 npm
file-uri-to-path 1.0.0 npm file-uri-to-path 1.0.0 npm
fill-range 7.1.1 npm fill-range 7.1.1 npm
finalhandler 2.1.0 npm finalhandler 1.2.0 npm
findutils 4.9.0-5build1 deb findutils 4.9.0-5build1 deb
follow-redirects 1.15.9 npm follow-redirects 1.15.9 npm
font-finder 1.1.0 npm
font-ligatures 1.4.1 npm
forwarded 0.2.0 npm forwarded 0.2.0 npm
fresh 2.0.0 npm fresh 0.5.2 npm
fs-constants 1.0.0 npm fs-constants 1.0.0 npm
fs-extra 11.2.0 npm fs-extra 11.2.0 npm (+1 duplicate)
fs-minipass 2.1.0 npm fs-minipass 2.1.0 npm
fs.realpath 1.0.0 npm fs.realpath 1.0.0 npm
fsharp 1.0.0 npm fsharp 1.0.0 npm
function-bind 1.1.2 npm function-bind 1.1.2 npm
gauge 3.0.2 npm gauge 3.0.2 npm
gcc-14-base 14.2.0-4ubuntu2~24.04 deb gcc-14-base 14.2.0-4ubuntu2~24.04 deb
get-intrinsic 1.3.0 npm get-intrinsic 1.2.4 npm
get-proto 1.0.1 npm get-system-fonts 2.0.2 npm
get-uri 6.0.4 npm get-uri 6.0.3 npm
git 1.0.0 npm git 1.0.0 npm
git 1:2.43.0-1ubuntu7.3 deb git 1:2.43.0-1ubuntu7.2 deb
git-base 1.0.0 npm git-base 1.0.0 npm
git-man 1:2.43.0-1ubuntu7.3 deb git-man 1:2.43.0-1ubuntu7.2 deb
github 0.0.1 npm github 0.0.1 npm
github-authentication 0.0.2 npm github-authentication 0.0.2 npm
github-from-package 0.0.0 npm github-from-package 0.0.0 npm
glob 7.2.3 npm glob 7.2.3 npm
gnupg 2.4.4-2ubuntu17.4 deb gnupg 2.4.4-2ubuntu17 deb
gnupg-l10n 2.4.4-2ubuntu17.4 deb gnupg-l10n 2.4.4-2ubuntu17 deb
gnupg-utils 2.4.4-2ubuntu17.4 deb gnupg-utils 2.4.4-2ubuntu17 deb
go 1.0.0 npm go 1.0.0 npm
gopd 1.2.0 npm gopd 1.0.1 npm
gpg 2.4.4-2ubuntu17.4 deb gpg 2.4.4-2ubuntu17 deb
gpg-agent 2.4.4-2ubuntu17.4 deb gpg-agent 2.4.4-2ubuntu17 deb
gpg-wks-client 2.4.4-2ubuntu17.4 deb gpg-wks-client 2.4.4-2ubuntu17 deb
gpgconf 2.4.4-2ubuntu17.4 deb gpgconf 2.4.4-2ubuntu17 deb
gpgsm 2.4.4-2ubuntu17.4 deb gpgsm 2.4.4-2ubuntu17 deb
gpgv 2.4.4-2ubuntu17.4 deb gpgv 2.4.4-2ubuntu17 deb
graceful-fs 4.2.11 npm graceful-fs 4.2.11 npm (+1 duplicate)
grep 3.11-4build1 deb grep 3.11-4build1 deb
groovy 1.0.0 npm groovy 1.0.0 npm
grunt 1.0.0 npm grunt 1.0.0 npm
gulp 1.0.0 npm gulp 1.0.0 npm
gzip 1.12-1ubuntu3.1 deb gzip 1.12-1ubuntu3 deb
handlebars 1.0.0 npm handlebars 1.0.0 npm
has-symbols 1.1.0 npm has-property-descriptors 1.0.2 npm
has-proto 1.0.3 npm
has-symbols 1.0.3 npm
has-unicode 2.0.1 npm has-unicode 2.0.1 npm
hasown 2.0.2 npm hasown 2.0.2 npm
hlsl 1.0.0 npm hlsl 1.0.0 npm
@ -204,10 +211,9 @@ http-proxy-agent 7.0.2 np
httpolyglot 0.1.2 npm httpolyglot 0.1.2 npm
https-proxy-agent 5.0.1 npm https-proxy-agent 5.0.1 npm
https-proxy-agent 7.0.2 npm https-proxy-agent 7.0.2 npm
https-proxy-agent 7.0.6 npm (+1 duplicate) https-proxy-agent 7.0.5 npm (+1 duplicate)
i18next 25.3.0 npm i18next 23.16.4 npm
iconv-lite 0.6.3 npm iconv-lite 0.5.2 npm
iconv-lite 0.7.0 npm
ieee754 1.2.1 npm ieee754 1.2.1 npm
inflight 1.0.6 npm inflight 1.0.6 npm
inherits 2.0.4 npm (+1 duplicate) inherits 2.0.4 npm (+1 duplicate)
@ -227,39 +233,38 @@ isexe 2.0.0 np
jake 1.0.0 npm jake 1.0.0 npm
java 1.0.0 npm java 1.0.0 npm
javascript 1.0.0 npm javascript 1.0.0 npm
jq 1.7.1-3ubuntu0.24.04.1 deb jq 1.7.1-3build1 deb
js-base64 3.7.7 npm js-base64 3.7.7 npm
js-debug 1.105.0 npm js-debug 1.97.1 npm
js-debug-companion 1.1.3 npm js-debug-companion 1.1.3 npm
js-yaml 4.1.0 npm js-yaml 4.1.0 npm
jsbn 1.1.0 npm (+1 duplicate) jsbn 1.1.0 npm (+1 duplicate)
jschardet 3.1.4 npm jschardet 3.1.4 npm
json 1.0.0 npm json 1.0.0 npm
json-language-features 1.0.0 npm json-language-features 1.0.0 npm
jsonfile 6.1.0 npm jsonfile 6.1.0 npm (+1 duplicate)
julia 1.0.0 npm julia 1.0.0 npm
just-performance 4.3.0 npm just-performance 4.3.0 npm
katex 0.16.22 npm
kerberos 2.1.1 npm kerberos 2.1.1 npm
keyboxd 2.4.4-2ubuntu17.4 deb keyboxd 2.4.4-2ubuntu17 deb
krb5-locales 1.20.1-6ubuntu2.6 deb krb5-locales 1.20.1-6ubuntu2.5 deb
latex 1.0.0 npm latex 1.0.0 npm
less 1.0.0 npm less 1.0.0 npm
less 590-2ubuntu2.1 deb less 590-2ubuntu2.1 deb
libacl1 2.3.2-1build1.1 deb libacl1 2.3.2-1build1.1 deb
libapparmor1 4.0.1really4.0.1-0ubuntu0.24.04.5 deb libapparmor1 4.0.1really4.0.1-0ubuntu0.24.04.3 deb
libapt-pkg6.0t64 2.8.3 deb libapt-pkg6.0t64 2.7.14build2 deb
libassuan0 2.5.6-1build1 deb libassuan0 2.5.6-1build1 deb
libatomic1 14.2.0-4ubuntu2~24.04 deb libatomic1 14.2.0-4ubuntu2~24.04 deb
libattr1 1:2.5.2-1build1.1 deb libattr1 1:2.5.2-1build1.1 deb
libaudit-common 1:3.1.2-2.1build1.1 deb libaudit-common 1:3.1.2-2.1build1.1 deb
libaudit1 1:3.1.2-2.1build1.1 deb libaudit1 1:3.1.2-2.1build1.1 deb
libblkid1 2.39.3-9ubuntu6.4 deb libblkid1 2.39.3-9ubuntu6.2 deb
libbrotli1 1.1.0-2build2 deb libbrotli1 1.1.0-2build2 deb
libbsd0 0.12.1-1build1.1 deb libbsd0 0.12.1-1build1.1 deb
libbz2-1.0 1.0.8-5.1build0.1 deb libbz2-1.0 1.0.8-5.1build0.1 deb
libc-bin 2.39-0ubuntu8.6 deb libc-bin 2.39-0ubuntu8.4 deb
libc6 2.39-0ubuntu8.6 deb libc6 2.39-0ubuntu8.4 deb
libcap-ng0 0.8.4-2build2 deb libcap-ng0 0.8.4-2build2 deb
libcap2 1:2.66-5ubuntu2.2 deb libcap2 1:2.66-5ubuntu2.2 deb
libcbor0.10 0.10.2-1.2ubuntu2 deb libcbor0.10 0.10.2-1.2ubuntu2 deb
@ -271,7 +276,7 @@ libdb5.3t64 5.3.28+dfsg2-7 de
libdebconfclient0 0.271ubuntu3 deb libdebconfclient0 0.271ubuntu3 deb
libedit2 3.1-20230828-1build1 deb libedit2 3.1-20230828-1build1 deb
liberror-perl 0.17029-2 deb liberror-perl 0.17029-2 deb
libexpat1 2.6.1-2ubuntu0.3 deb libexpat1 2.6.1-2ubuntu0.2 deb
libext2fs2t64 1.47.0-2.4~exp1ubuntu4.1 deb libext2fs2t64 1.47.0-2.4~exp1ubuntu4.1 deb
libffi8 3.4.6-1build1 deb libffi8 3.4.6-1build1 deb
libfido2-1 1.14.0-1build3 deb libfido2-1 1.14.0-1build3 deb
@ -280,35 +285,35 @@ libgcrypt20 1.10.3-2build1 de
libgdbm-compat4t64 1.23-5.1build1 deb libgdbm-compat4t64 1.23-5.1build1 deb
libgdbm6t64 1.23-5.1build1 deb libgdbm6t64 1.23-5.1build1 deb
libgmp10 2:6.3.0+dfsg-2ubuntu6.1 deb libgmp10 2:6.3.0+dfsg-2ubuntu6.1 deb
libgnutls30t64 3.8.3-1.1ubuntu3.4 deb libgnutls30t64 3.8.3-1.1ubuntu3.3 deb
libgpg-error0 1.47-3build2.1 deb libgpg-error0 1.47-3build2.1 deb
libgssapi-krb5-2 1.20.1-6ubuntu2.6 deb libgssapi-krb5-2 1.20.1-6ubuntu2.5 deb
libhogweed6t64 3.9.1-2.2build1.1 deb libhogweed6t64 3.9.1-2.2build1.1 deb
libidn2-0 2.3.7-2build1.1 deb libidn2-0 2.3.7-2build1.1 deb
libjq1 1.7.1-3ubuntu0.24.04.1 deb libjq1 1.7.1-3build1 deb
libk5crypto3 1.20.1-6ubuntu2.6 deb libk5crypto3 1.20.1-6ubuntu2.5 deb
libkeyutils1 1.6.3-3build1 deb libkeyutils1 1.6.3-3build1 deb
libkrb5-3 1.20.1-6ubuntu2.6 deb libkrb5-3 1.20.1-6ubuntu2.5 deb
libkrb5support0 1.20.1-6ubuntu2.6 deb libkrb5support0 1.20.1-6ubuntu2.5 deb
libksba8 1.6.6-1build1 deb libksba8 1.6.6-1build1 deb
libldap-common 2.6.7+dfsg-1~exp1ubuntu8.2 deb libldap-common 2.6.7+dfsg-1~exp1ubuntu8.2 deb
libldap2 2.6.7+dfsg-1~exp1ubuntu8.2 deb libldap2 2.6.7+dfsg-1~exp1ubuntu8.2 deb
liblz4-1 1.9.4-1build1.1 deb liblz4-1 1.9.4-1build1.1 deb
liblzma5 5.6.1+really5.4.5-1ubuntu0.2 deb liblzma5 5.6.1+really5.4.5-1build0.1 deb
libmd0 1.1.0-2build1.1 deb libmd0 1.1.0-2build1.1 deb
libmount1 2.39.3-9ubuntu6.4 deb libmount1 2.39.3-9ubuntu6.2 deb
libncursesw6 6.4+20240113-1ubuntu2 deb libncursesw6 6.4+20240113-1ubuntu2 deb
libnettle8t64 3.9.1-2.2build1.1 deb libnettle8t64 3.9.1-2.2build1.1 deb
libnghttp2-14 1.59.0-1ubuntu0.2 deb libnghttp2-14 1.59.0-1ubuntu0.2 deb
libnpth0t64 1.6-3.1build1 deb libnpth0t64 1.6-3.1build1 deb
libonig5 6.9.9-1build1 deb libonig5 6.9.9-1build1 deb
libp11-kit0 0.25.3-4ubuntu2.1 deb libp11-kit0 0.25.3-4ubuntu2.1 deb
libpam-modules 1.5.3-5ubuntu5.5 deb libpam-modules 1.5.3-5ubuntu5.1 deb
libpam-modules-bin 1.5.3-5ubuntu5.5 deb libpam-modules-bin 1.5.3-5ubuntu5.1 deb
libpam-runtime 1.5.3-5ubuntu5.5 deb libpam-runtime 1.5.3-5ubuntu5.1 deb
libpam0g 1.5.3-5ubuntu5.5 deb libpam0g 1.5.3-5ubuntu5.1 deb
libpcre2-8-0 10.42-4ubuntu2.1 deb libpcre2-8-0 10.42-4ubuntu2.1 deb
libperl5.38t64 5.38.2-3.2ubuntu0.2 deb libperl5.38t64 5.38.2-3.2build2.1 deb
libproc2-0 2:4.0.4-4ubuntu3.2 deb libproc2-0 2:4.0.4-4ubuntu3.2 deb
libpsl5t64 0.21.2-1.1build1 deb libpsl5t64 0.21.2-1.1build1 deb
libreadline8t64 8.2-4build1 deb libreadline8t64 8.2-4build1 deb
@ -321,18 +326,18 @@ libselinux1 3.5-2ubuntu2.1 de
libsemanage-common 3.5-1build5 deb libsemanage-common 3.5-1build5 deb
libsemanage2 3.5-1build5 deb libsemanage2 3.5-1build5 deb
libsepol2 3.5-2build1 deb libsepol2 3.5-2build1 deb
libsmartcols1 2.39.3-9ubuntu6.4 deb libsmartcols1 2.39.3-9ubuntu6.2 deb
libsqlite3-0 3.45.1-1ubuntu2.5 deb libsqlite3-0 3.45.1-1ubuntu2.1 deb
libss2 1.47.0-2.4~exp1ubuntu4.1 deb libss2 1.47.0-2.4~exp1ubuntu4.1 deb
libssh-4 0.10.6-2ubuntu0.2 deb libssh-4 0.10.6-2build2 deb
libssl3t64 3.0.13-0ubuntu3.6 deb libssl3t64 3.0.13-0ubuntu3.5 deb
libstdc++6 14.2.0-4ubuntu2~24.04 deb libstdc++6 14.2.0-4ubuntu2~24.04 deb
libsystemd0 255.4-1ubuntu8.12 deb libsystemd0 255.4-1ubuntu8.5 deb
libtasn1-6 4.19.0-3ubuntu0.24.04.2 deb libtasn1-6 4.19.0-3ubuntu0.24.04.1 deb
libtinfo6 6.4+20240113-1ubuntu2 deb libtinfo6 6.4+20240113-1ubuntu2 deb
libudev1 255.4-1ubuntu8.12 deb libudev1 255.4-1ubuntu8.5 deb
libunistring5 1.1-2build1.1 deb libunistring5 1.1-2build1.1 deb
libuuid1 2.39.3-9ubuntu6.4 deb libuuid1 2.39.3-9ubuntu6.2 deb
libx11-6 2:1.8.7-1build1 deb libx11-6 2:1.8.7-1build1 deb
libx11-data 2:1.8.7-1build1 deb libx11-data 2:1.8.7-1build1 deb
libxau6 1:1.0.9-1build6 deb libxau6 1:1.0.9-1build6 deb
@ -343,7 +348,7 @@ libxmuu1 2:1.1.3-3build2 de
libxxhash0 0.8.2-2build1 deb libxxhash0 0.8.2-2build1 deb
libzstd1 1.5.5+dfsg2-2build1.1 deb libzstd1 1.5.5+dfsg2-2build1.1 deb
limiter 2.1.0 npm limiter 2.1.0 npm
locales 2.39-0ubuntu8.6 deb locales 2.39-0ubuntu8.4 deb
log 1.0.0 npm log 1.0.0 npm
login 1:4.13+dfsg1-4ubuntu3.2 deb login 1:4.13+dfsg1-4ubuntu3.2 deb
logsave 1.47.0-2.4~exp1ubuntu4.1 deb logsave 1.47.0-2.4~exp1ubuntu4.1 deb
@ -355,28 +360,28 @@ make-dir 3.1.0 np
markdown 1.0.0 npm markdown 1.0.0 npm
markdown-language-features 1.0.0 npm markdown-language-features 1.0.0 npm
markdown-math 1.0.0 npm markdown-math 1.0.0 npm
math-intrinsics 1.1.0 npm
mawk 1.3.4.20240123-1build1 deb mawk 1.3.4.20240123-1build1 deb
md5 2.3.0 npm md5 2.3.0 npm
media-preview 1.0.0 npm media-preview 1.0.0 npm
media-typer 1.1.0 npm media-typer 0.3.0 npm
merge-conflict 1.0.0 npm merge-conflict 1.0.0 npm
merge-descriptors 2.0.0 npm merge-descriptors 1.0.1 npm
mermaid-chat-features 1.0.0 npm methods 1.1.2 npm
micromatch 4.0.8 npm micromatch 4.0.8 npm
microsoft-authentication 0.0.1 npm microsoft-authentication 0.0.1 npm
mime-db 1.54.0 npm mime-db 1.52.0 npm
mime-types 3.0.1 npm mime-db 1.53.0 npm
mime-types 2.1.35 npm
mimic-response 3.1.0 npm mimic-response 3.1.0 npm
minimatch 3.1.2 npm minimatch 3.1.2 npm
minimist 1.2.8 npm minimist 1.2.6 npm
minipass 3.3.6 npm (+1 duplicate) minipass 3.3.6 npm (+1 duplicate)
minipass 5.0.0 npm minipass 5.0.0 npm
minizlib 2.1.2 npm minizlib 2.1.2 npm
mkdirp 1.0.4 npm (+1 duplicate) mkdirp 1.0.4 npm (+1 duplicate)
mkdirp-classic 0.5.3 npm mkdirp-classic 0.5.3 npm
mount 2.39.3-9ubuntu6.4 deb mount 2.39.3-9ubuntu6.2 deb
ms 2.0.0 npm ms 2.0.0 npm (+4 duplicates)
ms 2.1.2 npm ms 2.1.2 npm
ms 2.1.3 npm ms 2.1.3 npm
nano 7.2-2ubuntu0.1 deb nano 7.2-2ubuntu0.1 deb
@ -384,45 +389,44 @@ napi-build-utils 1.0.2 np
native-watchdog 1.4.2 npm native-watchdog 1.4.2 npm
ncurses-base 6.4+20240113-1ubuntu2 deb ncurses-base 6.4+20240113-1ubuntu2 deb
ncurses-bin 6.4+20240113-1ubuntu2 deb ncurses-bin 6.4+20240113-1ubuntu2 deb
negotiator 0.6.4 npm negotiator 0.6.3 npm
negotiator 1.0.0 npm net-tools 2.10-0.1ubuntu4 deb
net-tools 2.10-0.1ubuntu4.4 deb
netbase 6.4 deb netbase 6.4 deb
netcat-openbsd 1.226-1ubuntu2 deb netcat-openbsd 1.226-1ubuntu2 deb
netmask 2.0.2 npm netmask 2.0.2 npm
node 22.21.1 binary node 20.18.1 binary
node-abi 3.8.0 npm node-abi 3.8.0 npm
node-addon-api 7.1.0 npm node-addon-api 7.1.0 npm
node-addon-api 7.1.1 npm node-addon-api 7.1.1 npm
node-fetch 2.7.0 npm node-fetch 2.7.0 npm
node-pty 1.1.0-beta43 npm node-pty 1.1.0-beta22 npm
nopt 5.0.0 npm nopt 5.0.0 npm
npm 1.0.1 npm npm 1.0.1 npm
npmlog 5.0.1 npm npmlog 5.0.1 npm
nw-pre-gyp-module-test 0.0.1 npm nw-pre-gyp-module-test 0.0.1 npm
object-assign 4.1.1 npm object-assign 4.1.1 npm
object-inspect 1.13.4 npm object-inspect 1.13.2 npm
objective-c 1.0.0 npm objective-c 1.0.0 npm
on-finished 2.4.1 npm on-finished 2.4.1 npm
on-headers 1.1.0 npm on-headers 1.0.2 npm
once 1.4.0 npm (+1 duplicate) once 1.4.0 npm (+1 duplicate)
openssh-client 1:9.6p1-3ubuntu13.14 deb openssh-client 1:9.6p1-3ubuntu13.8 deb
openssl 3.0.13-0ubuntu3.6 deb openssl 3.0.13-0ubuntu3.5 deb
opentype.js 0.8.0 npm opentype.js 0.8.0 npm
os-tmpdir 1.0.2 npm os-tmpdir 1.0.2 npm
pac-proxy-agent 7.2.0 npm pac-proxy-agent 7.0.2 npm
pac-resolver 7.0.1 npm pac-resolver 7.0.1 npm
parseurl 1.3.3 npm parseurl 1.3.3 npm
passwd 1:4.13+dfsg1-4ubuntu3.2 deb passwd 1:4.13+dfsg1-4ubuntu3.2 deb
patch 2.7.6-7build3 deb patch 2.7.6-7build3 deb
path-is-absolute 1.0.1 npm path-is-absolute 1.0.1 npm
path-to-regexp 8.3.0 npm path-to-regexp 3.2.0 npm
pem 1.14.8 npm pem 1.14.8 npm
pend 1.2.0 npm pend 1.2.0 npm
perl 1.0.0 npm perl 1.0.0 npm
perl 5.38.2-3.2ubuntu0.2 deb perl 5.38.2-3.2build2.1 deb
perl-base 5.38.2-3.2ubuntu0.2 deb perl-base 5.38.2-3.2build2.1 deb
perl-modules-5.38 5.38.2-3.2ubuntu0.2 deb perl-modules-5.38 5.38.2-3.2build2.1 deb
php 1.0.0 npm php 1.0.0 npm
php-language-features 1.0.0 npm php-language-features 1.0.0 npm
picomatch 2.3.1 npm picomatch 2.3.1 npm
@ -430,31 +434,34 @@ pinentry-curses 1.2.1-3ubuntu5 de
powershell 1.0.0 npm powershell 1.0.0 npm
prebuild-install 7.1.2 npm prebuild-install 7.1.2 npm
procps 2:4.0.4-4ubuntu3.2 deb procps 2:4.0.4-4ubuntu3.2 deb
prompt 1.0.0 npm promise-stream-reader 1.0.1 npm
proxy-addr 2.0.7 npm proxy-addr 2.0.7 npm
proxy-agent 6.5.0 npm proxy-agent 6.4.0 npm
proxy-from-env 1.1.0 npm (+1 duplicate) proxy-from-env 1.1.0 npm (+1 duplicate)
publicsuffix 20231001.0357-0.1 deb publicsuffix 20231001.0357-0.1 deb
pug 1.0.0 npm pug 1.0.0 npm
pump 3.0.0 npm pump 3.0.0 npm
python 1.0.0 npm python 1.0.0 npm
qs 6.14.0 npm qs 6.11.0 npm (+1 duplicate)
qs 6.13.0 npm
r 1.0.0 npm r 1.0.0 npm
range-parser 1.2.1 npm range-parser 1.2.1 npm
raw-body 3.0.1 npm raw-body 3.0.0-beta.1 npm
razor 1.0.0 npm razor 1.0.0 npm
rc 1.2.8 npm rc 1.2.8 npm
readable-stream 3.6.0 npm readable-stream 3.6.0 npm
readable-stream 3.6.2 npm readable-stream 3.6.2 npm
readline-common 8.2-4build1 deb readline-common 8.2-4build1 deb
references-view 1.0.0 npm references-view 1.0.0 npm
regenerator-runtime 0.14.1 npm
requires-port 1.0.0 npm requires-port 1.0.0 npm
restructuredtext 1.0.0 npm restructuredtext 1.0.0 npm
rimraf 3.0.2 npm rimraf 3.0.2 npm
rotating-file-stream 3.2.5 npm rotating-file-stream 3.2.5 npm
router 2.2.0 npm router 2.0.0-beta.2 npm
ruby 1.0.0 npm ruby 1.0.0 npm
rust 1.0.0 npm rust 1.0.0 npm
safe-buffer 5.1.2 npm
safe-buffer 5.2.1 npm (+1 duplicate) safe-buffer 5.2.1 npm (+1 duplicate)
safe-compare 1.1.4 npm safe-compare 1.1.4 npm
safer-buffer 2.1.2 npm safer-buffer 2.1.2 npm
@ -463,27 +470,23 @@ search-result 1.0.0 np
sed 4.9-2build1 deb sed 4.9-2build1 deb
semver 6.3.1 npm semver 6.3.1 npm
semver 7.5.4 npm semver 7.5.4 npm
semver 7.7.1 npm semver 7.6.3 npm
send 1.2.0 npm send 1.0.0-beta.2 npm
sensible-utils 0.0.22 deb sensible-utils 0.0.22 deb
serve-static 2.2.0 npm serve-static 2.0.0-beta.2 npm
set-blocking 2.0.0 npm set-blocking 2.0.0 npm
set-function-length 1.2.2 npm
setprototypeof 1.2.0 npm setprototypeof 1.2.0 npm
shaderlab 1.0.0 npm shaderlab 1.0.0 npm
shellscript 1.0.0 npm shellscript 1.0.0 npm
side-channel 1.1.0 npm side-channel 1.0.6 npm
side-channel-list 1.0.0 npm
side-channel-map 1.0.1 npm
side-channel-weakmap 1.0.2 npm
signal-exit 3.0.7 npm signal-exit 3.0.7 npm
simple-browser 1.0.0 npm simple-browser 1.0.0 npm
simple-concat 1.0.1 npm simple-concat 1.0.1 npm
simple-get 4.0.1 npm simple-get 4.0.1 npm
smart-buffer 4.2.0 npm (+1 duplicate) smart-buffer 4.2.0 npm (+1 duplicate)
socks 2.8.3 npm socks 2.8.3 npm (+1 duplicate)
socks 2.8.4 npm socks-proxy-agent 8.0.4 npm (+1 duplicate)
socks-proxy-agent 8.0.4 npm
socks-proxy-agent 8.0.5 npm
source-map 0.6.1 npm source-map 0.6.1 npm
sprintf-js 1.1.3 npm (+1 duplicate) sprintf-js 1.1.3 npm (+1 duplicate)
sql 1.0.0 npm sql 1.0.0 npm
@ -492,15 +495,15 @@ string-width 4.2.3 np
string_decoder 1.3.0 npm (+1 duplicate) string_decoder 1.3.0 npm (+1 duplicate)
strip-ansi 6.0.1 npm strip-ansi 6.0.1 npm
strip-json-comments 2.0.1 npm strip-json-comments 2.0.1 npm
sudo 1.9.15p5-3ubuntu5.24.04.1 deb sudo 1.9.15p5-3ubuntu5 deb
swift 1.0.0 npm swift 1.0.0 npm
systemd-standalone-sysusers 255.4-1ubuntu8.12 deb systemd-standalone-sysusers 255.4-1ubuntu8.5 deb
sysvinit-utils 3.08-6ubuntu3 deb sysvinit-utils 3.08-6ubuntu3 deb
tar 1.35+dfsg-3build1 deb tar 1.35+dfsg-3build1 deb
tar 6.2.1 npm tar 6.2.1 npm
tar-fs 2.1.4 npm tar-fs 2.1.1 npm
tar-stream 2.2.0 npm tar-stream 2.2.0 npm
tas-client 0.3.1 npm tas-client-umd 0.2.0 npm
terminal-suggest 1.0.1 npm terminal-suggest 1.0.1 npm
theme-abyss 1.0.0 npm theme-abyss 1.0.0 npm
theme-defaults 1.0.0 npm theme-defaults 1.0.0 npm
@ -520,19 +523,19 @@ tslib 2.7.0 np
tslib 2.8.1 npm tslib 2.8.1 npm
tunnel-agent 0.6.0 npm tunnel-agent 0.6.0 npm
tunnel-forwarding 1.0.0 npm tunnel-forwarding 1.0.0 npm
type-is 2.0.1 npm type-is 1.6.18 npm
typescript 1.0.0 npm typescript 1.0.0 npm
typescript 5.8.3 npm typescript 5.7.3 npm
typescript 5.9.3 npm
typescript-language-features 1.0.0 npm typescript-language-features 1.0.0 npm
tzdata 2025b-0ubuntu0.24.04.1 deb tzdata 2024b-0ubuntu0.24.04.1 deb
ubuntu-keyring 2023.11.28.1 deb ubuntu-keyring 2023.11.28.1 deb
undici 7.9.0 npm undici 7.3.0 npm
universalify 2.0.1 npm universalify 2.0.1 npm (+1 duplicate)
unminimize 0.2.1 deb unminimize 0.2.1 deb
unpipe 1.0.0 npm unpipe 1.0.0 npm
util-deprecate 1.0.2 npm (+1 duplicate) util-deprecate 1.0.2 npm (+1 duplicate)
util-linux 2.39.3-9ubuntu6.4 deb util-linux 2.39.3-9ubuntu6.2 deb
utils-merge 1.0.1 npm
uuid 9.0.1 npm uuid 9.0.1 npm
vary 1.1.2 npm vary 1.1.2 npm
vb 1.0.0 npm vb 1.0.0 npm
@ -543,7 +546,7 @@ vscode-js-profile-table 1.0.10 np
vscode-json-languageserver 1.3.4 npm vscode-json-languageserver 1.3.4 npm
vscode-oniguruma 1.7.0 npm vscode-oniguruma 1.7.0 npm
vscode-regexpp 3.1.0 npm vscode-regexpp 3.1.0 npm
vscode-textmate 9.3.0 npm vscode-textmate 9.2.0 npm
vscode-theme-seti 1.0.0 npm vscode-theme-seti 1.0.0 npm
webidl-conversions 3.0.1 npm webidl-conversions 3.0.1 npm
whatwg-url 5.0.0 npm whatwg-url 5.0.0 npm

View File

@ -36,14 +36,6 @@ opt_param_env_vars:
- {env_var: "SUDO_PASSWORD_HASH", env_value: "", desc: "Optionally set sudo password via hash (takes priority over `SUDO_PASSWORD` var). Format is `$type$salt$hashed`."} - {env_var: "SUDO_PASSWORD_HASH", env_value: "", desc: "Optionally set sudo password via hash (takes priority over `SUDO_PASSWORD` var). Format is `$type$salt$hashed`."}
- {env_var: "PROXY_DOMAIN", env_value: "code-server.my.domain", desc: "If this optional variable is set, this domain will be proxied for subdomain proxying. See [Documentation](https://github.com/coder/code-server/blob/main/docs/guide.md#using-a-subdomain)"} - {env_var: "PROXY_DOMAIN", env_value: "code-server.my.domain", desc: "If this optional variable is set, this domain will be proxied for subdomain proxying. See [Documentation](https://github.com/coder/code-server/blob/main/docs/guide.md#using-a-subdomain)"}
- {env_var: "DEFAULT_WORKSPACE", env_value: "/config/workspace", desc: "If this optional variable is set, code-server will open this directory by default"} - {env_var: "DEFAULT_WORKSPACE", env_value: "/config/workspace", desc: "If this optional variable is set, code-server will open this directory by default"}
- {env_var: "PWA_APPNAME", env_value: "code-server", desc: "If this optional variable is set, the PWA app will the specified name."}
readonly_supported: true
readonly_message: |
* `/tmp` must be mounted to tmpfs
* `sudo` will not be available
nonroot_supported: true
nonroot_message: |
* `sudo` will not be available
# application setup block # application setup block
app_setup_block_enabled: true app_setup_block_enabled: true
app_setup_block: | app_setup_block: |
@ -81,14 +73,12 @@ init_diagram: |
init-crontab-config -> init-config-end init-crontab-config -> init-config-end
init-config -> init-crontab-config init-config -> init-crontab-config
init-mods-end -> init-custom-files init-mods-end -> init-custom-files
init-adduser -> init-device-perms
base -> init-envfile base -> init-envfile
base -> init-migrations base -> init-migrations
init-config-end -> init-mods init-config-end -> init-mods
init-mods-package-install -> init-mods-end init-mods-package-install -> init-mods-end
init-mods -> init-mods-package-install init-mods -> init-mods-package-install
init-adduser -> init-os-end init-adduser -> init-os-end
init-device-perms -> init-os-end
init-envfile -> init-os-end init-envfile -> init-os-end
init-custom-files -> init-services init-custom-files -> init-services
init-services -> svc-code-server init-services -> svc-code-server
@ -102,8 +92,6 @@ init_diagram: |
"code-server:latest" <- Base Images "code-server:latest" <- Base Images
# changelog # changelog
changelogs: changelogs:
- {date: "10.08.25:", desc: "Let server listen on both ipv4 and ipv6."}
- {date: "03.06.25:", desc: "Allow setting PWA name using env var `PWA_APPNAME`."}
- {date: "13.10.24:", desc: "Only chown config folder when change to ownership or new install is detected."} - {date: "13.10.24:", desc: "Only chown config folder when change to ownership or new install is detected."}
- {date: "09.10.24:", desc: "Manage permissions in /config/.ssh according to file type"} - {date: "09.10.24:", desc: "Manage permissions in /config/.ssh according to file type"}
- {date: "19.08.24:", desc: "Rebase to Ubuntu Noble."} - {date: "19.08.24:", desc: "Rebase to Ubuntu Noble."}

View File

@ -3,7 +3,6 @@
mkdir -p /config/{extensions,data,workspace,.ssh} mkdir -p /config/{extensions,data,workspace,.ssh}
if [[ -z ${LSIO_NON_ROOT_USER} ]] && [[ -z ${LSIO_READ_ONLY_FS} ]]; then
if [[ -n "${SUDO_PASSWORD}" ]] || [[ -n "${SUDO_PASSWORD_HASH}" ]]; then if [[ -n "${SUDO_PASSWORD}" ]] || [[ -n "${SUDO_PASSWORD_HASH}" ]]; then
echo "setting up sudo access" echo "setting up sudo access"
if ! grep -q 'abc' /etc/sudoers; then if ! grep -q 'abc' /etc/sudoers; then
@ -18,7 +17,6 @@ if [[ -z ${LSIO_NON_ROOT_USER} ]] && [[ -z ${LSIO_READ_ONLY_FS} ]]; then
echo -e "${SUDO_PASSWORD}\n${SUDO_PASSWORD}" | passwd abc echo -e "${SUDO_PASSWORD}\n${SUDO_PASSWORD}" | passwd abc
fi fi
fi fi
fi
if [[ ! -f /config/.bashrc ]]; then if [[ ! -f /config/.bashrc ]]; then
cp /root/.bashrc /config/.bashrc cp /root/.bashrc /config/.bashrc
@ -28,7 +26,6 @@ if [[ ! -f /config/.profile ]]; then
cp /root/.profile /config/.profile cp /root/.profile /config/.profile
fi fi
if [[ -z ${LSIO_NON_ROOT_USER} ]]; then
# fix permissions (ignore contents of workspace) # fix permissions (ignore contents of workspace)
PUID=${PUID:-911} PUID=${PUID:-911}
if [[ ! "$(stat -c %u /config/.profile)" == "${PUID}" ]]; then if [[ ! "$(stat -c %u /config/.profile)" == "${PUID}" ]]; then
@ -43,4 +40,3 @@ if [[ -z ${LSIO_NON_ROOT_USER} ]]; then
find /config/.ssh/ -type f -exec chmod 600 '{}' \; find /config/.ssh/ -type f -exec chmod 600 '{}' \;
find /config/.ssh/ -type f -iname '*.pub' -exec chmod 644 '{}' \; find /config/.ssh/ -type f -iname '*.pub' -exec chmod 644 '{}' \;
fi fi
fi

View File

@ -14,11 +14,6 @@ else
PROXY_DOMAIN_ARG="--proxy-domain=${PROXY_DOMAIN}" PROXY_DOMAIN_ARG="--proxy-domain=${PROXY_DOMAIN}"
fi fi
if [[ -z ${PWA_APPNAME} ]]; then
PWA_APPNAME="code-server"
fi
if [[ -z ${LSIO_NON_ROOT_USER} ]]; then
exec \ exec \
s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z 127.0.0.1 8443" \ s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z 127.0.0.1 8443" \
s6-setuidgid abc \ s6-setuidgid abc \
@ -28,19 +23,5 @@ if [[ -z ${LSIO_NON_ROOT_USER} ]]; then
--extensions-dir /config/extensions \ --extensions-dir /config/extensions \
--disable-telemetry \ --disable-telemetry \
--auth "${AUTH}" \ --auth "${AUTH}" \
--app-name "${PWA_APPNAME}" \
"${PROXY_DOMAIN_ARG}" \ "${PROXY_DOMAIN_ARG}" \
"${DEFAULT_WORKSPACE:-/config/workspace}" "${DEFAULT_WORKSPACE:-/config/workspace}"
else
exec \
s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z 127.0.0.1 8443" \
/app/code-server/bin/code-server \
--bind-addr "[::]:8443" \
--user-data-dir /config/data \
--extensions-dir /config/extensions \
--disable-telemetry \
--auth "${AUTH}" \
--app-name "${PWA_APPNAME}" \
"${PROXY_DOMAIN_ARG}" \
"${DEFAULT_WORKSPACE:-/config/workspace}"
fi