Compare commits
66 Commits
v3.11.1-ls
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
c55fc69b87 | ||
|
60465428f3 | ||
|
5851388cf4 | ||
|
0f0354ded4 | ||
|
d41e959c3f | ||
|
393806fd5e | ||
|
a87b1ef82d | ||
|
fd84ed821b | ||
|
a56e57ea9b | ||
|
302fdc380d | ||
|
20eda117c2 | ||
|
ad0b0c640a | ||
|
9a9f16ab3b | ||
|
67211293ab | ||
|
0b620f304c | ||
|
3c58da4f19 | ||
|
1cece84c50 | ||
|
69cf23d516 | ||
|
21f7dce24d | ||
|
da74981da3 | ||
|
e4e82382a0 | ||
|
e9822d8efc | ||
|
b087315336 | ||
|
29c861029a | ||
|
a1fa7f021e | ||
|
16909c6274 | ||
|
f381942942 | ||
|
b419ebcce8 | ||
|
5724f5ad54 | ||
|
e522af0d30 | ||
|
0a12acb21e | ||
|
237f55187a | ||
|
7163312453 | ||
|
bc847738ca | ||
|
6e319e7d5d | ||
|
e9fe1226be | ||
|
7f87bd95fb | ||
|
eca17040a8 | ||
|
6a7313bb87 | ||
|
992c04ee9f | ||
|
63d982abe2 | ||
|
66754831ab | ||
|
f6bd33a6c7 | ||
|
24e81f2952 | ||
|
fb68e8ec88 | ||
|
42094309d9 | ||
|
65509e965e | ||
|
3e3ed6e20f | ||
|
9b7a3aba52 | ||
|
d418e2444a | ||
|
ad2469e77d | ||
|
580ad0130e | ||
|
aa8b978f9a | ||
|
7fe76cb84f | ||
|
44f7b9fc5f | ||
|
442dac7b54 | ||
|
2ef2329327 | ||
|
e95b42b57a | ||
|
2dee5b2a47 | ||
|
17e0bbf080 | ||
|
a9ea1fe773 | ||
|
323745a36d | ||
|
17af5070b3 | ||
|
d76a6d56cd | ||
|
a1608a1d3c | ||
|
b54982550b |
2
.github/workflows/external_trigger.yml
vendored
2
.github/workflows/external_trigger.yml
vendored
@ -18,7 +18,7 @@ jobs:
|
||||
fi
|
||||
echo "**** External trigger running off of master branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_MASTER\". ****"
|
||||
echo "**** Retrieving external version ****"
|
||||
EXT_RELEASE=$(curl -sX GET https://registry.yarnpkg.com/code-server | jq -r '."dist-tags".latest' | sed 's|^|v|')
|
||||
EXT_RELEASE=$(curl -u ${{ secrets.CR_USER }}:${{ secrets.CR_PAT }} -sX GET https://api.github.com/repos/coder/code-server/releases/latest | jq -r '.tag_name' | sed 's|^v||')
|
||||
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
|
||||
echo "**** Can't retrieve external version, exiting ****"
|
||||
FAILURE_REASON="Can't retrieve external version for code-server branch master"
|
||||
|
48
Dockerfile
48
Dockerfile
@ -1,4 +1,4 @@
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:bionic
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:focal
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
@ -12,53 +12,49 @@ ENV HOME="/config"
|
||||
|
||||
RUN \
|
||||
echo "**** install node repo ****" && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
gnupg && \
|
||||
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
|
||||
echo 'deb https://deb.nodesource.com/node_14.x bionic main' \
|
||||
echo 'deb https://deb.nodesource.com/node_14.x focal main' \
|
||||
> /etc/apt/sources.list.d/nodesource.list && \
|
||||
curl -s https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
||||
echo 'deb https://dl.yarnpkg.com/debian/ stable main' \
|
||||
> /etc/apt/sources.list.d/yarn.list && \
|
||||
echo "**** install build dependencies ****" && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
build-essential \
|
||||
libx11-dev \
|
||||
libxkbfile-dev \
|
||||
libsecret-1-dev \
|
||||
pkg-config && \
|
||||
nodejs && \
|
||||
echo "**** install runtime dependencies ****" && \
|
||||
apt-get install -y \
|
||||
git \
|
||||
jq \
|
||||
libatomic1 \
|
||||
nano \
|
||||
net-tools \
|
||||
nodejs \
|
||||
sudo \
|
||||
yarn && \
|
||||
sudo && \
|
||||
echo "**** install code-server ****" && \
|
||||
if [ -z ${CODE_RELEASE+x} ]; then \
|
||||
CODE_RELEASE=$(curl -sX GET https://registry.yarnpkg.com/code-server \
|
||||
| jq -r '."dist-tags".latest' | sed 's|^|v|'); \
|
||||
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-amd64.tar.gz" && \
|
||||
tar xf /tmp/code-server.tar.gz -C \
|
||||
/app/code-server --strip-components=1 && \
|
||||
echo "**** patch 4.0.2 ****" && \
|
||||
if [ "${CODE_RELEASE}" = "4.0.2" ] && [ "$(uname -m)" != "x86_64" ]; then \
|
||||
cd /app/code-server && \
|
||||
npm i --production @node-rs/argon2; \
|
||||
fi && \
|
||||
CODE_VERSION=$(echo "$CODE_RELEASE" | awk '{print substr($1,2); }') && \
|
||||
yarn config set network-timeout 600000 -g && \
|
||||
yarn --production --verbose --frozen-lockfile global add code-server@"$CODE_VERSION" && \
|
||||
yarn cache clean && \
|
||||
echo "**** clean up ****" && \
|
||||
apt-get purge --auto-remove -y \
|
||||
build-essential \
|
||||
libx11-dev \
|
||||
libxkbfile-dev \
|
||||
libsecret-1-dev \
|
||||
pkg-config && \
|
||||
nodejs && \
|
||||
apt-get clean && \
|
||||
rm -rf \
|
||||
/config/* \
|
||||
/tmp/* \
|
||||
/var/lib/apt/lists/* \
|
||||
/var/tmp/*
|
||||
/var/tmp/* \
|
||||
/etc/apt/sources.list.d/nodesource.list
|
||||
|
||||
# add local files
|
||||
COPY /root /
|
||||
|
@ -1,4 +1,4 @@
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-bionic
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-focal
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
@ -12,53 +12,49 @@ ENV HOME="/config"
|
||||
|
||||
RUN \
|
||||
echo "**** install node repo ****" && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
gnupg && \
|
||||
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
|
||||
echo 'deb https://deb.nodesource.com/node_14.x bionic main' \
|
||||
echo 'deb https://deb.nodesource.com/node_14.x focal main' \
|
||||
> /etc/apt/sources.list.d/nodesource.list && \
|
||||
curl -s https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
||||
echo 'deb https://dl.yarnpkg.com/debian/ stable main' \
|
||||
> /etc/apt/sources.list.d/yarn.list && \
|
||||
echo "**** install build dependencies ****" && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
build-essential \
|
||||
libx11-dev \
|
||||
libxkbfile-dev \
|
||||
libsecret-1-dev \
|
||||
pkg-config && \
|
||||
nodejs && \
|
||||
echo "**** install runtime dependencies ****" && \
|
||||
apt-get install -y \
|
||||
git \
|
||||
jq \
|
||||
libatomic1 \
|
||||
nano \
|
||||
net-tools \
|
||||
nodejs \
|
||||
sudo \
|
||||
yarn && \
|
||||
sudo && \
|
||||
echo "**** install code-server ****" && \
|
||||
if [ -z ${CODE_RELEASE+x} ]; then \
|
||||
CODE_RELEASE=$(curl -sX GET https://registry.yarnpkg.com/code-server \
|
||||
| jq -r '."dist-tags".latest' | sed 's|^|v|'); \
|
||||
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-arm64.tar.gz" && \
|
||||
tar xf /tmp/code-server.tar.gz -C \
|
||||
/app/code-server --strip-components=1 && \
|
||||
echo "**** patch 4.0.2 ****" && \
|
||||
if [ "${CODE_RELEASE}" = "4.0.2" ] && [ "$(uname -m)" != "x86_64" ]; then \
|
||||
cd /app/code-server && \
|
||||
npm i --production @node-rs/argon2; \
|
||||
fi && \
|
||||
CODE_VERSION=$(echo "$CODE_RELEASE" | awk '{print substr($1,2); }') && \
|
||||
yarn config set network-timeout 600000 -g && \
|
||||
yarn --production --verbose --frozen-lockfile global add code-server@"$CODE_VERSION" && \
|
||||
yarn cache clean && \
|
||||
echo "**** clean up ****" && \
|
||||
apt-get purge --auto-remove -y \
|
||||
build-essential \
|
||||
libx11-dev \
|
||||
libxkbfile-dev \
|
||||
libsecret-1-dev \
|
||||
pkg-config && \
|
||||
nodejs && \
|
||||
apt-get clean && \
|
||||
rm -rf \
|
||||
/config/* \
|
||||
/tmp/* \
|
||||
/var/lib/apt/lists/* \
|
||||
/var/tmp/*
|
||||
/var/tmp/* \
|
||||
/etc/apt/sources.list.d/nodesource.list
|
||||
|
||||
# add local files
|
||||
COPY /root /
|
||||
|
@ -1,4 +1,4 @@
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm32v7-bionic
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm32v7-focal
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
@ -12,53 +12,49 @@ ENV HOME="/config"
|
||||
|
||||
RUN \
|
||||
echo "**** install node repo ****" && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
gnupg && \
|
||||
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
|
||||
echo 'deb https://deb.nodesource.com/node_14.x bionic main' \
|
||||
echo 'deb https://deb.nodesource.com/node_14.x focal main' \
|
||||
> /etc/apt/sources.list.d/nodesource.list && \
|
||||
curl -s https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
||||
echo 'deb https://dl.yarnpkg.com/debian/ stable main' \
|
||||
> /etc/apt/sources.list.d/yarn.list && \
|
||||
echo "**** install build dependencies ****" && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
build-essential \
|
||||
libx11-dev \
|
||||
libxkbfile-dev \
|
||||
libsecret-1-dev \
|
||||
pkg-config && \
|
||||
nodejs && \
|
||||
echo "**** install runtime dependencies ****" && \
|
||||
apt-get install -y \
|
||||
git \
|
||||
jq \
|
||||
libatomic1 \
|
||||
nano \
|
||||
net-tools \
|
||||
nodejs \
|
||||
sudo \
|
||||
yarn && \
|
||||
sudo && \
|
||||
echo "**** install code-server ****" && \
|
||||
if [ -z ${CODE_RELEASE+x} ]; then \
|
||||
CODE_RELEASE=$(curl -sX GET https://registry.yarnpkg.com/code-server \
|
||||
| jq -r '."dist-tags".latest' | sed 's|^|v|'); \
|
||||
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 "**** patch 4.0.2 ****" && \
|
||||
if [ "${CODE_RELEASE}" = "4.0.2" ] && [ "$(uname -m)" != "x86_64" ]; then \
|
||||
cd /app/code-server && \
|
||||
npm i --production @node-rs/argon2; \
|
||||
fi && \
|
||||
CODE_VERSION=$(echo "$CODE_RELEASE" | awk '{print substr($1,2); }') && \
|
||||
yarn config set network-timeout 600000 -g && \
|
||||
yarn --production --verbose --frozen-lockfile global add code-server@"$CODE_VERSION" && \
|
||||
yarn cache clean && \
|
||||
echo "**** clean up ****" && \
|
||||
apt-get purge --auto-remove -y \
|
||||
build-essential \
|
||||
libx11-dev \
|
||||
libxkbfile-dev \
|
||||
libsecret-1-dev \
|
||||
pkg-config && \
|
||||
nodejs && \
|
||||
apt-get clean && \
|
||||
rm -rf \
|
||||
/config/* \
|
||||
/tmp/* \
|
||||
/var/lib/apt/lists/* \
|
||||
/var/tmp/*
|
||||
/var/tmp/* \
|
||||
/etc/apt/sources.list.d/nodesource.list
|
||||
|
||||
# add local files
|
||||
COPY /root /
|
||||
|
139
Jenkinsfile
vendored
139
Jenkinsfile
vendored
@ -16,6 +16,7 @@ pipeline {
|
||||
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
|
||||
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
|
||||
GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
|
||||
SCARF_TOKEN=credentials('scarf_api_key')
|
||||
CONTAINER_NAME = 'code-server'
|
||||
BUILD_VERSION_ARG = 'CODE_RELEASE'
|
||||
LS_USER = 'linuxserver'
|
||||
@ -103,7 +104,7 @@ pipeline {
|
||||
steps{
|
||||
script{
|
||||
env.EXT_RELEASE = sh(
|
||||
script: ''' curl -sX GET https://registry.yarnpkg.com/code-server | jq -r '."dist-tags".latest' | sed 's|^|v|' ''',
|
||||
script: ''' curl -sX GET https://api.github.com/repos/coder/code-server/releases/latest | jq -r '.tag_name' | sed 's|^v||' ''',
|
||||
returnStdout: true).trim()
|
||||
env.RELEASE_LINK = 'custom_command'
|
||||
}
|
||||
@ -116,6 +117,30 @@ pipeline {
|
||||
env.EXT_RELEASE_CLEAN = sh(
|
||||
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''',
|
||||
returnStdout: true).trim()
|
||||
|
||||
def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)/
|
||||
if (semver.find()) {
|
||||
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
|
||||
} else {
|
||||
semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)(?:\.(\d+))?(.*)/
|
||||
if (semver.find()) {
|
||||
if (semver[0][3]) {
|
||||
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
|
||||
} else if (!semver[0][3] && !semver[0][4]) {
|
||||
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${(new Date()).format('YYYYMMdd')}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (env.SEMVER != null) {
|
||||
if (BRANCH_NAME != "master" && BRANCH_NAME != "main") {
|
||||
env.SEMVER = "${env.SEMVER}-${BRANCH_NAME}"
|
||||
}
|
||||
println("SEMVER: ${env.SEMVER}")
|
||||
} else {
|
||||
println("No SEMVER detected")
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -130,6 +155,7 @@ pipeline {
|
||||
env.IMAGE = env.DOCKERHUB_IMAGE
|
||||
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/' + 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
|
||||
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
|
||||
} else {
|
||||
@ -152,6 +178,7 @@ pipeline {
|
||||
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
|
||||
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/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
|
||||
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
|
||||
} else {
|
||||
@ -174,6 +201,7 @@ pipeline {
|
||||
env.IMAGE = env.PR_DOCKERHUB_IMAGE
|
||||
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/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
|
||||
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
|
||||
} else {
|
||||
@ -315,9 +343,11 @@ pipeline {
|
||||
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
|
||||
cd ${TEMPDIR}/unraid/templates/
|
||||
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
|
||||
echo "Image is on the ignore list, removing Unraid template"
|
||||
git rm unraid/${CONTAINER_NAME}.xml || :
|
||||
git commit -m 'Bot Removing Deprecated Unraid Template' || :
|
||||
echo "Image is on the ignore list, marking Unraid template as deprecated"
|
||||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
|
||||
git add -u unraid/${CONTAINER_NAME}.xml
|
||||
git mv unraid/${CONTAINER_NAME}.xml unraid/deprecated/${CONTAINER_NAME}.xml || :
|
||||
git commit -m 'Bot Moving Deprecated Unraid Template' || :
|
||||
else
|
||||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
|
||||
git add unraid/${CONTAINER_NAME}.xml
|
||||
@ -369,13 +399,45 @@ pipeline {
|
||||
"visibility":"public"}' '''
|
||||
}
|
||||
}
|
||||
/* #######################
|
||||
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
|
||||
'''
|
||||
}
|
||||
}
|
||||
/* ###############
|
||||
Build Container
|
||||
############### */
|
||||
// Build Docker container for push to LS Repo
|
||||
stage('Build-Single') {
|
||||
when {
|
||||
environment name: 'MULTIARCH', value: 'false'
|
||||
expression {
|
||||
env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
|
||||
}
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
steps {
|
||||
@ -400,7 +462,10 @@ pipeline {
|
||||
// Build MultiArch Docker containers for push to LS Repo
|
||||
stage('Build-Multi') {
|
||||
when {
|
||||
environment name: 'MULTIARCH', value: 'true'
|
||||
allOf {
|
||||
environment name: 'MULTIARCH', value: 'true'
|
||||
expression { params.PACKAGE_CHECK == 'false' }
|
||||
}
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
parallel {
|
||||
@ -505,7 +570,7 @@ pipeline {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
TEMPDIR=$(mktemp -d)
|
||||
if [ "${MULTIARCH}" == "true" ]; then
|
||||
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
|
||||
LOCAL_CONTAINER=${IMAGE}:amd64-${META_TAG}
|
||||
else
|
||||
LOCAL_CONTAINER=${IMAGE}:${META_TAG}
|
||||
@ -566,7 +631,7 @@ pipeline {
|
||||
steps {
|
||||
sh '''#! /bin/bash
|
||||
echo "Packages were updated. Cleaning up the image and exiting."
|
||||
if [ "${MULTIARCH}" == "true" ]; then
|
||||
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
|
||||
docker rmi ${IMAGE}:amd64-${META_TAG}
|
||||
else
|
||||
docker rmi ${IMAGE}:${META_TAG}
|
||||
@ -590,7 +655,7 @@ pipeline {
|
||||
steps {
|
||||
sh '''#! /bin/bash
|
||||
echo "There are no package updates. Cleaning up the image and exiting."
|
||||
if [ "${MULTIARCH}" == "true" ]; then
|
||||
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
|
||||
docker rmi ${IMAGE}:amd64-${META_TAG}
|
||||
else
|
||||
docker rmi ${IMAGE}:${META_TAG}
|
||||
@ -665,6 +730,12 @@ pipeline {
|
||||
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
||||
usernameVariable: 'DOCKERUSER',
|
||||
passwordVariable: 'DOCKERPASS'
|
||||
],
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: 'Quay.io-Robot',
|
||||
usernameVariable: 'QUAYUSER',
|
||||
passwordVariable: 'QUAYPASS'
|
||||
]
|
||||
]) {
|
||||
retry(5) {
|
||||
@ -673,22 +744,32 @@ pipeline {
|
||||
echo $DOCKERPASS | docker login -u $DOCKERUSER --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
|
||||
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
|
||||
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
|
||||
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
|
||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
|
||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
|
||||
fi
|
||||
docker push ${PUSHIMAGE}:latest
|
||||
docker push ${PUSHIMAGE}:${META_TAG}
|
||||
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker push ${PUSHIMAGE}:${SEMVER}
|
||||
fi
|
||||
done
|
||||
'''
|
||||
}
|
||||
sh '''#! /bin/bash
|
||||
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
|
||||
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
|
||||
'''
|
||||
}
|
||||
@ -707,6 +788,12 @@ pipeline {
|
||||
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
||||
usernameVariable: 'DOCKERUSER',
|
||||
passwordVariable: 'DOCKERPASS'
|
||||
],
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: 'Quay.io-Robot',
|
||||
usernameVariable: 'QUAYUSER',
|
||||
passwordVariable: 'QUAYPASS'
|
||||
]
|
||||
]) {
|
||||
retry(5) {
|
||||
@ -715,13 +802,14 @@ pipeline {
|
||||
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
if [ "${CI}" == "false" ]; 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 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}
|
||||
fi
|
||||
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}"; do
|
||||
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
|
||||
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
|
||||
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
||||
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
@ -731,6 +819,11 @@ pipeline {
|
||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
||||
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
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}
|
||||
fi
|
||||
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
@ -740,6 +833,11 @@ pipeline {
|
||||
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
|
||||
docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||
fi
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:latest || :
|
||||
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
|
||||
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
|
||||
@ -752,14 +850,23 @@ pipeline {
|
||||
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${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
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
|
||||
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${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
|
||||
fi
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:latest
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}
|
||||
fi
|
||||
done
|
||||
'''
|
||||
}
|
||||
sh '''#! /bin/bash
|
||||
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
|
||||
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
|
||||
docker rmi \
|
||||
${DELETEIMAGE}:amd64-${META_TAG} \
|
||||
${DELETEIMAGE}:amd64-latest \
|
||||
@ -770,6 +877,12 @@ pipeline {
|
||||
${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} \
|
||||
|
45
README.md
45
README.md
@ -29,10 +29,12 @@ Find us at:
|
||||
|
||||
# [linuxserver/code-server](https://github.com/linuxserver/docker-code-server)
|
||||
|
||||
[](https://scarf.sh/gateway/linuxserver-ci/docker/linuxserver%2Fcode-server)
|
||||
[](https://github.com/linuxserver/docker-code-server)
|
||||
[](https://github.com/linuxserver/docker-code-server/releases)
|
||||
[](https://github.com/linuxserver/docker-code-server/packages)
|
||||
[](https://gitlab.com/linuxserver.io/docker-code-server/container_registry)
|
||||
[](https://quay.io/repository/linuxserver.io/code-server)
|
||||
[](https://hub.docker.com/r/linuxserver/code-server)
|
||||
[](https://hub.docker.com/r/linuxserver/code-server)
|
||||
[](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/master/)
|
||||
@ -50,26 +52,27 @@ Find us at:
|
||||
|
||||
## Supported Architectures
|
||||
|
||||
Our images support multiple architectures such as `x86-64`, `arm64` and `armhf`. 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://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/).
|
||||
|
||||
Simply pulling `ghcr.io/linuxserver/code-server` 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.
|
||||
|
||||
The architectures supported by this image are:
|
||||
|
||||
| Architecture | Tag |
|
||||
| :----: | --- |
|
||||
| x86-64 | amd64-latest |
|
||||
| arm64 | arm64v8-latest |
|
||||
| armhf | arm32v7-latest |
|
||||
| Architecture | Available | Tag |
|
||||
| :----: | :----: | ---- |
|
||||
| x86-64 | ✅ | amd64-\<version tag\> |
|
||||
| arm64 | ✅ | arm64v8-\<version tag\> |
|
||||
| armhf| ✅ | arm32v7-\<version tag\> |
|
||||
|
||||
## Version Tags
|
||||
|
||||
This image provides various versions that are available via tags. `latest` tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.
|
||||
This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.
|
||||
|
||||
| Tag | Description |
|
||||
| :----: | --- |
|
||||
| latest | Stable releases |
|
||||
| development | DEPRECATED (no longer updated) - Prereleases from their GitHub |
|
||||
| Tag | Available | Description |
|
||||
| :----: | :----: |--- |
|
||||
| latest | ✅ | Stable releases |
|
||||
| focal | ✅ | DEPRECATED (no longer updated, `latest` is rebased on focal) - Stable releases, based on Ubuntu Focal |
|
||||
| development | ✅ | DEPRECATED (no longer updated) - Prereleases from their GitHub |
|
||||
|
||||
## Application Setup
|
||||
|
||||
@ -97,7 +100,7 @@ Here are some example snippets to help you get started creating a container.
|
||||
version: "2.1"
|
||||
services:
|
||||
code-server:
|
||||
image: ghcr.io/linuxserver/code-server
|
||||
image: lscr.io/linuxserver/code-server:latest
|
||||
container_name: code-server
|
||||
environment:
|
||||
- PUID=1000
|
||||
@ -108,6 +111,7 @@ services:
|
||||
- SUDO_PASSWORD=password #optional
|
||||
- SUDO_PASSWORD_HASH= #optional
|
||||
- PROXY_DOMAIN=code-server.my.domain #optional
|
||||
- DEFAULT_WORKSPACE=/config/workspace #optional
|
||||
volumes:
|
||||
- /path/to/appdata/config:/config
|
||||
ports:
|
||||
@ -128,10 +132,11 @@ docker run -d \
|
||||
-e SUDO_PASSWORD=password `#optional` \
|
||||
-e SUDO_PASSWORD_HASH= `#optional` \
|
||||
-e PROXY_DOMAIN=code-server.my.domain `#optional` \
|
||||
-e DEFAULT_WORKSPACE=/config/workspace `#optional` \
|
||||
-p 8443:8443 \
|
||||
-v /path/to/appdata/config:/config \
|
||||
--restart unless-stopped \
|
||||
ghcr.io/linuxserver/code-server
|
||||
lscr.io/linuxserver/code-server:latest
|
||||
```
|
||||
|
||||
## Parameters
|
||||
@ -149,6 +154,7 @@ Container images are configured using parameters passed at runtime (such as thos
|
||||
| `-e SUDO_PASSWORD=password` | If this optional variable is set, user will have sudo access in the code-server terminal with the specified password. |
|
||||
| `-e SUDO_PASSWORD_HASH=` | Optionally set sudo password via hash (takes priority over `SUDO_PASSWORD` var). Format is `$type$salt$hashed`. |
|
||||
| `-e PROXY_DOMAIN=code-server.my.domain` | If this optional variable is set, this domain will be proxied for subdomain proxying. See [Documentation](https://github.com/cdr/code-server/blob/master/docs/FAQ.md#sub-domains) |
|
||||
| `-e DEFAULT_WORKSPACE=/config/workspace` | If this optional variable is set, code-server will open this directory by default |
|
||||
| `-v /config` | Contains all relevant configuration files. |
|
||||
|
||||
## Environment variables from files (Docker secrets)
|
||||
@ -194,7 +200,7 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
|
||||
* container version number
|
||||
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' code-server`
|
||||
* image version number
|
||||
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' ghcr.io/linuxserver/code-server`
|
||||
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/code-server:latest`
|
||||
|
||||
## Updating Info
|
||||
|
||||
@ -212,7 +218,7 @@ Below are the instructions for updating containers:
|
||||
|
||||
### Via Docker Run
|
||||
|
||||
* Update the image: `docker pull ghcr.io/linuxserver/code-server`
|
||||
* Update the image: `docker pull lscr.io/linuxserver/code-server:latest`
|
||||
* Stop the running container: `docker stop code-server`
|
||||
* Delete the container: `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)
|
||||
@ -247,7 +253,7 @@ cd docker-code-server
|
||||
docker build \
|
||||
--no-cache \
|
||||
--pull \
|
||||
-t ghcr.io/linuxserver/code-server:latest .
|
||||
-t lscr.io/linuxserver/code-server:latest .
|
||||
```
|
||||
|
||||
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
|
||||
@ -260,6 +266,11 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
|
||||
|
||||
## Versions
|
||||
|
||||
* **20.02.22:** - Install using the official tarballs.
|
||||
* **29.12.21:** - Add `install-extension` as a helper for mods to install extensions.
|
||||
* **06.12.21:** - Add `DEFAULT_WORKSPACE` env var.
|
||||
* **29.11.21:** - Rebase to Ubuntu focal.
|
||||
* **16.09.21:** - Fix slow `chown` on large workspace (contents of workspace folder no longer chowned).
|
||||
* **11.07.21:** - Bump node to 14 to fix builds
|
||||
* **08.05.21:** - Fix doc link
|
||||
* **04.02.20:** - Allow setting gui password via hash using env var `HASHED_PASSWORD`.
|
||||
|
@ -3,7 +3,7 @@
|
||||
# jenkins variables
|
||||
project_name: docker-code-server
|
||||
external_type: na
|
||||
custom_version_command: "curl -sX GET https://registry.yarnpkg.com/code-server | jq -r '.\"dist-tags\".latest' | sed 's|^|v|'"
|
||||
custom_version_command: "curl -sX GET https://api.github.com/repos/coder/code-server/releases/latest | jq -r '.tag_name' | sed 's|^v||'"
|
||||
release_type: stable
|
||||
release_tag: latest
|
||||
ls_branch: master
|
||||
|
@ -1,185 +1,176 @@
|
||||
adduser3.116ubuntu1
|
||||
apt1.6.14
|
||||
apt-utils1.6.14
|
||||
base-files10.1ubuntu2.10
|
||||
base-passwd3.5.44
|
||||
bash4.4.18-2ubuntu1.2
|
||||
bsdutils1:2.31.1-0.4ubuntu3.7
|
||||
bzip21.0.6-8.1ubuntu0.2
|
||||
ca-certificates20210119~18.04.1
|
||||
coreutils8.28-1ubuntu1
|
||||
curl7.58.0-2ubuntu3.14
|
||||
dash0.5.8-2.10
|
||||
debconf1.5.66ubuntu1
|
||||
debianutils4.8.4
|
||||
diffutils1:3.6-1
|
||||
dirmngr2.2.4-1ubuntu1.4
|
||||
dpkg1.19.0.5ubuntu2.3
|
||||
e2fsprogs1.44.1-1ubuntu1.3
|
||||
fdisk2.31.1-0.4ubuntu3.7
|
||||
file1:5.32-2ubuntu0.4
|
||||
findutils4.6.0+git+20170828-2
|
||||
gcc-8-base8.4.0-1ubuntu1~18.04
|
||||
git1:2.17.1-1ubuntu0.8
|
||||
git-man1:2.17.1-1ubuntu0.8
|
||||
gnupg2.2.4-1ubuntu1.4
|
||||
gnupg-l10n2.2.4-1ubuntu1.4
|
||||
gnupg-utils2.2.4-1ubuntu1.4
|
||||
gpg2.2.4-1ubuntu1.4
|
||||
gpg-agent2.2.4-1ubuntu1.4
|
||||
gpgconf2.2.4-1ubuntu1.4
|
||||
gpgsm2.2.4-1ubuntu1.4
|
||||
gpgv2.2.4-1ubuntu1.4
|
||||
gpg-wks-client2.2.4-1ubuntu1.4
|
||||
gpg-wks-server2.2.4-1ubuntu1.4
|
||||
grep3.1-2build1
|
||||
gzip1.6-5ubuntu1.1
|
||||
hostname3.20
|
||||
init-system-helpers1.51
|
||||
jq1.5+dfsg-2
|
||||
krb5-locales1.16-2ubuntu0.2
|
||||
less487-0.1
|
||||
libacl12.2.52-3build1
|
||||
libapt-inst2.01.6.14
|
||||
libapt-pkg5.01.6.14
|
||||
libasn1-8-heimdal7.5.0+dfsg-1
|
||||
libassuan02.5.1-2
|
||||
libattr11:2.4.47-2build1
|
||||
libaudit11:2.8.2-1ubuntu1.1
|
||||
libaudit-common1:2.8.2-1ubuntu1.1
|
||||
libblkid12.31.1-0.4ubuntu3.7
|
||||
libbsd00.8.7-1ubuntu0.1
|
||||
libbz2-1.01.0.6-8.1ubuntu0.2
|
||||
libc62.27-3ubuntu1.4
|
||||
libcap-ng00.7.7-3.1
|
||||
libc-bin2.27-3ubuntu1.4
|
||||
libcom-err21.44.1-1ubuntu1.3
|
||||
libcurl3-gnutls7.58.0-2ubuntu3.14
|
||||
libcurl47.58.0-2ubuntu3.14
|
||||
libdb5.35.3.28-13.1ubuntu1.1
|
||||
libdebconfclient00.213ubuntu1
|
||||
libedit23.1-20170329-1
|
||||
liberror-perl0.17025-1
|
||||
libexpat12.2.5-3ubuntu0.2
|
||||
libext2fs21.44.1-1ubuntu1.3
|
||||
libfdisk12.31.1-0.4ubuntu3.7
|
||||
libffi63.2.1-8
|
||||
libgcc11:8.4.0-1ubuntu1~18.04
|
||||
libgcrypt201.8.1-4ubuntu1.2
|
||||
libgdbm51.14.1-6
|
||||
libgdbm-compat41.14.1-6
|
||||
libgmp102:6.1.2+dfsg-2
|
||||
libgnutls303.5.18-1ubuntu1.4
|
||||
libgpg-error01.27-6
|
||||
libgssapi3-heimdal7.5.0+dfsg-1
|
||||
libgssapi-krb5-21.16-2ubuntu0.2
|
||||
libhcrypto4-heimdal7.5.0+dfsg-1
|
||||
libheimbase1-heimdal7.5.0+dfsg-1
|
||||
libheimntlm0-heimdal7.5.0+dfsg-1
|
||||
libhogweed43.4.1-0ubuntu0.18.04.1
|
||||
libhx509-5-heimdal7.5.0+dfsg-1
|
||||
libidn2-02.0.4-1.1ubuntu0.2
|
||||
libjq11.5+dfsg-2
|
||||
libk5crypto31.16-2ubuntu0.2
|
||||
libkeyutils11.5.9-9.2ubuntu2
|
||||
libkrb5-26-heimdal7.5.0+dfsg-1
|
||||
libkrb5-31.16-2ubuntu0.2
|
||||
libkrb5support01.16-2ubuntu0.2
|
||||
adduser3.118ubuntu2
|
||||
apt2.0.9
|
||||
apt-utils2.0.9
|
||||
base-files11ubuntu5.5
|
||||
base-passwd3.5.47
|
||||
bash5.0-6ubuntu1.1
|
||||
bsdutils1:2.34-0.1ubuntu9.3
|
||||
bzip21.0.8-2
|
||||
ca-certificates20211016~20.04.1
|
||||
coreutils8.30-3ubuntu2
|
||||
curl7.68.0-1ubuntu2.12
|
||||
dash0.5.10.2-6
|
||||
debconf1.5.73
|
||||
debianutils4.9.1
|
||||
diffutils1:3.7-3
|
||||
dirmngr2.2.19-3ubuntu2.2
|
||||
dpkg1.19.7ubuntu3
|
||||
e2fsprogs1.45.5-2ubuntu1
|
||||
fdisk2.34-0.1ubuntu9.3
|
||||
findutils4.7.0-1ubuntu1
|
||||
gcc-10-base10.3.0-1ubuntu1~20.04
|
||||
git1:2.25.1-1ubuntu3.5
|
||||
git-man1:2.25.1-1ubuntu3.5
|
||||
gnupg2.2.19-3ubuntu2.2
|
||||
gnupg-l10n2.2.19-3ubuntu2.2
|
||||
gnupg-utils2.2.19-3ubuntu2.2
|
||||
gpg2.2.19-3ubuntu2.2
|
||||
gpg-agent2.2.19-3ubuntu2.2
|
||||
gpgconf2.2.19-3ubuntu2.2
|
||||
gpgsm2.2.19-3ubuntu2.2
|
||||
gpgv2.2.19-3ubuntu2.2
|
||||
gpg-wks-client2.2.19-3ubuntu2.2
|
||||
gpg-wks-server2.2.19-3ubuntu2.2
|
||||
grep3.4-1
|
||||
gzip1.10-0ubuntu4
|
||||
hostname3.23
|
||||
init-system-helpers1.57
|
||||
jq1.6-1ubuntu0.20.04.1
|
||||
krb5-locales1.17-6ubuntu4.1
|
||||
less551-1ubuntu0.1
|
||||
libacl12.2.53-6
|
||||
libapt-pkg6.02.0.9
|
||||
libasn1-8-heimdal7.7.0+dfsg-1ubuntu1
|
||||
libassuan02.5.3-7ubuntu2
|
||||
libatomic110.3.0-1ubuntu1~20.04
|
||||
libattr11:2.4.48-5
|
||||
libaudit11:2.8.5-2ubuntu6
|
||||
libaudit-common1:2.8.5-2ubuntu6
|
||||
libblkid12.34-0.1ubuntu9.3
|
||||
libbrotli11.0.7-6ubuntu0.1
|
||||
libbsd00.10.0-1
|
||||
libbz2-1.01.0.8-2
|
||||
libc62.31-0ubuntu9.9
|
||||
libcap-ng00.7.9-2.1build1
|
||||
libc-bin2.31-0ubuntu9.7
|
||||
libcbor0.60.6.0-0ubuntu1
|
||||
libcom-err21.45.5-2ubuntu1
|
||||
libcrypt11:4.4.10-10ubuntu4
|
||||
libcurl3-gnutls7.68.0-1ubuntu2.12
|
||||
libcurl47.68.0-1ubuntu2.12
|
||||
libdb5.35.3.28+dfsg1-0.6ubuntu2
|
||||
libdebconfclient00.251ubuntu1
|
||||
libedit23.1-20191231-1
|
||||
liberror-perl0.17029-1
|
||||
libexpat12.2.9-1ubuntu0.4
|
||||
libext2fs21.45.5-2ubuntu1
|
||||
libfdisk12.34-0.1ubuntu9.3
|
||||
libffi73.3-4
|
||||
libfido2-11.3.1-1ubuntu2
|
||||
libgcc-s110.3.0-1ubuntu1~20.04
|
||||
libgcrypt201.8.5-5ubuntu1.1
|
||||
libgdbm61.18.1-5
|
||||
libgdbm-compat41.18.1-5
|
||||
libgmp102:6.2.0+dfsg-4
|
||||
libgnutls303.6.13-2ubuntu1.6
|
||||
libgpg-error01.37-1
|
||||
libgssapi3-heimdal7.7.0+dfsg-1ubuntu1
|
||||
libgssapi-krb5-21.17-6ubuntu4.1
|
||||
libhcrypto4-heimdal7.7.0+dfsg-1ubuntu1
|
||||
libheimbase1-heimdal7.7.0+dfsg-1ubuntu1
|
||||
libheimntlm0-heimdal7.7.0+dfsg-1ubuntu1
|
||||
libhogweed53.5.1+really3.5.1-2ubuntu0.2
|
||||
libhx509-5-heimdal7.7.0+dfsg-1ubuntu1
|
||||
libidn2-02.2.0-2
|
||||
libjq11.6-1ubuntu0.20.04.1
|
||||
libk5crypto31.17-6ubuntu4.1
|
||||
libkeyutils11.6-6ubuntu1.1
|
||||
libkrb5-26-heimdal7.7.0+dfsg-1ubuntu1
|
||||
libkrb5-31.17-6ubuntu4.1
|
||||
libkrb5support01.17-6ubuntu4.1
|
||||
libksba81.3.5-2
|
||||
libldap-2.4-22.4.45+dfsg-1ubuntu1.10
|
||||
libldap-common2.4.45+dfsg-1ubuntu1.10
|
||||
liblz4-10.0~r131-2ubuntu3.1
|
||||
liblzma55.2.2-1.3
|
||||
libmagic11:5.32-2ubuntu0.4
|
||||
libmagic-mgc1:5.32-2ubuntu0.4
|
||||
libmount12.31.1-0.4ubuntu3.7
|
||||
libncurses56.1-1ubuntu1.18.04
|
||||
libncursesw56.1-1ubuntu1.18.04
|
||||
libnettle63.4.1-0ubuntu0.18.04.1
|
||||
libnghttp2-141.30.0-1ubuntu1
|
||||
libnpth01.5-3
|
||||
libonig46.7.0-1
|
||||
libp11-kit00.23.9-2ubuntu0.1
|
||||
libpam0g1.1.8-3.6ubuntu2.18.04.3
|
||||
libpam-modules1.1.8-3.6ubuntu2.18.04.3
|
||||
libpam-modules-bin1.1.8-3.6ubuntu2.18.04.3
|
||||
libpam-runtime1.1.8-3.6ubuntu2.18.04.3
|
||||
libpcre32:8.39-9
|
||||
libperl5.265.26.1-6ubuntu0.5
|
||||
libprocps62:3.3.12-3ubuntu1.2
|
||||
libpsl50.19.1-5build1
|
||||
libpython2.7-minimal2.7.17-1~18.04ubuntu1.6
|
||||
libpython2.7-stdlib2.7.17-1~18.04ubuntu1.6
|
||||
libpython-stdlib2.7.15~rc1-1
|
||||
libreadline77.0-3
|
||||
libroken18-heimdal7.5.0+dfsg-1
|
||||
librtmp12.4+20151223.gitfa8646d.1-1
|
||||
libsasl2-22.1.27~101-g0780600+dfsg-3ubuntu2.3
|
||||
libsasl2-modules2.1.27~101-g0780600+dfsg-3ubuntu2.3
|
||||
libsasl2-modules-db2.1.27~101-g0780600+dfsg-3ubuntu2.3
|
||||
libseccomp22.5.1-1ubuntu1~18.04.1
|
||||
libselinux12.7-2build2
|
||||
libsemanage12.7-2build2
|
||||
libsemanage-common2.7-2build2
|
||||
libsepol12.7-1
|
||||
libsmartcols12.31.1-0.4ubuntu3.7
|
||||
libsqlite3-03.22.0-1ubuntu0.4
|
||||
libss21.44.1-1ubuntu1.3
|
||||
libssl1.0.01.0.2n-1ubuntu5.6
|
||||
libssl1.11.1.1-1ubuntu2.1~18.04.9
|
||||
libstdc++68.4.0-1ubuntu1~18.04
|
||||
libsystemd0237-3ubuntu10.50
|
||||
libtasn1-64.13-2
|
||||
libtinfo56.1-1ubuntu1.18.04
|
||||
libudev1237-3ubuntu10.50
|
||||
libunistring20.9.9-0ubuntu2
|
||||
libuuid12.31.1-0.4ubuntu3.7
|
||||
libwind0-heimdal7.5.0+dfsg-1
|
||||
libx11-62:1.6.4-3ubuntu0.4
|
||||
libx11-data2:1.6.4-3ubuntu0.4
|
||||
libxau61:1.0.8-1ubuntu1
|
||||
libxcb11.13-2~ubuntu18.04
|
||||
libxdmcp61:1.1.2-3
|
||||
libxext62:1.3.3-1
|
||||
libxmuu12:1.1.2-2
|
||||
libzstd11.3.3+dfsg-2ubuntu1.2
|
||||
locales2.27-3ubuntu1.4
|
||||
login1:4.5-1ubuntu2
|
||||
lsb-base9.20170808ubuntu1
|
||||
mawk1.3.3-17ubuntu3
|
||||
mime-support3.60ubuntu1
|
||||
mount2.31.1-0.4ubuntu3.7
|
||||
multiarch-support2.27-3ubuntu1.4
|
||||
nano2.9.3-2
|
||||
ncurses-base6.1-1ubuntu1.18.04
|
||||
ncurses-bin6.1-1ubuntu1.18.04
|
||||
netbase5.4
|
||||
net-tools1.60+git20161116.90da8a0-1ubuntu1
|
||||
nodejs14.17.5-1nodesource1
|
||||
openssh-client1:7.6p1-4ubuntu0.3
|
||||
openssl1.1.1-1ubuntu2.1~18.04.9
|
||||
passwd1:4.5-1ubuntu2
|
||||
patch2.7.6-2ubuntu1.1
|
||||
perl5.26.1-6ubuntu0.5
|
||||
perl-base5.26.1-6ubuntu0.5
|
||||
perl-modules-5.265.26.1-6ubuntu0.5
|
||||
pinentry-curses1.1.0-1
|
||||
procps2:3.3.12-3ubuntu1.2
|
||||
publicsuffix20180223.1310-1
|
||||
python2.7.15~rc1-1
|
||||
python2.72.7.17-1~18.04ubuntu1.6
|
||||
python2.7-minimal2.7.17-1~18.04ubuntu1.6
|
||||
python-minimal2.7.15~rc1-1
|
||||
readline-common7.0-3
|
||||
sed4.4-2
|
||||
sensible-utils0.0.12
|
||||
sudo1.8.21p2-3ubuntu1.4
|
||||
sysvinit-utils2.88dsf-59.10ubuntu1
|
||||
tar1.29b-2ubuntu0.2
|
||||
tzdata2021a-0ubuntu0.18.04
|
||||
ubuntu-keyring2018.09.18.1~18.04.2
|
||||
util-linux2.31.1-0.4ubuntu3.7
|
||||
xauth1:1.0.10-1
|
||||
xz-utils5.2.2-1.3
|
||||
yarn1.22.5-1
|
||||
zlib1g1:1.2.11.dfsg-0ubuntu2
|
||||
libldap-2.4-22.4.49+dfsg-2ubuntu1.9
|
||||
libldap-common2.4.49+dfsg-2ubuntu1.9
|
||||
liblz4-11.9.2-2ubuntu0.20.04.1
|
||||
liblzma55.2.4-1ubuntu1
|
||||
libmount12.34-0.1ubuntu9.3
|
||||
libncurses66.2-0ubuntu2
|
||||
libncursesw66.2-0ubuntu2
|
||||
libnettle73.5.1+really3.5.1-2ubuntu0.2
|
||||
libnghttp2-141.40.0-1build1
|
||||
libnpth01.6-1
|
||||
libonig56.9.4-1
|
||||
libp11-kit00.23.20-1ubuntu0.1
|
||||
libpam0g1.3.1-5ubuntu4.3
|
||||
libpam-modules1.3.1-5ubuntu4.3
|
||||
libpam-modules-bin1.3.1-5ubuntu4.3
|
||||
libpam-runtime1.3.1-5ubuntu4.3
|
||||
libpcre2-8-010.34-7
|
||||
libpcre32:8.39-12build1
|
||||
libperl5.305.30.0-9ubuntu0.2
|
||||
libprocps82:3.3.16-1ubuntu2.3
|
||||
libpsl50.21.0-1ubuntu1
|
||||
libreadline88.0-4
|
||||
libroken18-heimdal7.7.0+dfsg-1ubuntu1
|
||||
librtmp12.4+20151223.gitfa8646d.1-2build1
|
||||
libsasl2-22.1.27+dfsg-2ubuntu0.1
|
||||
libsasl2-modules2.1.27+dfsg-2ubuntu0.1
|
||||
libsasl2-modules-db2.1.27+dfsg-2ubuntu0.1
|
||||
libseccomp22.5.1-1ubuntu1~20.04.2
|
||||
libselinux13.0-1build2
|
||||
libsemanage13.0-1build2
|
||||
libsemanage-common3.0-1build2
|
||||
libsepol13.0-1
|
||||
libsmartcols12.34-0.1ubuntu9.3
|
||||
libsqlite3-03.31.1-4ubuntu0.3
|
||||
libss21.45.5-2ubuntu1
|
||||
libssh-40.9.3-2ubuntu2.2
|
||||
libssl1.11.1.1f-1ubuntu2.16
|
||||
libstdc++610.3.0-1ubuntu1~20.04
|
||||
libsystemd0245.4-4ubuntu3.15
|
||||
libtasn1-64.16.0-2
|
||||
libtinfo66.2-0ubuntu2
|
||||
libudev1245.4-4ubuntu3.15
|
||||
libunistring20.9.10-2
|
||||
libuuid12.34-0.1ubuntu9.3
|
||||
libwind0-heimdal7.7.0+dfsg-1ubuntu1
|
||||
libx11-62:1.6.9-2ubuntu1.2
|
||||
libx11-data2:1.6.9-2ubuntu1.2
|
||||
libxau61:1.0.9-0ubuntu1
|
||||
libxcb11.14-2
|
||||
libxdmcp61:1.1.3-0ubuntu1
|
||||
libxext62:1.3.4-0ubuntu1
|
||||
libxmuu12:1.1.3-0ubuntu1
|
||||
libzstd11.4.4+dfsg-3ubuntu0.1
|
||||
locales2.31-0ubuntu9.9
|
||||
login1:4.8.1-1ubuntu5.20.04.1
|
||||
logsave1.45.5-2ubuntu1
|
||||
lsb-base11.1.0ubuntu2
|
||||
mawk1.3.4.20200120-2
|
||||
mount2.34-0.1ubuntu9.3
|
||||
nano4.8-1ubuntu1
|
||||
ncurses-base6.2-0ubuntu2
|
||||
ncurses-bin6.2-0ubuntu2
|
||||
netbase6.1
|
||||
net-tools1.60+git20180626.aebd88e-1ubuntu1
|
||||
openssh-client1:8.2p1-4ubuntu0.5
|
||||
openssl1.1.1f-1ubuntu2.16
|
||||
passwd1:4.8.1-1ubuntu5.20.04.1
|
||||
patch2.7.6-6
|
||||
perl5.30.0-9ubuntu0.2
|
||||
perl-base5.30.0-9ubuntu0.2
|
||||
perl-modules-5.305.30.0-9ubuntu0.2
|
||||
pinentry-curses1.1.0-3build1
|
||||
procps2:3.3.16-1ubuntu2.3
|
||||
publicsuffix20200303.0012-1
|
||||
readline-common8.0-4
|
||||
sed4.7-1
|
||||
sensible-utils0.0.12+nmu1
|
||||
sudo1.8.31-1ubuntu1.2
|
||||
sysvinit-utils2.96-2.1ubuntu1
|
||||
tar1.30+dfsg-7ubuntu0.20.04.2
|
||||
tzdata2022a-0ubuntu0.20.04
|
||||
ubuntu-keyring2020.02.11.4
|
||||
util-linux2.34-0.1ubuntu9.3
|
||||
xauth1:1.1-0ubuntu1
|
||||
zlib1g1:1.2.11.dfsg-2ubuntu1.2
|
||||
|
@ -29,6 +29,7 @@ available_architectures:
|
||||
development_versions: true
|
||||
development_versions_items:
|
||||
- { tag: "latest", desc: "Stable releases" }
|
||||
- { tag: "focal", desc: "DEPRECATED (no longer updated, `latest` is rebased on focal) - Stable releases, based on Ubuntu Focal" }
|
||||
- { tag: "development", desc: "DEPRECATED (no longer updated) - Prereleases from their GitHub" }
|
||||
|
||||
# container parameters
|
||||
@ -52,6 +53,7 @@ opt_param_env_vars:
|
||||
- { 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: "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" }
|
||||
|
||||
optional_block_1: false
|
||||
optional_block_1_items: ""
|
||||
@ -75,6 +77,11 @@ app_setup_block: |
|
||||
|
||||
# changelog
|
||||
changelogs:
|
||||
- { date: "20.02.22:", desc: "Install using the official tarballs." }
|
||||
- { date: "29.12.21:", desc: "Add `install-extension` as a helper for mods to install extensions." }
|
||||
- { date: "06.12.21:", desc: "Add `DEFAULT_WORKSPACE` env var." }
|
||||
- { date: "29.11.21:", desc: "Rebase to Ubuntu focal." }
|
||||
- { date: "16.09.21:", desc: "Fix slow `chown` on large workspace (contents of workspace folder no longer chowned)." }
|
||||
- { date: "11.07.21:", desc: "Bump node to 14 to fix builds" }
|
||||
- { date: "08.05.21:", desc: "Fix doc link" }
|
||||
- { date: "04.02.20:", desc: "Allow setting gui password via hash using env var `HASHED_PASSWORD`." }
|
||||
|
@ -17,6 +17,26 @@ if [ -n "${SUDO_PASSWORD}" ] || [ -n "${SUDO_PASSWORD_HASH}" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
[[ ! -f /config/.bashrc ]] && \
|
||||
cp /root/.bashrc /config/.bashrc
|
||||
[[ ! -f /config/.profile ]] && \
|
||||
cp /root/.profile /config/.profile
|
||||
|
||||
# permissions
|
||||
chown -R abc:abc \
|
||||
/config
|
||||
if [ -f "/usr/bin/find" ] && [ -f "/usr/bin/xargs" ]; then
|
||||
CORES=$(nproc --all)
|
||||
|
||||
# Split workload between config and workspace
|
||||
echo "setting permissions::configuration"
|
||||
find /config -path /config/workspace -prune -false -o -type d -print0 | \
|
||||
xargs --null -r --max-args=1 --max-procs=$((CORES*2*8)) \
|
||||
chown -R abc:abc
|
||||
|
||||
echo "setting permissions::workspace"
|
||||
chown abc:abc /config/workspace
|
||||
else
|
||||
# Set permissions on data mount
|
||||
# do not decend into the workspace
|
||||
chown -R abc:abc "$(ls /config -I workspace)"
|
||||
chown abc:abc /config/workspace
|
||||
fi
|
||||
|
@ -15,11 +15,11 @@ fi
|
||||
|
||||
exec \
|
||||
s6-setuidgid abc \
|
||||
/usr/local/bin/code-server \
|
||||
/app/code-server/bin/code-server \
|
||||
--bind-addr 0.0.0.0:8443 \
|
||||
--user-data-dir /config/data \
|
||||
--extensions-dir /config/extensions \
|
||||
--disable-telemetry \
|
||||
--auth "${AUTH}" \
|
||||
"${PROXY_DOMAIN_ARG}" \
|
||||
/config/workspace
|
||||
"${DEFAULT_WORKSPACE:-/config/workspace}"
|
||||
|
10
root/usr/local/bin/install-extension
Executable file
10
root/usr/local/bin/install-extension
Executable file
@ -0,0 +1,10 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
# shellcheck shell=bash
|
||||
|
||||
_install=(/app/code-server/bin/code-server "--extensions-dir" "/config/extensions" "--install-extension")
|
||||
|
||||
if [ "$(whoami)" == "abc" ]; then
|
||||
"${_install[@]}" "$@"
|
||||
else
|
||||
s6-setuidgid abc "${_install[@]}" "$@"
|
||||
fi
|
Loading…
x
Reference in New Issue
Block a user