Compare commits

...

59 Commits

Author SHA1 Message Date
aptalca
7929311233 listen on both ipv4 and ipv6 2024-04-21 10:15:27 -04:00
LinuxServer-CI
eaeab3349e Bot Updating Package Versions 2024-04-20 20:16:51 +00:00
LinuxServer-CI
ff420fc155 Bot Updating Package Versions 2024-04-16 01:38:25 +00:00
LinuxServer-CI
818d5ade66 Bot Updating Package Versions 2024-04-08 21:42:04 +00:00
LinuxServer-CI
1d46aa716e Bot Updating Package Versions 2024-04-06 20:24:28 +00:00
LinuxServer-CI
17570939d5 Bot Updating Package Versions 2024-03-30 20:17:17 +00:00
LinuxServer-CI
0c5f0c4a76 Bot Updating Package Versions 2024-03-23 20:19:31 +00:00
LinuxServer-CI
73811e24e4 Bot Updating Package Versions 2024-03-14 20:44:29 +00:00
LinuxServer-CI
309d28852d Bot Updating Templated Files 2024-03-14 20:41:23 +00:00
LinuxServer-CI
67773aa923 Bot Updating Package Versions 2024-03-09 20:15:27 +00:00
LinuxServer-CI
b18e8877ad Bot Updating Package Versions 2024-03-03 23:42:53 +00:00
LinuxServer-CI
48262b8882 Bot Updating Package Versions 2024-03-02 20:16:44 +00:00
LinuxServer-CI
d2a5ef414a Bot Updating Package Versions 2024-02-28 23:41:09 +00:00
LinuxServer-CI
4931dd3b82 Bot Updating Templated Files 2024-02-24 20:16:35 +00:00
LinuxServer-CI
2d7ee3529b Bot Updating Templated Files 2024-02-24 20:14:53 +00:00
LinuxServer-CI
33e0d230c9 Bot Updating Package Versions 2024-02-09 22:41:54 +00:00
LinuxServer-CI
7d835391a9 Bot Updating Package Versions 2024-02-05 18:41:52 +00:00
LinuxServer-CI
3ce9c4e675 Bot Updating Package Versions 2024-02-03 20:19:18 +00:00
LinuxServer-CI
d6dbb82493 Bot Updating Package Versions 2024-01-27 20:16:19 +00:00
LinuxServer-CI
94e137e87f Bot Updating Package Versions 2024-01-22 17:41:54 +00:00
LinuxServer-CI
a9df15473e Bot Updating Package Versions 2024-01-20 20:18:35 +00:00
LinuxServer-CI
24919c86a2 Bot Updating Package Versions 2024-01-13 20:31:25 +00:00
LinuxServer-CI
a121f3a64a Bot Updating Templated Files 2024-01-13 20:19:04 +00:00
LinuxServer-CI
33e35e89b8 Bot Updating Templated Files 2024-01-13 20:16:52 +00:00
LinuxServer-CI
5e7e1b2bda Bot Updating Package Versions 2024-01-06 20:17:06 +00:00
LinuxServer-CI
4bfbc226a4 Bot Updating Package Versions 2023-12-21 22:40:42 +00:00
LinuxServer-CI
9c28be3eb4 Bot Updating Package Versions 2023-12-16 20:17:57 +00:00
LinuxServer-CI
dac826bc40 Bot Updating Package Versions 2023-12-09 20:17:51 +00:00
LinuxServer-CI
7e16b5c8be Bot Updating Package Versions 2023-11-29 21:41:18 +00:00
LinuxServer-CI
14c35108cf Bot Updating Package Versions 2023-11-25 20:17:26 +00:00
LinuxServer-CI
4dcc194840 Bot Updating Package Versions 2023-11-18 14:43:20 +00:00
LinuxServer-CI
71158be6b3 Bot Updating Templated Files 2023-11-18 14:39:32 +00:00
LinuxServer-CI
02a7bea1b8 Bot Updating Package Versions 2023-11-03 20:27:08 +00:00
LinuxServer-CI
b15152a498 Bot Updating Package Versions 2023-10-28 20:16:23 +00:00
LinuxServer-CI
18889ecd4b Bot Updating Package Versions 2023-10-20 20:40:27 +00:00
LinuxServer-CI
44345df372 Bot Updating Package Versions 2023-10-14 20:16:34 +00:00
LinuxServer-CI
64a00a9744 Bot Updating Package Versions 2023-10-07 20:21:16 +00:00
LinuxServer-CI
31e2f77d49 Bot Updating Templated Files 2023-10-07 20:17:17 +00:00
LinuxServer-CI
b03eace8f8 Bot Updating Templated Files 2023-10-07 20:14:40 +00:00
LinuxServer-CI
7912c721a5 Bot Updating Package Versions 2023-09-29 23:40:28 +00:00
LinuxServer-CI
bccc62b708 Bot Updating Package Versions 2023-09-23 02:05:40 +00:00
LinuxServer-CI
25396b74d1 Bot Updating Package Versions 2023-09-16 20:16:07 +00:00
LinuxServer-CI
cf4c57cd1e Bot Updating Package Versions 2023-08-26 20:15:10 +00:00
LinuxServer-CI
6d2cacc4c8 Bot Updating Package Versions 2023-08-19 20:16:29 +00:00
LinuxServer-CI
75e67677ed Bot Updating Package Versions 2023-08-05 20:15:11 +00:00
LinuxServer-CI
246e06bac6 Bot Updating Package Versions 2023-07-31 19:40:18 +00:00
LinuxServer-CI
55c3ecff1c Bot Updating Package Versions 2023-07-29 01:46:52 +00:00
LinuxServer-CI
7345ac6141 Bot Updating Package Versions 2023-07-21 23:41:37 +00:00
LinuxServer-CI
3de6bee22b Bot Updating Package Versions 2023-07-01 20:23:54 +00:00
LinuxServer-CI
0ae77a3f39 Bot Updating Templated Files 2023-07-01 20:20:04 +00:00
LinuxServer-CI
b47e34134c Bot Updating Templated Files 2023-07-01 20:18:40 +00:00
LinuxServer-CI
2f0fa20be3 Bot Updating Templated Files 2023-07-01 20:16:21 +00:00
LinuxServer-CI
e785f33bc1 Bot Updating Package Versions 2023-06-26 18:44:39 +00:00
LinuxServer-CI
d35b78301a Bot Updating Package Versions 2023-06-16 21:41:41 +00:00
LinuxServer-CI
624f63de3b Bot Updating Package Versions 2023-06-10 20:18:41 +00:00
LinuxServer-CI
8d3dd4a1b3 Bot Updating Package Versions 2023-06-03 20:16:54 +00:00
LinuxServer-CI
549e2e0208 Bot Updating Templated Files 2023-05-27 20:15:05 +00:00
LinuxServer-CI
8bc5a8902e Bot Updating Package Versions 2023-05-19 21:40:38 +00:00
LinuxServer-CI
1119a25e4c Bot Updating Package Versions 2023-05-06 20:15:55 +00:00
11 changed files with 874 additions and 1041 deletions

View File

@@ -53,7 +53,6 @@ body:
options: options:
- x86-64 - x86-64
- arm64 - arm64
- armhf
validations: validations:
required: true required: true
- type: textarea - type: textarea
@@ -68,10 +67,10 @@ body:
- type: textarea - type: textarea
attributes: attributes:
description: | 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 label: Container logs
placeholder: | placeholder: |
Output of `docker logs linuxserver.io` Output of `docker logs code-server`
render: bash render: bash
validations: validations:
required: true required: true

View File

@@ -7,7 +7,7 @@ jobs:
external-trigger-master: external-trigger-master:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
- name: External Trigger - name: External Trigger
if: github.ref == 'refs/heads/master' if: github.ref == 'refs/heads/master'

View File

@@ -9,7 +9,7 @@ jobs:
external-trigger-scheduler: external-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
with: with:
fetch-depth: '0' fetch-depth: '0'

View File

@@ -7,7 +7,7 @@ jobs:
package-trigger-master: package-trigger-master:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
- name: Package Trigger - name: Package Trigger
if: github.ref == 'refs/heads/master' if: github.ref == 'refs/heads/master'

View File

@@ -9,7 +9,7 @@ jobs:
package-trigger-scheduler: package-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
with: with:
fetch-depth: '0' fetch-depth: '0'

View File

@@ -1,48 +0,0 @@
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm32v7-jammy
# set version label
ARG BUILD_DATE
ARG VERSION
ARG CODE_RELEASE
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="aptalca"
# environment settings
ARG DEBIAN_FRONTEND="noninteractive"
ENV HOME="/config"
RUN \
echo "**** install runtime dependencies ****" && \
apt-get update && \
apt-get install -y \
git \
jq \
libatomic1 \
nano \
net-tools \
netcat \
sudo && \
echo "**** install code-server ****" && \
if [ -z ${CODE_RELEASE+x} ]; then \
CODE_RELEASE=$(curl -sX GET https://api.github.com/repos/coder/code-server/releases/latest \
| awk '/tag_name/{print $4;exit}' FS='[""]' | sed 's|^v||'); \
fi && \
mkdir -p /app/code-server && \
curl -o \
/tmp/code-server.tar.gz -L \
"https://github.com/coder/code-server/releases/download/v${CODE_RELEASE}/code-server-${CODE_RELEASE}-linux-armv7l.tar.gz" && \
tar xf /tmp/code-server.tar.gz -C \
/app/code-server --strip-components=1 && \
echo "**** clean up ****" && \
apt-get clean && \
rm -rf \
/config/* \
/tmp/* \
/var/lib/apt/lists/* \
/var/tmp/*
# add local files
COPY /root /
# ports and volumes
EXPOSE 8443

424
Jenkinsfile vendored
View File

@@ -16,7 +16,7 @@ pipeline {
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab') GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0') GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
GITLAB_NAMESPACE=credentials('gitlab-namespace-id') GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
SCARF_TOKEN=credentials('scarf_api_key') DOCKERHUB_TOKEN=credentials('docker-hub-ci-pat')
CONTAINER_NAME = 'code-server' CONTAINER_NAME = 'code-server'
BUILD_VERSION_ARG = 'CODE_RELEASE' BUILD_VERSION_ARG = 'CODE_RELEASE'
LS_USER = 'linuxserver' LS_USER = 'linuxserver'
@@ -39,7 +39,12 @@ pipeline {
// Setup all the basic environment variables needed for the build // Setup all the basic environment variables needed for the build
stage("Set ENV Variables base"){ stage("Set ENV Variables base"){
steps{ steps{
sh '''docker pull quay.io/skopeo/stable:v1 || : ''' sh '''#! /bin/bash
containers=$(docker ps -aq)
if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
docker system prune -af --volumes || : '''
script{ script{
env.EXIT_STATUS = '' env.EXIT_STATUS = ''
env.LS_RELEASE = sh( env.LS_RELEASE = sh(
@@ -54,11 +59,16 @@ pipeline {
env.COMMIT_SHA = sh( env.COMMIT_SHA = sh(
script: '''git rev-parse HEAD''', script: '''git rev-parse HEAD''',
returnStdout: true).trim() returnStdout: true).trim()
env.GH_DEFAULT_BRANCH = sh(
script: '''git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||' ''',
returnStdout: true).trim()
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT
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 ./.github/workflows/package_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 ./.github/workflows/package_trigger.yml'
} }
sh '''#! /bin/bash
echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" '''
script{ script{
env.LS_RELEASE_NUMBER = sh( env.LS_RELEASE_NUMBER = sh(
script: '''echo ${LS_RELEASE} |sed 's/^.*-ls//g' ''', script: '''echo ${LS_RELEASE} |sed 's/^.*-ls//g' ''',
@@ -116,7 +126,7 @@ pipeline {
steps{ steps{
script{ script{
env.EXT_RELEASE_CLEAN = sh( env.EXT_RELEASE_CLEAN = sh(
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''', script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/ ]//g' ''',
returnStdout: true).trim() returnStdout: true).trim()
def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)/ def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)/
@@ -134,7 +144,7 @@ pipeline {
} }
if (env.SEMVER != null) { if (env.SEMVER != null) {
if (BRANCH_NAME != "master" && BRANCH_NAME != "main") { if (BRANCH_NAME != "${env.GH_DEFAULT_BRANCH}") {
env.SEMVER = "${env.SEMVER}-${BRANCH_NAME}" env.SEMVER = "${env.SEMVER}-${BRANCH_NAME}"
} }
println("SEMVER: ${env.SEMVER}") println("SEMVER: ${env.SEMVER}")
@@ -158,7 +168,7 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} }
@@ -181,7 +191,7 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} }
@@ -204,12 +214,12 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
} }
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
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/'
@@ -235,9 +245,11 @@ 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.17 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\ ghcr.io/linuxserver/baseimage-alpine:3.19 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
apk add --no-cache py3-pip && \ apk add --no-cache python3 && \
pip install s3cmd && \ 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" || :''' s3cmd put --no-preserve --acl-public -m text/xml /mnt/shellcheck-result.xml s3://ci-tests.linuxserver.io/${IMAGE}/${META_TAG}/shellcheck-result.xml" || :'''
} }
} }
@@ -256,8 +268,15 @@ pipeline {
set -e set -e
TEMPDIR=$(mktemp -d) TEMPDIR=$(mktemp -d)
docker pull ghcr.io/linuxserver/jenkins-builder:latest docker pull ghcr.io/linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest # Cloned repo paths for templating:
# Stage 1 - Jenkinsfile update # ${TEMPDIR}/docker-${CONTAINER_NAME}: Cloned branch master of ${LS_USER}/${LS_REPO} for running the jenkins builder on
# ${TEMPDIR}/repo/${LS_REPO}: Cloned branch master of ${LS_USER}/${LS_REPO} for commiting various templated file changes and pushing back to Github
# ${TEMPDIR}/docs/docker-documentation: Cloned docs repo for pushing docs updates to Github
# ${TEMPDIR}/unraid/docker-templates: Cloned docker-templates repo to check for logos
# ${TEMPDIR}/unraid/templates: Cloned templates repo for commiting unraid template changes and pushing back to Github
git clone --branch master --depth 1 https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/docker-${CONTAINER_NAME}
docker run --rm -v ${TEMPDIR}/docker-${CONTAINER_NAME}:/tmp -e LOCAL=true ghcr.io/linuxserver/jenkins-builder:latest
echo "Starting Stage 1 - Jenkinsfile update"
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
mkdir -p ${TEMPDIR}/repo mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
@@ -266,16 +285,17 @@ pipeline {
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
git add Jenkinsfile git add Jenkinsfile
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all 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 "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating Jenkinsfile" echo "Updating Jenkinsfile and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR} rm -Rf ${TEMPDIR}
exit 0 exit 0
else else
echo "Jenkinsfile is up to date." echo "Jenkinsfile is up to date."
fi fi
# Stage 2 - Delete old templates echo "Starting Stage 2 - Delete old templates"
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml" OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml Dockerfile.armhf"
for i in ${OLD_TEMPLATES}; do for i in ${OLD_TEMPLATES}; do
if [[ -f "${i}" ]]; then if [[ -f "${i}" ]]; then
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}" TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
@@ -290,15 +310,16 @@ pipeline {
git rm "${i}" git rm "${i}"
done done
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all 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 "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Deleting old and deprecated templates" echo "Deleting old/deprecated templates and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR} rm -Rf ${TEMPDIR}
exit 0 exit 0
else else
echo "No templates to delete" echo "No templates to delete"
fi fi
# Stage 3 - Update templates echo "Starting Stage 3 - Update templates"
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
cd ${TEMPDIR}/docker-${CONTAINER_NAME} cd ${TEMPDIR}/docker-${CONTAINER_NAME}
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
@@ -311,35 +332,55 @@ pipeline {
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || : cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
cd ${TEMPDIR}/repo/${LS_REPO}/ cd ${TEMPDIR}/repo/${LS_REPO}/
if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
echo ".jenkins-external" >> .gitignore echo ".jenkins-external" >> .gitignore
git add .gitignore git add .gitignore
fi fi
git add ${TEMPLATED_FILES} git add readme-vars.yml ${TEMPLATED_FILES}
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all 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 "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating templates and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR}
exit 0
else else
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "No templates to update"
fi fi
mkdir -p ${TEMPDIR}/gitbook echo "Starting Stage 4 - External repo updates: Docs, Unraid Template and Readme Sync to Docker Hub"
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/gitbook/docker-documentation mkdir -p ${TEMPDIR}/docs
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/ 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
cd ${TEMPDIR}/gitbook/docker-documentation/ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/docs/docker-documentation/docs/images/
git add images/docker-${CONTAINER_NAME}.md 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
echo "Updating docs repo"
git commit -m 'Bot Updating Documentation' git commit -m 'Bot Updating Documentation'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all 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})
else
echo "Docs update not needed, skipping"
fi fi
mkdir -p ${TEMPDIR}/unraid mkdir -p ${TEMPDIR}/unraid
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/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 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 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 fi
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then
echo "Updating Unraid template"
cd ${TEMPDIR}/unraid/templates/ cd ${TEMPDIR}/unraid/templates/
GH_TEMPLATES_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
echo "Image is on the ignore list, marking Unraid template as deprecated" 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/ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
@@ -351,7 +392,42 @@ pipeline {
git add unraid/${CONTAINER_NAME}.xml git add unraid/${CONTAINER_NAME}.xml
git commit -m 'Bot Updating Unraid Template' git commit -m 'Bot Updating Unraid Template'
fi fi
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git --all 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})
else
echo "No updates to Unraid template needed, skipping"
fi
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]]; then
if [[ $(cat ${TEMPDIR}/docker-${CONTAINER_NAME}/README.md | wc -m) -gt 25000 ]]; then
echo "Readme is longer than 25,000 characters. Syncing the lite version to Docker Hub"
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
if curl -s https://hub.docker.com/v2/namespaces/${DOCKERHUB_IMAGE%%/*}/repositories/${DOCKERHUB_IMAGE##*/}/tags | jq -r '.message' | grep -q 404; then
echo "Docker Hub endpoint doesn't exist. Creating endpoint first."
DH_TOKEN=$(curl -d '{"username":"linuxserverci", "password":"'${DOCKERHUB_TOKEN}'"}' -H "Content-Type: application/json" -X POST https://hub.docker.com/v2/users/login | jq -r '.token')
curl -s \
-H "Authorization: JWT ${DH_TOKEN}" \
-H "Content-Type: application/json" \
-X POST \
-d '{"name":"'${DOCKERHUB_IMAGE##*/}'", "namespace":"'${DOCKERHUB_IMAGE%%/*}'"}' \
https://hub.docker.com/v2/repositories/ || :
fi
DH_TOKEN=$(curl -d '{"username":"linuxserverci", "password":"'${DOCKERHUB_TOKEN}'"}' -H "Content-Type: application/json" -X POST https://hub.docker.com/v2/users/login | jq -r '.token')
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 fi
rm -Rf ${TEMPDIR}''' rm -Rf ${TEMPDIR}'''
script{ script{
@@ -407,44 +483,16 @@ pipeline {
} }
steps{ steps{
sh '''curl -H "Content-Type: application/json" -H "Private-Token: ${GITLAB_TOKEN}" -X POST https://gitlab.com/api/v4/projects \ sh '''curl -H "Content-Type: application/json" -H "Private-Token: ${GITLAB_TOKEN}" -X POST https://gitlab.com/api/v4/projects \
-d '{"namespace_id":'${GITLAB_NAMESPACE}',\ -d '{"namespace_id":'${GITLAB_NAMESPACE}',\
"name":"'${LS_REPO}'", "name":"'${LS_REPO}'",
"mirror":true,\ "mirror":true,\
"import_url":"https://github.com/linuxserver/'${LS_REPO}'.git",\ "import_url":"https://github.com/linuxserver/'${LS_REPO}'.git",\
"issues_access_level":"disabled",\ "issues_access_level":"disabled",\
"merge_requests_access_level":"disabled",\ "merge_requests_access_level":"disabled",\
"repository_access_level":"enabled",\ "repository_access_level":"enabled",\
"visibility":"public"}' ''' "visibility":"public"}' '''
} sh '''curl -H "Private-Token: ${GITLAB_TOKEN}" -X PUT "https://gitlab.com/api/v4/projects/Linuxserver.io%2F${LS_REPO}" \
} -d "mirror=true&import_url=https://github.com/linuxserver/${LS_REPO}.git" '''
/* #######################
Scarf.sh package registry
####################### */
// Add package to Scarf.sh and set permissions
stage("Scarf.sh package registry"){
when {
branch "master"
environment name: 'EXIT_STATUS', value: ''
}
steps{
sh '''#! /bin/bash
set -e
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/code-server") | .uuid')
if [ -z "${PACKAGE_UUID}" ]; then
echo "Adding package to Scarf.sh"
curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \
-H "Authorization: Bearer ${SCARF_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"name":"linuxserver/code-server",\
"shortDescription":"example description",\
"libraryType":"docker",\
"website":"https://github.com/linuxserver/docker-code-server",\
"backendUrl":"https://ghcr.io/linuxserver/code-server",\
"publicUrl":"https://lscr.io/linuxserver/code-server"}' || :
else
echo "Package already exists on Scarf.sh"
fi
'''
} }
} }
/* ############### /* ###############
@@ -509,41 +557,6 @@ pipeline {
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
} }
} }
stage('Build ARMHF') {
agent {
label 'ARMHF'
}
steps {
echo "Running on node: ${NODE_NAME}"
echo 'Logging into Github'
sh '''#! /bin/bash
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
'''
sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.armhf"
sh "docker buildx build \
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
--label \"org.opencontainers.image.authors=linuxserver.io\" \
--label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-code-server/packages\" \
--label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-code-server\" \
--label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-code-server\" \
--label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \
--label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \
--label \"org.opencontainers.image.vendor=linuxserver.io\" \
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
--label \"org.opencontainers.image.title=Code-server\" \
--label \"org.opencontainers.image.description=[Code-server](https://coder.com) is VS Code running on a remote server, accessible through the browser. - Code on your Chromebook, tablet, and laptop with a consistent dev environment. - If you have a Windows or Mac workstation, more easily develop for Linux. - Take advantage of large cloud servers to speed up tests, compilations, downloads, and more. - Preserve battery life when you're on the go. - All intensive computation runs on your server. - You're no longer running excess instances of Chrome.\" \
--no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} --platform=linux/arm/v7 \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
retry(5) {
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
}
sh '''docker rmi \
${IMAGE}:arm32v7-${META_TAG} \
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
}
}
stage('Build ARM64') { stage('Build ARM64') {
agent { agent {
label 'ARM64' label 'ARM64'
@@ -574,9 +587,12 @@ pipeline {
retry(5) { retry(5) {
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}" sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
} }
sh '''docker rmi \ sh '''#! /bin/bash
${IMAGE}:arm64v8-${META_TAG} \ containers=$(docker ps -aq)
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :''' if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
docker system prune -af --volumes || : '''
} }
} }
} }
@@ -613,7 +629,8 @@ pipeline {
wait wait
git add package_versions.txt git add package_versions.txt
git commit -m 'Bot Updating Package Versions' git commit -m 'Bot Updating Package Versions'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all 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/packages-${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
echo "Package tag updated, stopping build process" echo "Package tag updated, stopping build process"
else else
@@ -637,13 +654,6 @@ pipeline {
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
sh '''#! /bin/bash
echo "Packages were updated. Cleaning up the image and exiting."
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
docker rmi ${IMAGE}:amd64-${META_TAG}
else
docker rmi ${IMAGE}:${META_TAG}
fi'''
script{ script{
env.EXIT_STATUS = 'ABORTED' env.EXIT_STATUS = 'ABORTED'
} }
@@ -661,13 +671,6 @@ pipeline {
} }
} }
steps { steps {
sh '''#! /bin/bash
echo "There are no package updates. Cleaning up the image and exiting."
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
docker rmi ${IMAGE}:amd64-${META_TAG}
else
docker rmi ${IMAGE}:${META_TAG}
fi'''
script{ script{
env.EXIT_STATUS = 'ABORTED' env.EXIT_STATUS = 'ABORTED'
} }
@@ -695,9 +698,7 @@ pipeline {
set -e set -e
docker pull ghcr.io/linuxserver/ci:latest docker pull ghcr.io/linuxserver/ci:latest
if [ "${MULTIARCH}" == "true" ]; then if [ "${MULTIARCH}" == "true" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
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}
fi fi
docker run --rm \ docker run --rm \
@@ -732,12 +733,6 @@ pipeline {
} }
steps { steps {
withCredentials([ withCredentials([
[
$class: 'UsernamePasswordMultiBinding',
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
usernameVariable: 'DOCKERUSER',
passwordVariable: 'DOCKERPASS'
],
[ [
$class: 'UsernamePasswordMultiBinding', $class: 'UsernamePasswordMultiBinding',
credentialsId: 'Quay.io-Robot', credentialsId: 'Quay.io-Robot',
@@ -748,7 +743,7 @@ pipeline {
retry(5) { retry(5) {
sh '''#! /bin/bash sh '''#! /bin/bash
set -e 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 $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
@@ -768,17 +763,6 @@ pipeline {
done done
''' '''
} }
sh '''#! /bin/bash
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
docker rmi \
${DELETEIMAGE}:${META_TAG} \
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
${DELETEIMAGE}:latest || :
if [ -n "${SEMVER}" ]; then
docker rmi ${DELETEIMAGE}:${SEMVER} || :
fi
done
'''
} }
} }
} }
@@ -790,12 +774,6 @@ pipeline {
} }
steps { steps {
withCredentials([ withCredentials([
[
$class: 'UsernamePasswordMultiBinding',
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
usernameVariable: 'DOCKERUSER',
passwordVariable: 'DOCKERPASS'
],
[ [
$class: 'UsernamePasswordMultiBinding', $class: 'UsernamePasswordMultiBinding',
credentialsId: 'Quay.io-Robot', credentialsId: 'Quay.io-Robot',
@@ -806,13 +784,11 @@ pipeline {
retry(5) { retry(5) {
sh '''#! /bin/bash sh '''#! /bin/bash
set -e 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 $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 [ "${CI}" == "false" ]; then if [ "${CI}" == "false" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
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}
fi fi
@@ -820,49 +796,47 @@ pipeline {
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-latest
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER} docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
fi fi
docker push ${MANIFESTIMAGE}:amd64-${META_TAG} docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
docker push ${MANIFESTIMAGE}:amd64-latest docker push ${MANIFESTIMAGE}:amd64-latest
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
docker push ${MANIFESTIMAGE}:arm32v7-latest
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker push ${MANIFESTIMAGE}:arm64v8-latest docker push ${MANIFESTIMAGE}:arm64v8-latest
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker push ${MANIFESTIMAGE}:amd64-${SEMVER} docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
fi fi
docker manifest push --purge ${MANIFESTIMAGE}:latest || : docker manifest push --purge ${MANIFESTIMAGE}:latest || :
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8 docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || : docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8 docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || : docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || :
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8 docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || : docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8 docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
fi fi
token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token')
digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-latest")
if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || :
docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest
fi
docker manifest push --purge ${MANIFESTIMAGE}:latest docker manifest push --purge ${MANIFESTIMAGE}:latest
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
@@ -872,29 +846,6 @@ pipeline {
done done
''' '''
} }
sh '''#! /bin/bash
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
docker rmi \
${DELETEIMAGE}:amd64-${META_TAG} \
${DELETEIMAGE}:amd64-latest \
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
${DELETEIMAGE}:arm32v7-${META_TAG} \
${DELETEIMAGE}:arm32v7-latest \
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
${DELETEIMAGE}:arm64v8-${META_TAG} \
${DELETEIMAGE}:arm64v8-latest \
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
if [ -n "${SEMVER}" ]; then
docker rmi \
${DELETEIMAGE}:amd64-${SEMVER} \
${DELETEIMAGE}:arm32v7-${SEMVER} \
${DELETEIMAGE}:arm64v8-${SEMVER} || :
fi
done
docker rmi \
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :
'''
} }
} }
} }
@@ -928,44 +879,45 @@ pipeline {
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @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'''
} }
} }
// Use helper container to sync the current README on master to the dockerhub endpoint // Add protection to the release branch
stage('Sync-README') { stage('Github-Release-Branch-Protection') {
when { when {
branch "master"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
withCredentials([ echo "Setting up protection for release branch master"
[ sh '''#! /bin/bash
$class: 'UsernamePasswordMultiBinding', curl -H "Authorization: token ${GITHUB_TOKEN}" -X PUT https://api.github.com/repos/${LS_USER}/${LS_REPO}/branches/master/protection \
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207', -d $(jq -c . << EOF
usernameVariable: 'DOCKERUSER', {
passwordVariable: 'DOCKERPASS' "required_status_checks": null,
] "enforce_admins": false,
]) { "required_pull_request_reviews": {
sh '''#! /bin/bash "dismiss_stale_reviews": false,
set -e "require_code_owner_reviews": false,
TEMPDIR=$(mktemp -d) "require_last_push_approval": false,
docker pull ghcr.io/linuxserver/jenkins-builder:latest "required_approving_review_count": 1
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH="${BRANCH_NAME}" -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest },
docker pull ghcr.io/linuxserver/readme-sync "restrictions": null,
docker run --rm=true \ "required_linear_history": false,
-e DOCKERHUB_USERNAME=$DOCKERUSER \ "allow_force_pushes": false,
-e DOCKERHUB_PASSWORD=$DOCKERPASS \ "allow_deletions": false,
-e GIT_REPOSITORY=${LS_USER}/${LS_REPO} \ "block_creations": false,
-e DOCKER_REPOSITORY=${IMAGE} \ "required_conversation_resolution": true,
-e GIT_BRANCH=master \ "lock_branch": false,
-v ${TEMPDIR}/docker-${CONTAINER_NAME}:/mnt \ "allow_fork_syncing": false,
ghcr.io/linuxserver/readme-sync bash -c 'node sync' "required_signatures": false
rm -Rf ${TEMPDIR} ''' }
} EOF
) '''
} }
} }
// If this is a Pull request send the CI link as a comment on it // If this is a Pull request send the CI link as a comment on it
stage('Pull Request Comment') { stage('Pull Request Comment') {
when { when {
not {environment name: 'CHANGE_ID', value: ''} not {environment name: 'CHANGE_ID', value: ''}
environment name: 'CI', value: 'true'
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
@@ -1019,16 +971,24 @@ pipeline {
echo "$escaped_table" echo "$escaped_table"
} }
# Retrieve JSON data from URL if [[ "${CI}" = "true" ]]; then
data=$(get_json "$CI_JSON_URL") # Retrieve JSON data from URL
# Create table from JSON data data=$(get_json "$CI_JSON_URL")
table=$(build_table "$data") # Create table from JSON data
echo -e "$table" table=$(build_table "$data")
echo -e "$table"
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \ curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \ -H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \ "https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
-d "{\\"body\\": \\"I am a bot, here are the test results for this PR: \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"''' -d "{\\"body\\": \\"I am a bot, here are the test results for this PR: \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"
else
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
-d "{\\"body\\": \\"I am a bot, here is the pushed image/manifest for this PR: \\n\\n\\`${GITHUBIMAGE}:${META_TAG}\\`\\"}"
fi
'''
} }
} }
@@ -1055,6 +1015,14 @@ pipeline {
} }
} }
cleanup { cleanup {
sh '''#! /bin/bash
echo "Performing docker system prune!!"
containers=$(docker ps -aq)
if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
docker system prune -af --volumes || :
'''
cleanWs() cleanWs()
} }
} }

143
README.md
View File

@@ -1,6 +1,5 @@
<!-- DO NOT EDIT THIS FILE MANUALLY --> <!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read the https://github.com/linuxserver/docker-code-server/blob/master/.github/CONTRIBUTING.md --> <!-- Please read https://github.com/linuxserver/docker-code-server/blob/master/.github/CONTRIBUTING.md -->
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io) [![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io)
[![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!")
@@ -52,7 +51,7 @@ Find us at:
## Supported Architectures ## Supported Architectures
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/). We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
Simply pulling `lscr.io/linuxserver/code-server:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags. Simply pulling `lscr.io/linuxserver/code-server:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
@@ -62,7 +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 | | arm32v7-\<version tag\> | | armhf | | |
## Application Setup ## Application Setup
@@ -81,13 +80,12 @@ How to create the [hashed password](https://github.com/cdr/code-server/blob/mast
## Usage ## Usage
Here are some example snippets to help you get started creating a container. To help you get started creating a container from this image you can either use docker-compose or the docker cli.
### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose)) ### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
```yaml ```yaml
--- ---
version: "2.1"
services: services:
code-server: code-server:
image: lscr.io/linuxserver/code-server:latest image: lscr.io/linuxserver/code-server:latest
@@ -127,12 +125,11 @@ docker run -d \
-v /path/to/appdata/config:/config \ -v /path/to/appdata/config:/config \
--restart unless-stopped \ --restart unless-stopped \
lscr.io/linuxserver/code-server:latest lscr.io/linuxserver/code-server:latest
``` ```
## Parameters ## Parameters
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container. Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
| Parameter | Function | | Parameter | Function |
| :----: | --- | | :----: | --- |
@@ -155,10 +152,10 @@ You can set any environment variable from a file by using a special prepend `FIL
As an example: As an example:
```bash ```bash
-e FILE__PASSWORD=/run/secrets/mysecretpassword -e FILE__MYVAR=/run/secrets/mysecretvariable
``` ```
Will set the environment variable `PASSWORD` based on the contents of the `/run/secrets/mysecretpassword` file. Will set the environment variable `MYVAR` based on the contents of the `/run/secrets/mysecretvariable` file.
## Umask for running applications ## Umask for running applications
@@ -167,15 +164,20 @@ Keep in mind umask is not chmod it subtracts from permissions based on it's valu
## User / Group Identifiers ## User / Group Identifiers
When using volumes (`-v` flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`. When using volumes (`-v` flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
In this instance `PUID=1000` and `PGID=1000`, to find yours use `id user` as below: In this instance `PUID=1000` and `PGID=1000`, to find yours use `id your_user` as below:
```bash ```bash
$ id username id your_user
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) ```
Example output:
```text
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
``` ```
## Docker Mods ## Docker Mods
@@ -186,53 +188,100 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
## Support Info ## Support Info
* Shell access whilst the container is running: `docker exec -it code-server /bin/bash` * Shell access whilst the container is running:
* To monitor the logs of the container in realtime: `docker logs -f code-server`
* container version number ```bash
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' code-server` docker exec -it code-server /bin/bash
* image version number ```
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/code-server:latest`
* To monitor the logs of the container in realtime:
```bash
docker logs -f code-server
```
* Container version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' code-server
```
* Image version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/code-server:latest
```
## Updating Info ## Updating Info
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image. Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
Below are the instructions for updating containers: Below are the instructions for updating containers:
### Via Docker Compose ### Via Docker Compose
* Update all images: `docker-compose pull` * Update images:
* or update a single image: `docker-compose pull code-server` * All images:
* Let compose update all containers as necessary: `docker-compose up -d`
* or update a single container: `docker-compose up -d code-server` ```bash
* You can also remove the old dangling images: `docker image prune` docker-compose pull
```
* Single image:
```bash
docker-compose pull code-server
```
* Update containers:
* All containers:
```bash
docker-compose up -d
```
* Single container:
```bash
docker-compose up -d code-server
```
* You can also remove the old dangling images:
```bash
docker image prune
```
### Via Docker Run ### Via Docker Run
* Update the image: `docker pull lscr.io/linuxserver/code-server:latest` * Update the image:
* Stop the running container: `docker stop code-server`
* Delete the container: `docker rm code-server` ```bash
docker pull lscr.io/linuxserver/code-server:latest
```
* Stop the running container:
```bash
docker stop code-server
```
* Delete the container:
```bash
docker rm code-server
```
* Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved) * Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
* You can also remove the old dangling images: `docker image prune` * You can also remove the old dangling images:
### Via Watchtower auto-updater (only use if you don't remember the original parameters) ```bash
docker image prune
* Pull the latest image at its tag and replace it with the same env variables in one run: ```
```bash
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once code-server
```
* You can also remove the old dangling images: `docker image prune`
**Note:** We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using [Docker Compose](https://docs.linuxserver.io/general/docker-compose).
### Image Update Notifications - Diun (Docker Image Update Notifier) ### Image Update Notifications - Diun (Docker Image Update Notifier)
* We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported. **tip**: We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
## Building locally ## Building locally
@@ -257,6 +306,8 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions ## Versions
* **21.04.23:** - Let server listen on both ipv4 and ipv6.
* **01.07.23:** - Deprecate armhf. As announced [here](https://www.linuxserver.io/blog/a-farewell-to-arm-hf)
* **05.10.22:** - Install recommended deps to maintain parity with the older images. * **05.10.22:** - Install recommended deps to maintain parity with the older images.
* **29.09.22:** - Rebase to jammy, switch to s6v3. Fix chown logic to skip `/config/workspace` contents. * **29.09.22:** - Rebase to jammy, switch to s6v3. Fix chown logic to skip `/config/workspace` contents.
* **20.02.22:** - Install using the official tarballs. * **20.02.22:** - Install using the official tarballs.

View File

@@ -1,99 +1,75 @@
NAME VERSION TYPE NAME VERSION TYPE
1to2 1.0.0 npm @babel/runtime 7.23.2 npm
@babel/runtime 7.20.7 npm @coder/logger 3.0.1 npm
@coder/logger 3.0.0 npm @mapbox/node-pre-gyp 1.0.11 npm
@google-cloud/common 3.10.0 npm @microsoft/1ds-core-js 3.2.13 npm
@google-cloud/logging 9.9.0 npm @microsoft/1ds-post-js 3.2.13 npm
@google-cloud/paginator 3.0.7 npm @microsoft/applicationinsights-core-js 2.8.15 npm
@google-cloud/projectify 2.1.1 npm @microsoft/applicationinsights-shims 2.0.2 npm
@google-cloud/promisify 2.0.4 npm @microsoft/dynamicproto-js 1.1.9 npm
@grpc/grpc-js 1.6.12 npm
@grpc/proto-loader 0.6.13 npm
@grpc/proto-loader 0.7.6 npm
@mapbox/node-pre-gyp 1.0.10 npm
@microsoft/1ds-core-js 3.2.3 npm
@microsoft/1ds-post-js 3.2.3 npm
@microsoft/applicationinsights-core-js 2.8.4 npm
@microsoft/applicationinsights-shims 2.0.1 npm
@microsoft/dynamicproto-js 1.1.6 npm
@parcel/watcher 2.1.0 npm @parcel/watcher 2.1.0 npm
@phc/format 1.0.0 npm @phc/format 1.0.0 npm
@protobufjs/aspromise 1.1.2 npm @tootallnate/once 3.0.0 npm
@protobufjs/base64 1.1.2 npm @tootallnate/quickjs-emscripten 0.23.0 npm
@protobufjs/codegen 2.0.4 npm
@protobufjs/eventemitter 1.1.0 npm
@protobufjs/fetch 1.1.0 npm
@protobufjs/float 1.0.2 npm
@protobufjs/inquire 1.1.0 npm
@protobufjs/path 1.1.2 npm
@protobufjs/pool 1.1.0 npm
@protobufjs/utf8 1.1.0 npm
@tootallnate/once 1.1.2 npm
@tootallnate/once 2.0.0 npm
@types/long 4.0.2 npm
@types/node 16.18.18 npm
@vscode/iconv-lite-umd 0.7.0 npm @vscode/iconv-lite-umd 0.7.0 npm
@vscode/ripgrep 1.15.0 npm @vscode/proxy-agent 0.19.1 npm
@vscode/ripgrep 1.15.9 npm
@vscode/spdlog 0.15.0 npm
@vscode/vscode-languagedetection 1.0.21 npm @vscode/vscode-languagedetection 1.0.21 npm
@vscode/windows-process-tree 0.6.0 npm
@vscode/windows-registry 1.1.0 npm
@xterm/addon-canvas 0.7.0-beta.12 npm
@xterm/addon-image 0.8.0-beta.12 npm
@xterm/addon-search 0.15.0-beta.12 npm
@xterm/addon-serialize 0.13.0-beta.12 npm
@xterm/addon-unicode11 0.8.0-beta.12 npm
@xterm/addon-webgl 0.18.0-beta.12 npm
@xterm/headless 5.5.0-beta.12 npm
@xterm/xterm 5.5.0-beta.12 npm
abbrev 1.1.1 npm abbrev 1.1.1 npm
abort-controller 3.0.0 npm accepts 1.3.8 npm
accepts 1.3.7 npm
acorn 8.8.2 npm
acorn-walk 8.2.0 npm
adduser 3.118ubuntu5 deb adduser 3.118ubuntu5 deb
agent-base 4.2.0 npm
agent-base 4.3.0 npm
agent-base 6.0.2 npm agent-base 6.0.2 npm
ansi-regex 2.1.1 npm agent-base 7.1.0 npm (+1 duplicate)
ansi-regex 5.0.1 npm ansi-regex 5.0.1 npm
ansi-styles 4.3.0 npm
aproba 1.2.0 npm
aproba 2.0.0 npm aproba 2.0.0 npm
apt 2.4.9 deb apt 2.4.12 deb
apt-utils 2.4.9 deb apt-utils 2.4.12 deb
are-we-there-yet 1.1.7 npm
are-we-there-yet 2.0.0 npm are-we-there-yet 2.0.0 npm
argon2 0.30.3 npm argon2 0.31.1 npm
argparse 2.0.1 npm argparse 2.0.1 npm
array-flatten 2.1.1 npm array-flatten 2.1.1 npm
arrify 2.0.1 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 12ubuntu4.3 deb base-files 12ubuntu4.6 deb
base-passwd 3.5.52build1 deb base-passwd 3.5.52build1 deb
base64-js 1.5.1 npm base64-js 1.5.1 npm
bash 5.1-6ubuntu1 deb bash 5.1-6ubuntu1.1 deb
bash 5.1.16 binary
basic-ftp 5.0.3 npm
bat 1.0.0 npm bat 1.0.0 npm
beep-boop 1.2.3 npm beep-boop 1.2.3 npm
bignumber.js 9.1.1 npm
bindings 1.5.0 npm bindings 1.5.0 npm
bl 4.1.0 npm bl 4.1.0 npm
body-parser 1.19.0 npm body-parser 1.19.0 npm
brace-expansion 1.1.11 npm brace-expansion 1.1.11 npm
braces 3.0.2 npm braces 3.0.2 npm
bsdutils 1:2.37.2-4ubuntu3 deb bsdutils 1:2.37.2-4ubuntu3.4 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-equal-constant-time 1.0.1 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.0.0 npm bytes 3.0.0 npm
bytes 3.1.0 npm bytes 3.1.0 npm
bytes 3.1.1 npm ca-certificates 20230311ubuntu0.22.04.1 deb
ca-certificates 20211016ubuntu0.22.04.1 deb
call-bind 1.0.2 npm
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
cliui 7.0.4 npm
clojure 1.0.0 npm clojure 1.0.0 npm
code-point-at 1.1.0 npm code-server 4.23.1 npm
code-server 4.12.0 npm
coffeescript 1.0.0 npm coffeescript 1.0.0 npm
color-convert 2.0.1 npm
color-name 1.1.4 npm
color-support 1.1.3 npm color-support 1.1.3 npm
compressible 2.0.18 npm compressible 2.0.18 npm
compression 1.7.4 npm compression 1.7.4 npm
@@ -101,102 +77,80 @@ concat-map 0.0.1
configuration-editing 1.0.0 npm configuration-editing 1.0.0 npm
console-control-strings 1.1.0 npm console-control-strings 1.1.0 npm
content-disposition 0.5.3 npm content-disposition 0.5.3 npm
content-type 1.0.4 npm content-type 1.0.5 npm
cookie 0.4.0 npm cookie 0.4.0 npm (+1 duplicate)
cookie-parser 1.4.5 npm cookie 0.4.1 npm
cookie-parser 1.4.6 npm
cookie-signature 1.0.6 npm cookie-signature 1.0.6 npm
core-util-is 1.0.2 npm coreutils 8.32-4.1ubuntu1.2 deb
core-util-is 1.0.3 npm
coreutils 8.32-4.1ubuntu1 deb
cpp 1.0.0 npm cpp 1.0.0 npm
cron 3.0pl1-137ubuntu3 deb
crypt 0.0.2 npm crypt 0.0.2 npm
csharp 1.0.0 npm csharp 1.0.0 npm
css 1.0.0 npm css 1.0.0 npm
css-language-features 1.0.0 npm css-language-features 1.0.0 npm
curl 7.81.0-1ubuntu1.10 deb curl 7.81.0-1ubuntu1.16 deb
dart 1.0.0 npm dart 1.0.0 npm
dash 0.5.11+git20210903+057cd650a4ed-3build1 deb dash 0.5.11+git20210903+057cd650a4ed-3build1 deb
data-uri-to-buffer 3.0.1 npm data-uri-to-buffer 5.0.1 npm
debconf 1.5.79ubuntu1 deb debconf 1.5.79ubuntu1 deb
debianutils 5.5-1ubuntu2 deb debianutils 5.5-1ubuntu2 deb
debug 2.6.9 npm debug 2.6.9 npm (+3 duplicates)
debug 3.1.0 npm debug 3.1.0 npm (+1 duplicate)
debug 4.1.1 npm debug 4.3.4 npm (+1 duplicate)
debug 4.3.1 npm
debug 4.3.4 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
deep-is 0.1.4 npm degenerator 5.0.1 npm
degenerator 3.0.1 npm
delegates 1.0.0 npm delegates 1.0.0 npm
depd 1.1.2 npm depd 1.1.2 npm
destroy 1.0.4 npm destroy 1.0.4 npm
detect-libc 2.0.1 npm detect-libc 2.0.1 npm
detect-libc 2.0.2 npm
diff 1.0.0 npm diff 1.0.0 npm
diffutils 1:3.8-0ubuntu2 deb diffutils 1:3.8-0ubuntu2 deb
dirmngr 2.2.27-3ubuntu2.1 deb dirmngr 2.2.27-3ubuntu2.1 deb
docker 1.0.0 npm docker 1.0.0 npm
dot-prop 6.0.1 npm dpkg 1.21.1ubuntu2.3 deb
dpkg 1.21.1ubuntu2.1 deb
duplexify 4.1.2 npm
e2fsprogs 1.46.5-2ubuntu1.1 deb e2fsprogs 1.46.5-2ubuntu1.1 deb
ecdsa-sig-formatter 1.0.11 npm
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 1.0.2 npm encodeurl 1.0.2 npm
end-of-stream 1.4.4 npm end-of-stream 1.4.4 npm
ent 2.2.0 npm
env-paths 2.2.1 npm env-paths 2.2.1 npm
es6-promise 4.2.4 npm es6-promisify 7.0.0 npm
es6-promisify 5.0.0 npm
es6-promisify 6.1.1 npm
escalade 3.1.1 npm
escape-html 1.0.3 npm escape-html 1.0.3 npm
escodegen 1.14.3 npm escodegen 2.1.0 npm
esprima 4.0.1 npm esprima 4.0.1 npm
estraverse 4.3.0 npm estraverse 5.3.0 npm
esutils 2.0.3 npm esutils 2.0.3 npm
etag 1.8.1 npm etag 1.8.1 npm
event-target-shim 5.0.1 npm
eventemitter3 4.0.7 npm eventemitter3 4.0.7 npm
eventid 2.0.1 npm
expand-template 2.0.3 npm expand-template 2.0.3 npm
express 5.0.0-alpha.8 npm express 5.0.0-alpha.8 npm
extend 3.0.2 npm
extension-editing 1.0.0 npm extension-editing 1.0.0 npm
fast-levenshtein 2.0.6 npm
fast-text-encoding 1.0.6 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
file-uri-to-path 2.0.0 npm
fill-range 7.0.1 npm fill-range 7.0.1 npm
finalhandler 1.1.2 npm finalhandler 1.1.2 npm
findutils 4.8.0-1ubuntu3 deb findutils 4.8.0-1ubuntu3 deb
follow-redirects 1.14.8 npm follow-redirects 1.15.6 npm
forwarded 0.1.2 npm forwarded 0.2.0 npm
fresh 0.5.2 npm fresh 0.5.2 npm
fs-constants 1.0.0 npm fs-constants 1.0.0 npm
fs-extra 8.1.0 npm fs-extra 8.1.0 npm
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
ftp 0.3.10 npm
function-bind 1.1.1 npm
gauge 2.7.4 npm
gauge 3.0.2 npm gauge 3.0.2 npm
gaxios 4.3.3 npm gcc-12-base 12.3.0-1ubuntu1~22.04 deb
gcc-12-base 12.1.0-2ubuntu1~22.04 deb get-uri 6.0.1 npm
gcp-metadata 4.3.1 npm
get-caller-file 2.0.5 npm
get-intrinsic 1.1.1 npm
get-uri 3.0.2 npm
git 1.0.0 npm git 1.0.0 npm
git 1:2.34.1-1ubuntu1.8 deb git 1:2.34.1-1ubuntu1.10 deb
git-base 1.0.0 npm git-base 1.0.0 npm
git-man 1:2.34.1-1ubuntu1.8 deb git-man 1:2.34.1-1ubuntu1.10 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
@@ -205,9 +159,6 @@ gnupg 2.2.27-3ubuntu2.1
gnupg-l10n 2.2.27-3ubuntu2.1 deb gnupg-l10n 2.2.27-3ubuntu2.1 deb
gnupg-utils 2.2.27-3ubuntu2.1 deb gnupg-utils 2.2.27-3ubuntu2.1 deb
go 1.0.0 npm go 1.0.0 npm
google-auth-library 7.14.1 npm
google-gax 2.30.5 npm
google-p12-pem 3.1.4 npm
gpg 2.2.27-3ubuntu2.1 deb gpg 2.2.27-3ubuntu2.1 deb
gpg-agent 2.2.27-3ubuntu2.1 deb gpg-agent 2.2.27-3ubuntu2.1 deb
gpg-wks-client 2.2.27-3ubuntu2.1 deb gpg-wks-client 2.2.27-3ubuntu2.1 deb
@@ -215,16 +166,13 @@ gpg-wks-server 2.2.27-3ubuntu2.1
gpgconf 2.2.27-3ubuntu2.1 deb gpgconf 2.2.27-3ubuntu2.1 deb
gpgsm 2.2.27-3ubuntu2.1 deb gpgsm 2.2.27-3ubuntu2.1 deb
gpgv 2.2.27-3ubuntu2.1 deb gpgv 2.2.27-3ubuntu2.1 deb
graceful-fs 4.2.8 npm graceful-fs 4.2.11 npm (+1 duplicate)
grep 3.7-1build1 deb grep 3.7-1build1 deb
groovy 1.0.0 npm groovy 1.0.0 npm
grunt 1.0.0 npm grunt 1.0.0 npm
gtoken 5.3.2 npm
gulp 1.0.0 npm gulp 1.0.0 npm
gzip 1.10-4ubuntu4.1 deb gzip 1.10-4ubuntu4.1 deb
handlebars 1.0.0 npm handlebars 1.0.0 npm
has 1.0.3 npm
has-symbols 1.0.2 npm
has-unicode 2.0.1 npm has-unicode 2.0.1 npm
hlsl 1.0.0 npm hlsl 1.0.0 npm
hostname 3.23ubuntu2 deb hostname 3.23ubuntu2 deb
@@ -232,125 +180,115 @@ html 1.0.0
html-language-features 1.0.0 npm html-language-features 1.0.0 npm
http-errors 1.7.2 npm http-errors 1.7.2 npm
http-errors 1.7.3 npm http-errors 1.7.3 npm
http-errors 1.8.1 npm
http-proxy 1.18.1 npm http-proxy 1.18.1 npm
http-proxy-agent 2.1.0 npm http-proxy-agent 7.0.0 npm
http-proxy-agent 4.0.1 npm http-proxy-agent 7.0.2 npm
http-proxy-agent 5.0.0 npm
httpolyglot 0.1.2 npm httpolyglot 0.1.2 npm
https-proxy-agent 2.2.4 npm https-proxy-agent 5.0.1 npm
https-proxy-agent 5.0.0 npm https-proxy-agent 7.0.2 npm
i18next 22.4.6 npm https-proxy-agent 7.0.4 npm
i18next 23.10.1 npm
iconv-lite 0.4.24 npm iconv-lite 0.4.24 npm
ieee754 1.2.1 npm ieee754 1.2.1 npm
inflight 1.0.6 npm inflight 1.0.6 npm
inherits 2.0.3 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.0.0 npm
ini 1.3.8 npm ini 1.3.8 npm
init-system-helpers 1.62 deb init-system-helpers 1.62 deb
ip 1.1.5 npm ip 1.1.9 npm
ip 2.0.1 npm (+1 duplicate)
ipaddr.js 1.9.1 npm ipaddr.js 1.9.1 npm
ipynb 1.0.0 npm ipynb 1.0.0 npm
is-buffer 1.1.6 npm is-buffer 1.1.6 npm
is-extglob 2.1.1 npm is-extglob 2.1.1 npm
is-fullwidth-code-point 1.0.0 npm
is-fullwidth-code-point 3.0.0 npm is-fullwidth-code-point 3.0.0 npm
is-glob 4.0.3 npm is-glob 4.0.3 npm
is-number 7.0.0 npm is-number 7.0.0 npm
is-obj 2.0.0 npm
is-stream 2.0.1 npm
is-stream-ended 0.1.4 npm
isarray 0.0.1 npm
isarray 1.0.0 npm
isexe 2.0.0 npm isexe 2.0.0 npm
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.6-2.1ubuntu3 deb jq 1.6-2.1ubuntu3 deb
js-debug 1.77.2 npm js-debug 1.88.0 npm
js-debug-companion 1.0.18 npm js-debug-companion 1.1.2 npm
js-yaml 4.1.0 npm js-yaml 4.1.0 npm
jschardet 3.0.0 npm jschardet 3.0.0 npm
json 1.0.0 npm json 1.0.0 npm
json-bigint 1.0.0 npm
json-language-features 1.0.0 npm json-language-features 1.0.0 npm
jsonfile 4.0.0 npm jsonfile 4.0.0 npm
julia 1.0.0 npm julia 1.0.0 npm
just-performance 4.3.0 npm just-performance 4.3.0 npm
jwa 2.0.0 npm kerberos 2.0.1 npm
jws 4.0.0 npm
keytar 7.9.0 npm
latex 1.0.0 npm latex 1.0.0 npm
less 1.0.0 npm less 1.0.0 npm
less 590-1ubuntu0.22.04.1 deb less 590-1ubuntu0.22.04.2 deb
levn 0.3.0 npm
libacl1 2.3.1-1 deb libacl1 2.3.1-1 deb
libapt-pkg6.0 2.4.9 deb libapt-pkg6.0 2.4.12 deb
libassuan0 2.5.5-1build1 deb libassuan0 2.5.5-1build1 deb
libatomic1 12.1.0-2ubuntu1~22.04 deb libatomic1 12.3.0-1ubuntu1~22.04 deb
libattr1 1:2.5.1-1build1 deb libattr1 1:2.5.1-1build1 deb
libaudit-common 1:3.0.7-1build1 deb libaudit-common 1:3.0.7-1build1 deb
libaudit1 1:3.0.7-1build1 deb libaudit1 1:3.0.7-1build1 deb
libblkid1 2.37.2-4ubuntu3 deb libblkid1 2.37.2-4ubuntu3.4 deb
libbrotli1 1.0.9-2build6 deb libbrotli1 1.0.9-2build6 deb
libbsd0 0.11.5-1 deb libbsd0 0.11.5-1 deb
libbz2-1.0 1.0.8-5build1 deb libbz2-1.0 1.0.8-5build1 deb
libc-bin 2.35-0ubuntu3.1 deb libc-bin 2.35-0ubuntu3.6 deb
libc6 2.35-0ubuntu3.1 deb libc6 2.35-0ubuntu3.6 deb
libcap-ng0 0.7.9-2.2build3 deb libcap-ng0 0.7.9-2.2build3 deb
libcap2 1:2.44-1build3 deb libcap2 1:2.44-1ubuntu0.22.04.1 deb
libcbor0.8 0.8.0-2ubuntu1 deb libcbor0.8 0.8.0-2ubuntu1 deb
libcom-err2 1.46.5-2ubuntu1.1 deb libcom-err2 1.46.5-2ubuntu1.1 deb
libcrypt1 1:4.4.27-1 deb libcrypt1 1:4.4.27-1 deb
libcurl3-gnutls 7.81.0-1ubuntu1.10 deb libcurl3-gnutls 7.81.0-1ubuntu1.16 deb
libcurl4 7.81.0-1ubuntu1.10 deb libcurl4 7.81.0-1ubuntu1.16 deb
libdb5.3 5.3.28+dfsg1-0.8ubuntu3 deb libdb5.3 5.3.28+dfsg1-0.8ubuntu3 deb
libdebconfclient0 0.261ubuntu1 deb libdebconfclient0 0.261ubuntu1 deb
libedit2 3.1-20210910-1build1 deb libedit2 3.1-20210910-1build1 deb
liberror-perl 0.17029-1 deb liberror-perl 0.17029-1 deb
libexpat1 2.4.7-1ubuntu0.2 deb libexpat1 2.4.7-1ubuntu0.3 deb
libext2fs2 1.46.5-2ubuntu1.1 deb libext2fs2 1.46.5-2ubuntu1.1 deb
libffi8 3.4.2-4 deb libffi8 3.4.2-4 deb
libfido2-1 1.10.0-1 deb libfido2-1 1.10.0-1 deb
libgcc-s1 12.1.0-2ubuntu1~22.04 deb libgcc-s1 12.3.0-1ubuntu1~22.04 deb
libgcrypt20 1.9.4-3ubuntu3 deb libgcrypt20 1.9.4-3ubuntu3 deb
libgdbm-compat4 1.23-1 deb libgdbm-compat4 1.23-1 deb
libgdbm6 1.23-1 deb libgdbm6 1.23-1 deb
libgmp10 2:6.2.1+dfsg-3ubuntu1 deb libgmp10 2:6.2.1+dfsg-3ubuntu1 deb
libgnutls30 3.7.3-4ubuntu1.2 deb libgnutls30 3.7.3-4ubuntu1.5 deb
libgpg-error0 1.43-3 deb libgpg-error0 1.43-3 deb
libgssapi-krb5-2 1.19.2-2ubuntu0.1 deb libgssapi-krb5-2 1.19.2-2ubuntu0.3 deb
libhogweed6 3.7.3-1build2 deb libhogweed6 3.7.3-1build2 deb
libidn2-0 2.3.2-2build1 deb libidn2-0 2.3.2-2build1 deb
libjq1 1.6-2.1ubuntu3 deb libjq1 1.6-2.1ubuntu3 deb
libk5crypto3 1.19.2-2ubuntu0.1 deb libk5crypto3 1.19.2-2ubuntu0.3 deb
libkeyutils1 1.6.1-2ubuntu3 deb libkeyutils1 1.6.1-2ubuntu3 deb
libkrb5-3 1.19.2-2ubuntu0.1 deb libkrb5-3 1.19.2-2ubuntu0.3 deb
libkrb5support0 1.19.2-2ubuntu0.1 deb libkrb5support0 1.19.2-2ubuntu0.3 deb
libksba8 1.6.0-2ubuntu0.2 deb libksba8 1.6.0-2ubuntu0.2 deb
libldap-2.5-0 2.5.14+dfsg-0ubuntu0.22.04.2 deb libldap-2.5-0 2.5.17+dfsg-0ubuntu0.22.04.1 deb
libldap-common 2.5.14+dfsg-0ubuntu0.22.04.2 deb libldap-common 2.5.17+dfsg-0ubuntu0.22.04.1 deb
liblz4-1 1.9.3-2build2 deb liblz4-1 1.9.3-2build2 deb
liblzma5 5.2.5-2ubuntu1 deb liblzma5 5.2.5-2ubuntu1 deb
libmd0 1.0.4-1build1 deb libmd0 1.0.4-1build1 deb
libmount1 2.37.2-4ubuntu3 deb libmount1 2.37.2-4ubuntu3.4 deb
libncurses6 6.3-2 deb libncurses6 6.3-2ubuntu0.1 deb
libncursesw6 6.3-2 deb libncursesw6 6.3-2ubuntu0.1 deb
libnettle8 3.7.3-1build2 deb libnettle8 3.7.3-1build2 deb
libnghttp2-14 1.43.0-1build3 deb libnghttp2-14 1.43.0-1ubuntu0.1 deb
libnpth0 1.6-3build2 deb libnpth0 1.6-3build2 deb
libnsl2 1.3.0-2build2 deb libnsl2 1.3.0-2build2 deb
libonig5 6.9.7.1-2build1 deb libonig5 6.9.7.1-2build1 deb
libp11-kit0 0.24.0-6build1 deb libp11-kit0 0.24.0-6build1 deb
libpam-modules 1.4.0-11ubuntu2.3 deb libpam-modules 1.4.0-11ubuntu2.4 deb
libpam-modules-bin 1.4.0-11ubuntu2.3 deb libpam-modules-bin 1.4.0-11ubuntu2.4 deb
libpam-runtime 1.4.0-11ubuntu2.3 deb libpam-runtime 1.4.0-11ubuntu2.4 deb
libpam0g 1.4.0-11ubuntu2.3 deb libpam0g 1.4.0-11ubuntu2.4 deb
libpcre2-8-0 10.39-3ubuntu0.1 deb libpcre2-8-0 10.39-3ubuntu0.1 deb
libpcre3 2:8.39-13ubuntu0.22.04.1 deb libpcre3 2:8.39-13ubuntu0.22.04.1 deb
libperl5.34 5.34.0-3ubuntu1.1 deb libperl5.34 5.34.0-3ubuntu1.3 deb
libprocps8 2:3.3.17-6ubuntu2 deb libprocps8 2:3.3.17-6ubuntu2.1 deb
libpsl5 0.21.0-1.2build2 deb libpsl5 0.21.0-1.2build2 deb
libreadline8 8.1.2-1 deb libreadline8 8.1.2-1 deb
librtmp1 2.4+20151223.gitfa8646d.1-2build4 deb librtmp1 2.4+20151223.gitfa8646d.1-2build4 deb
@@ -362,22 +300,22 @@ libselinux1 3.3-1build2
libsemanage-common 3.3-1build2 deb libsemanage-common 3.3-1build2 deb
libsemanage2 3.3-1build2 deb libsemanage2 3.3-1build2 deb
libsepol2 3.3-1build1 deb libsepol2 3.3-1build1 deb
libsmartcols1 2.37.2-4ubuntu3 deb libsmartcols1 2.37.2-4ubuntu3.4 deb
libsqlite3-0 3.37.2-2ubuntu0.1 deb libsqlite3-0 3.37.2-2ubuntu0.3 deb
libss2 1.46.5-2ubuntu1.1 deb libss2 1.46.5-2ubuntu1.1 deb
libssh-4 0.9.6-2build1 deb libssh-4 0.9.6-2ubuntu0.22.04.3 deb
libssl3 3.0.2-0ubuntu1.8 deb libssl3 3.0.2-0ubuntu1.15 deb
libstdc++6 12.1.0-2ubuntu1~22.04 deb libstdc++6 12.3.0-1ubuntu1~22.04 deb
libsystemd0 249.11-0ubuntu3.9 deb libsystemd0 249.11-0ubuntu3.12 deb
libtasn1-6 4.18.0-4build1 deb libtasn1-6 4.18.0-4build1 deb
libtinfo6 6.3-2 deb libtinfo6 6.3-2ubuntu0.1 deb
libtirpc-common 1.3.2-2ubuntu0.1 deb libtirpc-common 1.3.2-2ubuntu0.1 deb
libtirpc3 1.3.2-2ubuntu0.1 deb libtirpc3 1.3.2-2ubuntu0.1 deb
libudev1 249.11-0ubuntu3.9 deb libudev1 249.11-0ubuntu3.12 deb
libunistring2 1.0-1 deb libunistring2 1.0-1 deb
libuuid1 2.37.2-4ubuntu3 deb libuuid1 2.37.2-4ubuntu3.4 deb
libx11-6 2:1.7.5-1 deb libx11-6 2:1.7.5-1ubuntu0.3 deb
libx11-data 2:1.7.5-1 deb libx11-data 2:1.7.5-1ubuntu0.3 deb
libxau6 1:1.0.9-1build5 deb libxau6 1:1.0.9-1build5 deb
libxcb1 1.14-3ubuntu3 deb libxcb1 1.14-3ubuntu3 deb
libxdmcp6 1:1.1.3-0ubuntu5 deb libxdmcp6 1:1.1.3-0ubuntu5 deb
@@ -386,15 +324,12 @@ libxmuu1 2:1.1.3-3
libxxhash0 0.8.1-1 deb libxxhash0 0.8.1-1 deb
libzstd1 1.4.8+dfsg-3build1 deb libzstd1 1.4.8+dfsg-3build1 deb
limiter 2.1.0 npm limiter 2.1.0 npm
locales 2.35-0ubuntu3.1 deb locales 2.35-0ubuntu3.6 deb
lodash.camelcase 4.3.0 npm
log 1.0.0 npm log 1.0.0 npm
login 1:4.8.1-2ubuntu2.1 deb login 1:4.8.1-2ubuntu2.2 deb
logsave 1.46.5-2ubuntu1.1 deb logsave 1.46.5-2ubuntu1.1 deb
long 4.0.0 npm lru-cache 6.0.0 npm (+1 duplicate)
long 5.2.3 npm lru-cache 7.18.3 npm
lru-cache 5.1.1 npm
lru-cache 6.0.0 npm
lsb-base 11.1.0ubuntu4 deb lsb-base 11.1.0ubuntu4 deb
lua 1.0.0 npm lua 1.0.0 npm
make 1.0.0 npm make 1.0.0 npm
@@ -412,173 +347,137 @@ methods 1.1.2
micromatch 4.0.5 npm micromatch 4.0.5 npm
microsoft-authentication 0.0.1 npm microsoft-authentication 0.0.1 npm
mime 1.6.0 npm mime 1.6.0 npm
mime-db 1.47.0 npm mime-db 1.52.0 npm
mime-types 2.1.30 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.6 npm minimist 1.2.6 npm
minipass 3.1.3 npm minipass 3.3.6 npm
minipass 5.0.0 npm
minizlib 2.1.2 npm minizlib 2.1.2 npm
mkdirp 0.5.5 npm mkdirp 1.0.4 npm (+1 duplicate)
mkdirp 1.0.4 npm
mkdirp-classic 0.5.3 npm mkdirp-classic 0.5.3 npm
mount 2.37.2-4ubuntu3 deb mount 2.37.2-4ubuntu3.4 deb
ms 2.0.0 npm ms 2.0.0 npm (+1 duplicate)
ms 2.1.1 npm ms 2.1.1 npm
ms 2.1.2 npm ms 2.1.2 npm (+1 duplicate)
nan 2.15.0 npm
nan 2.17.0 npm
nano 6.2-1 deb nano 6.2-1 deb
napi-build-utils 1.0.2 npm napi-build-utils 1.0.2 npm
native-watchdog 1.4.2 npm native-watchdog 1.4.2 npm
ncurses-base 6.3-2 deb ncurses-base 6.3-2ubuntu0.1 deb
ncurses-bin 6.3-2 deb ncurses-bin 6.3-2ubuntu0.1 deb
negotiator 0.6.2 npm negotiator 0.6.3 npm
net-tools 1.60+git20181103.0eebece-1ubuntu5 deb net-tools 1.60+git20181103.0eebece-1ubuntu5 deb
netbase 6.3 deb netbase 6.3 deb
netcat 1.218-4ubuntu1 deb netcat 1.218-4ubuntu1 deb
netcat-openbsd 1.218-4ubuntu1 deb netcat-openbsd 1.218-4ubuntu1 deb
netmask 2.0.2 npm netmask 2.0.2 npm
node 16.20.0 binary node 18.18.2 binary
node-abi 3.8.0 npm node-abi 3.8.0 npm
node-addon-api 3.2.1 npm node-addon-api 3.2.1 npm
node-addon-api 4.3.0 npm node-addon-api 4.3.0 npm
node-addon-api 5.0.0 npm node-addon-api 7.0.0 npm
node-fetch 2.6.7 npm node-addon-api 7.1.0 npm
node-forge 1.3.1 npm node-fetch 2.7.0 npm
node-forge-flash 0.0.0 npm
node-gyp-build 4.3.0 npm node-gyp-build 4.3.0 npm
node-pty 0.11.0-beta30 npm node-pty 1.1.0-beta11 npm
nopt 5.0.0 npm nopt 5.0.0 npm
npm 1.0.1 npm npm 1.0.1 npm
npmlog 4.1.2 npm
npmlog 5.0.1 npm npmlog 5.0.1 npm
number-is-nan 1.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-hash 3.0.0 npm
object-inspect 1.10.2 npm
objective-c 1.0.0 npm objective-c 1.0.0 npm
on-finished 2.3.0 npm on-finished 2.3.0 npm
on-headers 1.0.2 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.1 deb openssh-client 1:8.9p1-3ubuntu0.7 deb
openssl 3.0.2-0ubuntu1.9 deb openssl 3.0.2-0ubuntu1.15 deb
optionator 0.8.3 npm
os-tmpdir 1.0.2 npm os-tmpdir 1.0.2 npm
pac-proxy-agent 5.0.0 npm pac-proxy-agent 7.0.1 npm
pac-resolver 5.0.0 npm pac-resolver 7.0.0 npm
parseurl 1.3.3 npm parseurl 1.3.3 npm
passwd 1:4.8.1-2ubuntu2.1 deb passwd 1:4.8.1-2ubuntu2.2 deb
patch 2.7.6-7build2 deb patch 2.7.6-7build2 deb
path-is-absolute 1.0.1 npm path-is-absolute 1.0.1 npm
path-to-regexp 0.1.7 npm path-to-regexp 0.1.7 npm
pem 1.14.4 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.34.0-3ubuntu1.1 deb perl 5.34.0-3ubuntu1.3 deb
perl-base 5.34.0-3ubuntu1.1 deb perl-base 5.34.0-3ubuntu1.3 deb
perl-modules-5.34 5.34.0-3ubuntu1.1 deb perl-modules-5.34 5.34.0-3ubuntu1.3 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
pinentry-curses 1.1.1-1build2 deb pinentry-curses 1.1.1-1build2 deb
powershell 1.0.0 npm powershell 1.0.0 npm
prebuild-install 7.0.1 npm prebuild-install 7.1.1 npm
prelude-ls 1.1.2 npm procps 2:3.3.17-6ubuntu2.1 deb
process-nextick-args 2.0.1 npm proxy-addr 2.0.7 npm
procps 2:3.3.17-6ubuntu2 deb proxy-agent 6.4.0 npm
proto3-json-serializer 0.1.9 npm proxy-from-env 1.1.0 npm (+1 duplicate)
protobufjs 6.11.3 npm
protobufjs 7.2.3 npm
proxy-addr 2.0.6 npm
proxy-agent 5.0.0 npm
proxy-from-env 1.1.0 npm
publicsuffix 20211207.1025-1 deb publicsuffix 20211207.1025-1 deb
pug 1.0.0 npm pug 1.0.0 npm
pump 3.0.0 npm pump 3.0.0 npm
pumpify 2.0.1 npm
python 1.0.0 npm python 1.0.0 npm
qs 6.11.0 npm qs 6.9.7 npm
qs 6.7.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 2.4.0 npm raw-body 2.4.0 npm
raw-body 2.4.2 npm
razor 1.0.0 npm razor 1.0.0 npm
rc 1.2.8 npm rc 1.2.8 npm
readable-stream 1.1.14 npm
readable-stream 2.3.7 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.1.2-1 deb readline-common 8.1.2-1 deb
references-view 1.0.0 npm references-view 1.0.0 npm
regenerator-runtime 0.13.11 npm regenerator-runtime 0.14.0 npm
require-directory 2.1.1 npm
requires-port 1.0.0 npm requires-port 1.0.0 npm
restructuredtext 1.0.0 npm restructuredtext 1.0.0 npm
retry-request 4.2.2 npm
rimraf 3.0.2 npm rimraf 3.0.2 npm
rotating-file-stream 3.0.0 npm rotating-file-stream 3.2.1 npm
router 2.0.0-alpha.1 npm router 2.0.0-alpha.1 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.1.2 npm (+2 duplicates)
safe-buffer 5.2.1 npm 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
scss 1.0.0 npm scss 1.0.0 npm
search-result 1.0.0 npm search-result 1.0.0 npm
sed 4.8-1ubuntu2 deb sed 4.8-1ubuntu2 deb
semver 6.3.0 npm semver 6.3.1 npm
semver 7.3.5 npm semver 7.5.4 npm (+1 duplicate)
semver 7.3.8 npm
send 0.17.1 npm send 0.17.1 npm
sensible-utils 0.0.17 deb sensible-utils 0.0.17 deb
serve-static 1.14.1 npm serve-static 1.14.1 npm
set-blocking 2.0.0 npm set-blocking 2.0.0 npm
setprototypeof 1.1.0 npm setprototypeof 1.1.0 npm
setprototypeof 1.1.1 npm setprototypeof 1.1.1 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.0.4 npm
signal-exit 3.0.6 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.1.0 npm smart-buffer 4.2.0 npm (+1 duplicate)
smart-buffer 4.2.0 npm socks 2.7.1 npm (+1 duplicate)
socks 2.6.1 npm socks-proxy-agent 8.0.1 npm
socks-proxy-agent 5.0.0 npm socks-proxy-agent 8.0.2 npm
socks-proxy-agent 5.0.1 npm
source-map 0.6.1 npm source-map 0.6.1 npm
spdlog 0.13.6 npm
split2 4.2.0 npm
sql 1.0.0 npm sql 1.0.0 npm
statuses 1.5.0 npm statuses 1.5.0 npm
stream-events 1.0.5 npm
stream-shift 1.0.1 npm
string-width 1.0.2 npm
string-width 4.2.2 npm
string-width 4.2.3 npm string-width 4.2.3 npm
string_decoder 0.10.31 npm string_decoder 1.3.0 npm (+1 duplicate)
string_decoder 1.1.1 npm
string_decoder 1.3.0 npm
strip-ansi 3.0.1 npm
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
stubs 3.0.0 npm
sudo 1.9.9-1ubuntu2.4 deb sudo 1.9.9-1ubuntu2.4 deb
swift 1.0.0 npm swift 1.0.0 npm
sysvinit-utils 3.01-1ubuntu1 deb sysvinit-utils 3.01-1ubuntu1 deb
tar 1.34+dfsg-1ubuntu0.1.22.04.1 deb tar 1.34+dfsg-1ubuntu0.1.22.04.2 deb
tar 6.1.11 npm tar 6.2.0 npm
tar-fs 2.1.1 npm tar-fs 2.1.1 npm
tar-stream 2.2.0 npm tar-stream 2.2.0 npm
tas-client-umd 0.1.6 npm tas-client-umd 0.1.8 npm
teeny-request 7.2.0 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
theme-kimbie-dark 1.0.0 npm theme-kimbie-dark 1.0.0 npm
@@ -591,64 +490,47 @@ theme-solarized-light 1.0.0
theme-tomorrow-night-blue 1.0.0 npm theme-tomorrow-night-blue 1.0.0 npm
to-regex-range 5.0.1 npm to-regex-range 5.0.1 npm
toidentifier 1.0.0 npm toidentifier 1.0.0 npm
toidentifier 1.0.1 npm
tr46 0.0.3 npm tr46 0.0.3 npm
tslib 2.3.1 npm tslib 2.6.2 npm
tunnel-agent 0.6.0 npm tunnel-agent 0.6.0 npm
type-check 0.3.2 npm tunnel-forwarding 1.0.0 npm
type-is 1.6.18 npm type-is 1.6.18 npm
typescript 1.0.0 npm typescript 1.0.0 npm
typescript 5.0.4 npm typescript 5.4.5 npm
typescript-language-features 1.0.0 npm typescript-language-features 1.0.0 npm
tzdata 2023c-0ubuntu0.22.04.0 deb tzdata 2024a-0ubuntu0.22.04 deb
ubuntu-keyring 2021.03.26 deb ubuntu-keyring 2021.03.26 deb
universalify 0.1.2 npm universalify 0.1.2 npm
unpipe 1.0.0 npm unpipe 1.0.0 npm
usrmerge 25ubuntu2 deb usrmerge 25ubuntu2 deb
util-deprecate 1.0.2 npm util-deprecate 1.0.2 npm (+1 duplicate)
util-linux 2.37.2-4ubuntu3 deb util-linux 2.37.2-4ubuntu3.4 deb
utils-merge 1.0.1 npm utils-merge 1.0.1 npm
uuid 8.3.2 npm
vary 1.1.2 npm vary 1.1.2 npm
vb 1.0.0 npm vb 1.0.0 npm
vm2 3.9.17 npm
vscode-css-languageserver 1.0.0 npm vscode-css-languageserver 1.0.0 npm
vscode-extensions 0.0.1 npm vscode-extensions 0.0.1 npm
vscode-html-languageserver 1.0.0 npm vscode-html-languageserver 1.0.0 npm
vscode-js-profile-table 1.0.3 npm vscode-js-profile-table 1.0.8 npm
vscode-json-languageserver 1.3.4 npm vscode-json-languageserver 1.3.4 npm
vscode-markdown-languageserver 0.3.0-alpha.6 npm vscode-markdown-languageserver 0.4.0 npm
vscode-oniguruma 1.7.0 npm vscode-oniguruma 1.7.0 npm
vscode-proxy-agent 0.12.0 npm
vscode-regexpp 3.1.0 npm vscode-regexpp 3.1.0 npm
vscode-reh 1.77.3 npm vscode-reh 1.88.1 npm
vscode-textmate 9.0.0 npm vscode-textmate 9.0.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
which 2.0.2 npm which 2.0.2 npm
wide-align 1.1.5 npm wide-align 1.1.5 npm
word-wrap 1.2.3 npm wrappy 1.0.2 npm (+1 duplicate)
wrap-ansi 7.0.0 npm ws 8.14.2 npm
wrappy 1.0.2 npm
ws 8.13.0 npm
xauth 1:1.1-1build2 deb xauth 1:1.1-1build2 deb
xdg-basedir 4.0.0 npm xdg-basedir 4.0.0 npm
xml 1.0.0 npm xml 1.0.0 npm
xregexp 2.0.0 npm yallist 4.0.0 npm (+1 duplicate)
xterm 5.2.0-beta.30 npm
xterm-addon-canvas 0.4.0-beta.7 npm
xterm-addon-search 0.11.0 npm
xterm-addon-serialize 0.9.0 npm
xterm-addon-unicode11 0.5.0 npm
xterm-addon-webgl 0.15.0-beta.7 npm
xterm-headless 5.2.0-beta.30 npm
y18n 5.0.8 npm
yallist 3.1.1 npm
yallist 4.0.0 npm
yaml 1.0.0 npm yaml 1.0.0 npm
yargs 16.2.0 npm
yargs-parser 20.2.9 npm
yauzl 2.10.0 npm yauzl 2.10.0 npm
yauzl 3.1.1 npm
yazl 2.4.3 npm yazl 2.4.3 npm
zlib1g 1:1.2.11.dfsg-2ubuntu9.2 deb zlib1g 1:1.2.11.dfsg-2ubuntu9.2 deb

View File

@@ -4,58 +4,39 @@
project_name: code-server project_name: code-server
project_url: "https://coder.com" project_url: "https://coder.com"
project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/code-server-banner.png" project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/code-server-banner.png"
project_blurb: "[{{ project_name|capitalize }}]({{ project_url }}) is VS Code running on a remote server, accessible through the browser. project_blurb: "[{{ project_name|capitalize }}]({{ project_url }}) is VS Code running on a remote server, accessible through the browser.\n- Code on your Chromebook, tablet, and laptop with a consistent dev environment.\n- If you have a Windows or Mac workstation, more easily develop for Linux.\n- Take advantage of large cloud servers to speed up tests, compilations, downloads, and more.\n- Preserve battery life when you're on the go.\n- All intensive computation runs on your server.\n- You're no longer running excess instances of Chrome."
- Code on your Chromebook, tablet, and laptop with a consistent dev environment.
- If you have a Windows or Mac workstation, more easily develop for Linux.
- Take advantage of large cloud servers to speed up tests, compilations, downloads, and more.
- Preserve battery life when you're on the go.
- All intensive computation runs on your server.
- You're no longer running excess instances of Chrome."
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}" project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
# supported architectures # supported architectures
available_architectures: available_architectures:
- { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"} - {arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
- { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"} - {arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
- { arch: "{{ arch_armhf }}", tag: "arm32v7-latest"}
# development version # development version
development_versions: false development_versions: false
development_versions_items: development_versions_items:
- { tag: "latest", desc: "Stable releases" } - {tag: "latest", desc: "Stable releases"}
# container parameters # container parameters
common_param_env_vars_enabled: true common_param_env_vars_enabled: true
param_container_name: "{{ project_name }}" param_container_name: "{{ project_name }}"
param_usage_include_vols: true param_usage_include_vols: true
param_volumes: param_volumes:
- { vol_path: "/config", vol_host_path: "/path/to/appdata/config", desc: "Contains all relevant configuration files." } - {vol_path: "/config", vol_host_path: "/path/to/appdata/config", desc: "Contains all relevant configuration files."}
param_usage_include_ports: true param_usage_include_ports: true
param_ports: param_ports:
- { external_port: "8443", internal_port: "8443", port_desc: "web gui" } - {external_port: "8443", internal_port: "8443", port_desc: "web gui"}
param_usage_include_env: true param_usage_include_env: true
param_env_vars: param_env_vars:
- { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London" } - {env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London"}
# optional container parameters # optional container parameters
opt_param_usage_include_env: true opt_param_usage_include_env: true
opt_param_env_vars: opt_param_env_vars:
- { env_var: "PASSWORD", env_value: "password", desc: "Optional web gui password, if `PASSWORD` or `HASHED_PASSWORD` is not provided, there will be no auth." } - {env_var: "PASSWORD", env_value: "password", desc: "Optional web gui password, if `PASSWORD` or `HASHED_PASSWORD` is not provided, there will be no auth."}
- { env_var: "HASHED_PASSWORD", env_value: "", desc: "Optional web gui password, overrides `PASSWORD`, instructions on how to create it is below." } - {env_var: "HASHED_PASSWORD", env_value: "", desc: "Optional web gui password, overrides `PASSWORD`, instructions on how to create it is below."}
- { env_var: "SUDO_PASSWORD", env_value: "password", desc: "If this optional variable is set, user will have sudo access in the code-server terminal with the specified password." } - {env_var: "SUDO_PASSWORD", env_value: "password", desc: "If this optional variable is set, user will have sudo access in the code-server terminal with the specified password."}
- { 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/cdr/code-server/blob/master/docs/FAQ.md#sub-domains)" } - {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/cdr/code-server/blob/master/docs/FAQ.md#sub-domains)"}
- { 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"}
optional_block_1: false optional_block_1: false
optional_block_1_items: "" optional_block_1_items: ""
# application setup block # application setup block
app_setup_block_enabled: true app_setup_block_enabled: true
app_setup_block: | app_setup_block: |
@@ -71,30 +52,30 @@ app_setup_block: |
### Hashed code-server password ### Hashed code-server password
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).
# changelog # changelog
changelogs: changelogs:
- { date: "05.10.22:", desc: "Install recommended deps to maintain parity with the older images." } - {date: "21.04.23:", desc: "Let server listen on both ipv4 and ipv6."}
- { date: "29.09.22:", desc: "Rebase to jammy, switch to s6v3. Fix chown logic to skip `/config/workspace` contents." } - {date: "01.07.23:", desc: "Deprecate armhf. As announced [here](https://www.linuxserver.io/blog/a-farewell-to-arm-hf)"}
- { date: "20.02.22:", desc: "Install using the official tarballs." } - {date: "05.10.22:", desc: "Install recommended deps to maintain parity with the older images."}
- { date: "29.12.21:", desc: "Add `install-extension` as a helper for mods to install extensions." } - {date: "29.09.22:", desc: "Rebase to jammy, switch to s6v3. Fix chown logic to skip `/config/workspace` contents."}
- { date: "06.12.21:", desc: "Add `DEFAULT_WORKSPACE` env var." } - {date: "20.02.22:", desc: "Install using the official tarballs."}
- { date: "29.11.21:", desc: "Rebase to Ubuntu focal." } - {date: "29.12.21:", desc: "Add `install-extension` as a helper for mods to install extensions."}
- { date: "16.09.21:", desc: "Fix slow `chown` on large workspace (contents of workspace folder no longer chowned)." } - {date: "06.12.21:", desc: "Add `DEFAULT_WORKSPACE` env var."}
- { date: "11.07.21:", desc: "Bump node to 14 to fix builds" } - {date: "29.11.21:", desc: "Rebase to Ubuntu focal."}
- { date: "08.05.21:", desc: "Fix doc link" } - {date: "16.09.21:", desc: "Fix slow `chown` on large workspace (contents of workspace folder no longer chowned)."}
- { date: "04.02.20:", desc: "Allow setting gui password via hash using env var `HASHED_PASSWORD`." } - {date: "11.07.21:", desc: "Bump node to 14 to fix builds"}
- { date: "23.12.20:", desc: "Allow setting sudo password via hash using env var `SUDO_PASSWORD_HASH`." } - {date: "08.05.21:", desc: "Fix doc link"}
- { date: "29.05.20:", desc: "Add --domain-proxy support." } - {date: "04.02.20:", desc: "Allow setting gui password via hash using env var `HASHED_PASSWORD`."}
- { date: "21.05.20:", desc: "Shrink images, install via yarn, fix arm32v7 build." } - {date: "23.12.20:", desc: "Allow setting sudo password via hash using env var `SUDO_PASSWORD_HASH`."}
- { date: "18.05.20:", desc: "Switch to multi-arch images, install via npm." } - {date: "29.05.20:", desc: "Add --domain-proxy support."}
- { date: "29.04.20:", desc: "Update start arguments." } - {date: "21.05.20:", desc: "Shrink images, install via yarn, fix arm32v7 build."}
- { date: "01.04.20:", desc: "Structural changes required for v3." } - {date: "18.05.20:", desc: "Switch to multi-arch images, install via npm."}
- { date: "17.01.20:", desc: "Fix artifact url retrieval from github." } - {date: "29.04.20:", desc: "Update start arguments."}
- { date: "24.10.19:", desc: "Upgrade to v2 builds." } - {date: "01.04.20:", desc: "Structural changes required for v3."}
- { date: "28.09.19:", desc: "Update project logo." } - {date: "17.01.20:", desc: "Fix artifact url retrieval from github."}
- { date: "21.09.19:", desc: "Add development builds/tag." } - {date: "24.10.19:", desc: "Upgrade to v2 builds."}
- { date: "09.07.19:", desc: "Add optional sudo access." } - {date: "28.09.19:", desc: "Update project logo."}
- { date: "01.07.19:", desc: "Add nano." } - {date: "21.09.19:", desc: "Add development builds/tag."}
- { date: "24.06.19:", desc: "Initial Release." } - {date: "09.07.19:", desc: "Add optional sudo access."}
- {date: "01.07.19:", desc: "Add nano."}
- {date: "24.06.19:", desc: "Initial Release."}

View File

@@ -17,7 +17,7 @@ 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 \
/app/code-server/bin/code-server \ /app/code-server/bin/code-server \
--bind-addr 0.0.0.0:8443 \ --bind-addr "[::]:8443" \
--user-data-dir /config/data \ --user-data-dir /config/data \
--extensions-dir /config/extensions \ --extensions-dir /config/extensions \
--disable-telemetry \ --disable-telemetry \