Compare commits

..

4 Commits

Author SHA1 Message Date
LinuxServer-CI
a11064a29a Bot Updating Package Versions 2021-10-26 21:14:32 +02:00
Roxedus
3b78d9e7c6 Merge pull request #75 from linuxserver/focal-init 2021-10-26 21:05:01 +02:00
Roxedus
65a27cfcdb Update templated files 2021-10-25 20:50:57 +02:00
Roxedus
5b5bc16fe6 Focal init commit 2021-07-12 11:15:07 +02:00
26 changed files with 436 additions and 401 deletions

View File

@@ -24,7 +24,7 @@
## Readme
If you would like to change our readme, please __**do not**__ directly edit the readme, as it is auto-generated on each commit.
Instead edit the [readme-vars.yml](https://github.com/linuxserver/docker-code-server/edit/master/readme-vars.yml).
Instead edit the [readme-vars.yml](https://github.com/linuxserver/docker-code-server/edit/focal/readme-vars.yml).
These variables are used in a template for our [Jenkins Builder](https://github.com/linuxserver/docker-jenkins-builder) as part of an ansible play.
Most of these variables are also carried over to [docs.linuxserver.io](https://docs.linuxserver.io/images/docker-code-server)
@@ -115,7 +115,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Update the changelog
If you are modifying the Dockerfiles or any of the startup scripts in [root](https://github.com/linuxserver/docker-code-server/tree/master/root), add an entry to the changelog
If you are modifying the Dockerfiles or any of the startup scripts in [root](https://github.com/linuxserver/docker-code-server/tree/focal/root), add an entry to the changelog
```yml
changelogs:

View File

@@ -21,7 +21,7 @@
------------------------------
- [ ] I have read the [contributing](https://github.com/linuxserver/docker-code-server/blob/master/.github/CONTRIBUTING.md) guideline and understand that I have made the correct modifications
- [ ] I have read the [contributing](https://github.com/linuxserver/docker-code-server/blob/focal/.github/CONTRIBUTING.md) guideline and understand that I have made the correct modifications
------------------------------

View File

@@ -4,24 +4,24 @@ on:
workflow_dispatch:
jobs:
external-trigger-master:
external-trigger-focal:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.3
- name: External Trigger
if: github.ref == 'refs/heads/master'
if: github.ref == 'refs/heads/focal'
run: |
if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_MASTER }}" ]; then
echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_MASTER is set; skipping trigger. ****"
if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_FOCAL }}" ]; then
echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_FOCAL is set; skipping trigger. ****"
exit 0
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 "**** External trigger running off of focal branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_FOCAL\". ****"
echo "**** Retrieving external version ****"
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||')
EXT_RELEASE=$(curl -sX GET https://registry.yarnpkg.com/code-server | jq -r '."dist-tags".latest' | 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"
FAILURE_REASON="Can't retrieve external version for code-server branch focal"
GHA_TRIGGER_URL="https://github.com/linuxserver/docker-code-server/actions/runs/${{ github.run_id }}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n**Trigger URL:** '"${GHA_TRIGGER_URL}"' \n"}],
@@ -48,12 +48,8 @@ jobs:
| jq -r '.config.digest')
image_info=$(curl -sL \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/blobs/${digest}")
if [[ $(echo $image_info | jq -r '.container_config') == "null" ]]; then
image_info=$(echo $image_info | jq -r '.config')
else
image_info=$(echo $image_info | jq -r '.container_config')
fi
"https://ghcr.io/v2/${image}/blobs/${digest}" \
| jq -r '.container_config')
IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}')
IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}')
if [ -z "${IMAGE_VERSION}" ]; then
@@ -68,13 +64,13 @@ jobs:
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
echo "**** Version ${EXT_RELEASE} already pushed, exiting ****"
exit 0
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/focal/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "**** New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting ****"
exit 0
else
echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****"
response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/master/buildWithParameters?PACKAGE_CHECK=false \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/focal/buildWithParameters?PACKAGE_CHECK=false \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
echo "**** Sleeping 10 seconds until job starts ****"

View File

@@ -8,6 +8,6 @@ jobs:
steps:
- uses: actions/first-interaction@v1
with:
issue-message: 'Thanks for opening your first issue here! Be sure to follow the [bug](https://github.com/linuxserver/docker-code-server/blob/master/.github/ISSUE_TEMPLATE/issue.bug.md) or [feature](https://github.com/linuxserver/docker-code-server/blob/master/.github/ISSUE_TEMPLATE/issue.feature.md) issue templates!'
pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-code-server/blob/master/.github/PULL_REQUEST_TEMPLATE.md)!'
issue-message: 'Thanks for opening your first issue here! Be sure to follow the [bug](https://github.com/linuxserver/docker-code-server/blob/focal/.github/ISSUE_TEMPLATE/issue.bug.md) or [feature](https://github.com/linuxserver/docker-code-server/blob/focal/.github/ISSUE_TEMPLATE/issue.feature.md) issue templates!'
pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-code-server/blob/focal/.github/PULL_REQUEST_TEMPLATE.md)!'
repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -4,25 +4,25 @@ on:
workflow_dispatch:
jobs:
package-trigger-master:
package-trigger-focal:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.3
- name: Package Trigger
if: github.ref == 'refs/heads/master'
if: github.ref == 'refs/heads/focal'
run: |
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_CODE_SERVER_MASTER }}" ]; then
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_CODE_SERVER_MASTER is set; skipping trigger. ****"
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_CODE_SERVER_FOCAL }}" ]; then
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_CODE_SERVER_FOCAL is set; skipping trigger. ****"
exit 0
fi
if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/focal/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****"
exit 0
fi
echo "**** Package trigger running off of master branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_CODE_SERVER_MASTER\". ****"
echo "**** Package trigger running off of focal branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_CODE_SERVER_FOCAL\". ****"
response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/master/buildWithParameters?PACKAGE_CHECK=true \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/focal/buildWithParameters?PACKAGE_CHECK=true \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
echo "**** Sleeping 10 seconds until job starts ****"

View File

@@ -1,4 +1,4 @@
FROM ghcr.io/linuxserver/baseimage-ubuntu:jammy
FROM ghcr.io/linuxserver/baseimage-ubuntu:focal
# set version label
ARG BUILD_DATE
@@ -8,32 +8,54 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA
LABEL maintainer="aptalca"
# environment settings
ARG DEBIAN_FRONTEND="noninteractive"
ENV HOME="/config"
RUN \
echo "**** install runtime dependencies ****" && \
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 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 \
libsecret-1-dev \
libx11-dev \
libxkbfile-dev \
pkg-config \
python3 && \
echo "**** install runtime dependencies ****" && \
apt-get install -y \
git \
jq \
libatomic1 \
nano \
net-tools \
netcat \
sudo && \
nodejs \
sudo \
yarn && \
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||'); \
CODE_RELEASE=$(curl -sX GET https://registry.yarnpkg.com/code-server \
| jq -r '."dist-tags".latest' | 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 && \
CODE_VERSION=$(echo "$CODE_RELEASE" | awk '{print substr($1,2); }') && \
npm config set python python3 \
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 && \
apt-get clean && \
rm -rf \
/config/* \

View File

@@ -1,4 +1,4 @@
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-jammy
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-focal
# set version label
ARG BUILD_DATE
@@ -8,32 +8,54 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA
LABEL maintainer="aptalca"
# environment settings
ARG DEBIAN_FRONTEND="noninteractive"
ENV HOME="/config"
RUN \
echo "**** install runtime dependencies ****" && \
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 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 \
libsecret-1-dev \
libx11-dev \
libxkbfile-dev \
pkg-config \
python3 && \
echo "**** install runtime dependencies ****" && \
apt-get install -y \
git \
jq \
libatomic1 \
nano \
net-tools \
netcat \
sudo && \
nodejs \
sudo \
yarn && \
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||'); \
CODE_RELEASE=$(curl -sX GET https://registry.yarnpkg.com/code-server \
| jq -r '."dist-tags".latest' | 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 && \
CODE_VERSION=$(echo "$CODE_RELEASE" | awk '{print substr($1,2); }') && \
npm config set python python3 \
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 && \
apt-get clean && \
rm -rf \
/config/* \

View File

@@ -1,4 +1,4 @@
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm32v7-jammy
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm32v7-focal
# set version label
ARG BUILD_DATE
@@ -8,32 +8,54 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA
LABEL maintainer="aptalca"
# environment settings
ARG DEBIAN_FRONTEND="noninteractive"
ENV HOME="/config"
RUN \
echo "**** install runtime dependencies ****" && \
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 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 \
libsecret-1-dev \
libx11-dev \
libxkbfile-dev \
pkg-config \
python3 && \
echo "**** install runtime dependencies ****" && \
apt-get install -y \
git \
jq \
libatomic1 \
nano \
net-tools \
netcat \
sudo && \
nodejs \
sudo \
yarn && \
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||'); \
CODE_RELEASE=$(curl -sX GET https://registry.yarnpkg.com/code-server \
| jq -r '."dist-tags".latest' | 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 && \
CODE_VERSION=$(echo "$CODE_RELEASE" | awk '{print substr($1,2); }') && \
npm config set python python3 \
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 && \
apt-get clean && \
rm -rf \
/config/* \

134
Jenkinsfile vendored
View File

@@ -104,7 +104,7 @@ pipeline {
steps{
script{
env.EXT_RELEASE = sh(
script: ''' curl -sX GET https://api.github.com/repos/coder/code-server/releases/latest | jq -r '.tag_name' | sed 's|^v||' ''',
script: ''' curl -sX GET https://registry.yarnpkg.com/code-server | jq -r '."dist-tags".latest' | sed 's|^|v|' ''',
returnStdout: true).trim()
env.RELEASE_LINK = 'custom_command'
}
@@ -118,11 +118,12 @@ pipeline {
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''',
returnStdout: true).trim()
def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)/
env.SEMVER = (new Date()).format('YYYY.MM.dd')
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+))?(.*)/
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]}"
@@ -132,22 +133,14 @@ pipeline {
}
}
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")
}
println("SEMVER: ${env.SEMVER}")
}
}
}
// If this is a master build use live docker endpoints
// If this is a focal build use live docker endpoints
stage("Set ENV live build"){
when {
branch "master"
branch "focal"
environment name: 'CHANGE_ID', value: ''
}
steps {
@@ -170,7 +163,7 @@ pipeline {
// If this is a dev build use dev docker endpoints
stage("Set ENV dev build"){
when {
not {branch "master"}
not {branch "focal"}
environment name: 'CHANGE_ID', value: ''
}
steps {
@@ -247,7 +240,7 @@ pipeline {
// Use helper containers to render templated files
stage('Update-Templates') {
when {
branch "master"
branch "focal"
environment name: 'CHANGE_ID', value: ''
expression {
env.CONTAINER_NAME != null
@@ -258,13 +251,13 @@ pipeline {
set -e
TEMPDIR=$(mktemp -d)
docker pull ghcr.io/linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=focal -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
# Stage 1 - Jenkinsfile update
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master
git checkout -f focal
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
git add Jenkinsfile
git commit -m 'Bot Updating Templated Files'
@@ -287,7 +280,7 @@ pipeline {
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master
git checkout -f focal
for i in ${TEMPLATES_TO_DELETE}; do
git rm "${i}"
done
@@ -308,7 +301,7 @@ pipeline {
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master
git checkout -f focal
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
@@ -343,11 +336,9 @@ 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, 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' || :
echo "Image is on the ignore list, removing Unraid template"
git rm unraid/${CONTAINER_NAME}.xml || :
git commit -m 'Bot Removing Deprecated Unraid Template' || :
else
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
git add unraid/${CONTAINER_NAME}.xml
@@ -366,7 +357,7 @@ pipeline {
// Exit the build if the Templated files were just updated
stage('Template-exit') {
when {
branch "master"
branch "focal"
environment name: 'CHANGE_ID', value: ''
environment name: 'FILES_UPDATED', value: 'true'
expression {
@@ -405,16 +396,16 @@ pipeline {
// Add package to Scarf.sh and set permissions
stage("Scarf.sh package registry"){
when {
branch "master"
branch "focal"
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')
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/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 \
PACKAGE_UUID=$(curl -sX POST https://scarf.sh/api/v1/packages \
-H "Authorization: Bearer ${SCARF_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"name":"linuxserver/code-server",\
@@ -422,10 +413,22 @@ pipeline {
"libraryType":"docker",\
"website":"https://github.com/linuxserver/docker-code-server",\
"backendUrl":"https://ghcr.io/linuxserver/code-server",\
"publicUrl":"https://lscr.io/linuxserver/code-server"}' || :
"publicUrl":"https://lscr.io/linuxserver/code-server"}' \
| jq -r .uuid)
else
echo "Package already exists on Scarf.sh"
fi
echo "Setting permissions on Scarf.sh for package ${PACKAGE_UUID}"
curl -X POST https://scarf.sh/api/v1/packages/${PACKAGE_UUID}/permissions \
-H "Authorization: Bearer ${SCARF_TOKEN}" \
-H "Content-Type: application/json" \
-d '[{"userQuery":"Spad","permissionLevel":"admin"},\
{"userQuery":"roxedus","permissionLevel":"admin"},\
{"userQuery":"nemchik","permissionLevel":"admin"},\
{"userQuery":"driz","permissionLevel":"admin"},\
{"userQuery":"aptalca","permissionLevel":"admin"},\
{"userQuery":"saarg","permissionLevel":"admin"},\
{"userQuery":"Stark","permissionLevel":"admin"}]'
'''
}
}
@@ -562,7 +565,7 @@ pipeline {
// Take the image we just built and dump package versions for comparison
stage('Update-packages') {
when {
branch "master"
branch "focal"
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
@@ -599,7 +602,7 @@ pipeline {
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f master
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f focal
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
cd ${TEMPDIR}/${LS_REPO}/
wait
@@ -623,7 +626,7 @@ pipeline {
// Exit the build if the package file was just updated
stage('PACKAGE-exit') {
when {
branch "master"
branch "focal"
environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'true'
environment name: 'EXIT_STATUS', value: ''
@@ -644,7 +647,7 @@ pipeline {
// Exit the build if this is just a package check and there are no changes to push
stage('PACKAGECHECK-exit') {
when {
branch "master"
branch "focal"
environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'false'
environment name: 'EXIT_STATUS', value: ''
@@ -710,7 +713,7 @@ pipeline {
-e DO_REGION="ams3" \
-e DO_BUCKET="lsio-ci" \
-t ghcr.io/linuxserver/ci:latest \
python3 test_build.py'''
python /ci/ci.py'''
}
}
}
@@ -749,15 +752,11 @@ pipeline {
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 tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
docker push ${PUSHIMAGE}:latest
docker push ${PUSHIMAGE}:${META_TAG}
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then
docker push ${PUSHIMAGE}:${SEMVER}
fi
docker push ${PUSHIMAGE}:${SEMVER}
done
'''
}
@@ -766,10 +765,8 @@ pipeline {
docker rmi \
${DELETEIMAGE}:${META_TAG} \
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
${DELETEIMAGE}:latest || :
if [ -n "${SEMVER}" ]; then
docker rmi ${DELETEIMAGE}:${SEMVER} || :
fi
${DELETEIMAGE}:latest \
${DELETEIMAGE}:${SEMVER} || :
done
'''
}
@@ -819,11 +816,9 @@ 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 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 push ${MANIFESTIMAGE}:amd64-${META_TAG}
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
@@ -833,11 +828,9 @@ 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 push ${MANIFESTIMAGE}:amd64-${SEMVER}
docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
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
@@ -850,18 +843,14 @@ 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}:${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
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
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}
done
'''
}
@@ -871,18 +860,15 @@ pipeline {
${DELETEIMAGE}:amd64-${META_TAG} \
${DELETEIMAGE}:amd64-latest \
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
${DELETEIMAGE}:amd64-${SEMVER} \
${DELETEIMAGE}:arm32v7-${META_TAG} \
${DELETEIMAGE}:arm32v7-latest \
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
${DELETEIMAGE}:arm32v7-${SEMVER} \
${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
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} \
${DELETEIMAGE}:arm64v8-${SEMVER} || :
done
docker rmi \
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
@@ -894,7 +880,7 @@ pipeline {
// If this is a public release tag it in the LS Github
stage('Github-Tag-Push-Release') {
when {
branch "master"
branch "focal"
expression {
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
}
@@ -906,14 +892,14 @@ pipeline {
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to focal",\
"type": "commit",\
"tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
echo "Pushing New release for Tag"
sh '''#! /bin/bash
echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json
echo '{"tag_name":"'${META_TAG}'",\
"target_commitish": "master",\
"target_commitish": "focal",\
"name": "'${META_TAG}'",\
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start
printf '","draft": false,"prerelease": false}' >> releasebody.json

View File

@@ -1,5 +1,5 @@
<!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read the https://github.com/linuxserver/docker-code-server/blob/master/.github/CONTRIBUTING.md -->
<!-- Please read the https://github.com/linuxserver/docker-code-server/blob/focal/.github/CONTRIBUTING.md -->
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io)
@@ -29,7 +29,6 @@ Find us at:
# [linuxserver/code-server](https://github.com/linuxserver/docker-code-server)
[![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fcode-server?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh/gateway/linuxserver-ci/docker/linuxserver%2Fcode-server)
[![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-code-server.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-code-server)
[![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-code-server.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-code-server/releases)
[![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-code-server/packages)
@@ -37,7 +36,7 @@ Find us at:
[![Quay.io](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Quay.io)](https://quay.io/repository/linuxserver.io/code-server)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/code-server.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/code-server)
[![Docker Stars](https://img.shields.io/docker/stars/linuxserver/code-server.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/code-server)
[![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-code-server%2Fjob%2Fmaster%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/master/)
[![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-code-server%2Fjob%2Ffocal%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/focal/)
[![LSIO CI](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=CI&query=CI&url=https%3A%2F%2Fci-tests.linuxserver.io%2Flinuxserver%2Fcode-server%2Flatest%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/code-server/latest/index.html)
[Code-server](https://coder.com) is VS Code running on a remote server, accessible through the browser.
@@ -52,17 +51,26 @@ Find us at:
## 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/).
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/).
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` 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 | Available | Tag |
| :----: | :----: | ---- |
| x86-64 | ✅ | amd64-\<version tag\> |
| arm64 | ✅ | arm64v8-\<version tag\> |
| armhf| ✅ | arm32v7-\<version tag\> |
| Architecture | Tag |
| :----: | --- |
| x86-64 | amd64-latest |
| arm64 | arm64v8-latest |
| armhf | arm32v7-latest |
## 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.
| Tag | Description |
| :----: | --- |
| latest | Stable releases |
| focal | Stable releases, on a focal baseiamge |
## Application Setup
@@ -90,7 +98,7 @@ Here are some example snippets to help you get started creating a container.
version: "2.1"
services:
code-server:
image: lscr.io/linuxserver/code-server:latest
image: lscr.io/linuxserver/code-server
container_name: code-server
environment:
- PUID=1000
@@ -101,7 +109,6 @@ 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:
@@ -122,11 +129,10 @@ 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 \
lscr.io/linuxserver/code-server:latest
lscr.io/linuxserver/code-server
```
## Parameters
@@ -144,7 +150,6 @@ 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)
@@ -190,7 +195,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" }}' lscr.io/linuxserver/code-server:latest`
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/code-server`
## Updating Info
@@ -208,7 +213,7 @@ Below are the instructions for updating containers:
### Via Docker Run
* Update the image: `docker pull lscr.io/linuxserver/code-server:latest`
* Update the image: `docker pull lscr.io/linuxserver/code-server`
* 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)
@@ -256,13 +261,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions
* **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.
* **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).
* **12.07.21:** - Rebase to focal
* **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`.

View File

@@ -3,10 +3,10 @@
# jenkins variables
project_name: docker-code-server
external_type: na
custom_version_command: "curl -sX GET https://api.github.com/repos/coder/code-server/releases/latest | jq -r '.tag_name' | sed 's|^v||'"
custom_version_command: "curl -sX GET https://registry.yarnpkg.com/code-server | jq -r '.\"dist-tags\".latest' | sed 's|^|v|'"
release_type: stable
release_tag: latest
ls_branch: master
ls_branch: focal
repo_vars:
- CONTAINER_NAME = 'code-server'
- BUILD_VERSION_ARG = 'CODE_RELEASE'

View File

@@ -1,172 +1,190 @@
adduser3.118ubuntu5
apt2.4.8
apt-utils2.4.8
base-files12ubuntu4.2
base-passwd3.5.52build1
bash5.1-6ubuntu1
bsdutils1:2.37.2-4ubuntu3
ca-certificates20211016
coreutils8.32-4.1ubuntu1
curl7.81.0-1ubuntu1.6
dash0.5.11+git20210903+057cd650a4ed-3build1
debconf1.5.79ubuntu1
debianutils5.5-1ubuntu2
diffutils1:3.8-0ubuntu2
dirmngr2.2.27-3ubuntu2.1
dpkg1.21.1ubuntu2.1
e2fsprogs1.46.5-2ubuntu1.1
findutils4.8.0-1ubuntu3
gcc-12-base12.1.0-2ubuntu1~22.04
git1:2.34.1-1ubuntu1.5
git-man1:2.34.1-1ubuntu1.5
gnupg2.2.27-3ubuntu2.1
gnupg-l10n2.2.27-3ubuntu2.1
gnupg-utils2.2.27-3ubuntu2.1
gpg2.2.27-3ubuntu2.1
gpg-agent2.2.27-3ubuntu2.1
gpgconf2.2.27-3ubuntu2.1
gpgsm2.2.27-3ubuntu2.1
gpgv2.2.27-3ubuntu2.1
gpg-wks-client2.2.27-3ubuntu2.1
gpg-wks-server2.2.27-3ubuntu2.1
grep3.7-1build1
gzip1.10-4ubuntu4.1
hostname3.23ubuntu2
init-system-helpers1.62
jq1.6-2.1ubuntu3
less590-1build1
libacl12.3.1-1
libapt-pkg6.02.4.8
libassuan02.5.5-1build1
libatomic112.1.0-2ubuntu1~22.04
libattr11:2.5.1-1build1
libaudit11:3.0.7-1build1
libaudit-common1:3.0.7-1build1
libblkid12.37.2-4ubuntu3
libbrotli11.0.9-2build6
libbsd00.11.5-1
libbz2-1.01.0.8-5build1
libc62.35-0ubuntu3.1
libcap21:2.44-1build3
libcap-ng00.7.9-2.2build3
libc-bin2.35-0ubuntu3.1
libcbor0.80.8.0-2ubuntu1
libcom-err21.46.5-2ubuntu1.1
libcrypt11:4.4.27-1
libcurl3-gnutls7.81.0-1ubuntu1.6
libcurl47.81.0-1ubuntu1.6
libdb5.35.3.28+dfsg1-0.8ubuntu3
libdebconfclient00.261ubuntu1
libedit23.1-20210910-1build1
adduser3.118ubuntu2
apt2.0.6
apt-utils2.0.6
base-files11ubuntu5.4
base-passwd3.5.47
bash5.0-6ubuntu1.1
bsdutils1:2.34-0.1ubuntu9.1
bzip21.0.8-2
ca-certificates20210119~20.04.2
coreutils8.30-3ubuntu2
curl7.68.0-1ubuntu2.7
dash0.5.10.2-6
debconf1.5.73
debianutils4.9.1
diffutils1:3.7-3
dirmngr2.2.19-3ubuntu2.1
dpkg1.19.7ubuntu3
e2fsprogs1.45.5-2ubuntu1
fdisk2.34-0.1ubuntu9.1
file1:5.38-4
findutils4.7.0-1ubuntu1
gcc-10-base10.3.0-1ubuntu1~20.04
git1:2.25.1-1ubuntu3.2
git-man1:2.25.1-1ubuntu3.2
gnupg2.2.19-3ubuntu2.1
gnupg-l10n2.2.19-3ubuntu2.1
gnupg-utils2.2.19-3ubuntu2.1
gpg2.2.19-3ubuntu2.1
gpg-agent2.2.19-3ubuntu2.1
gpgconf2.2.19-3ubuntu2.1
gpgsm2.2.19-3ubuntu2.1
gpgv2.2.19-3ubuntu2.1
gpg-wks-client2.2.19-3ubuntu2.1
gpg-wks-server2.2.19-3ubuntu2.1
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.6
libasn1-8-heimdal7.7.0+dfsg-1ubuntu1
libassuan02.5.3-7ubuntu2
libattr11:2.4.48-5
libaudit11:2.8.5-2ubuntu6
libaudit-common1:2.8.5-2ubuntu6
libblkid12.34-0.1ubuntu9.1
libbrotli11.0.7-6ubuntu0.1
libbsd00.10.0-1
libbz2-1.01.0.8-2
libc62.31-0ubuntu9.2
libcap-ng00.7.9-2.1build1
libc-bin2.31-0ubuntu9.2
libcbor0.60.6.0-0ubuntu1
libcom-err21.45.5-2ubuntu1
libcrypt11:4.4.10-10ubuntu4
libcurl3-gnutls7.68.0-1ubuntu2.7
libcurl47.68.0-1ubuntu2.7
libdb5.35.3.28+dfsg1-0.6ubuntu2
libdebconfclient00.251ubuntu1
libedit23.1-20191231-1
liberror-perl0.17029-1
libexpat12.4.7-1ubuntu0.1
libext2fs21.46.5-2ubuntu1.1
libffi83.4.2-4
libfido2-11.10.0-1
libgcc-s112.1.0-2ubuntu1~22.04
libgcrypt201.9.4-3ubuntu3
libgdbm61.23-1
libgdbm-compat41.23-1
libgmp102:6.2.1+dfsg-3ubuntu1
libgnutls303.7.3-4ubuntu1.1
libgpg-error01.43-3
libgssapi-krb5-21.19.2-2
libhogweed63.7.3-1build2
libidn2-02.3.2-2build1
libjq11.6-2.1ubuntu3
libk5crypto31.19.2-2
libkeyutils11.6.1-2ubuntu3
libkrb5-31.19.2-2
libkrb5support01.19.2-2
libksba81.6.0-2ubuntu0.1
libldap-2.5-02.5.13+dfsg-0ubuntu0.22.04.1
libldap-common2.5.13+dfsg-0ubuntu0.22.04.1
liblz4-11.9.3-2build2
liblzma55.2.5-2ubuntu1
libmd01.0.4-1build1
libmount12.37.2-4ubuntu3
libncurses66.3-2
libncursesw66.3-2
libnettle83.7.3-1build2
libnghttp2-141.43.0-1build3
libnpth01.6-3build2
libnsl21.3.0-2build2
libonig56.9.7.1-2build1
libp11-kit00.24.0-6build1
libpam0g1.4.0-11ubuntu2
libpam-modules1.4.0-11ubuntu2
libpam-modules-bin1.4.0-11ubuntu2
libpam-runtime1.4.0-11ubuntu2
libpcre2-8-010.39-3ubuntu0.1
libpcre32:8.39-13ubuntu0.22.04.1
libperl5.345.34.0-3ubuntu1.1
libprocps82:3.3.17-6ubuntu2
libpsl50.21.0-1.2build2
libreadline88.1.2-1
librtmp12.4+20151223.gitfa8646d.1-2build4
libsasl2-22.1.27+dfsg2-3ubuntu1
libsasl2-modules2.1.27+dfsg2-3ubuntu1
libsasl2-modules-db2.1.27+dfsg2-3ubuntu1
libseccomp22.5.3-2ubuntu2
libselinux13.3-1build2
libsemanage23.3-1build2
libsemanage-common3.3-1build2
libsepol23.3-1build1
libsmartcols12.37.2-4ubuntu3
libsqlite3-03.37.2-2ubuntu0.1
libss21.46.5-2ubuntu1.1
libssh-40.9.6-2build1
libssl33.0.2-0ubuntu1.7
libstdc++612.1.0-2ubuntu1~22.04
libsystemd0249.11-0ubuntu3.6
libtasn1-64.18.0-4build1
libtinfo66.3-2
libtirpc31.3.2-2ubuntu0.1
libtirpc-common1.3.2-2ubuntu0.1
libudev1249.11-0ubuntu3.6
libunistring21.0-1
libuuid12.37.2-4ubuntu3
libx11-62:1.7.5-1
libx11-data2:1.7.5-1
libxau61:1.0.9-1build5
libxcb11.14-3ubuntu3
libxdmcp61:1.1.3-0ubuntu5
libxext62:1.3.4-1build1
libxmuu12:1.1.3-3
libxxhash00.8.1-1
libzstd11.4.8+dfsg-3build1
locales2.35-0ubuntu3.1
login1:4.8.1-2ubuntu2
logsave1.46.5-2ubuntu1.1
lsb-base11.1.0ubuntu4
mawk1.3.4.20200120-3
mount2.37.2-4ubuntu3
nano6.2-1
ncurses-base6.3-2
ncurses-bin6.3-2
netbase6.3
netcat1.218-4ubuntu1
netcat-openbsd1.218-4ubuntu1
net-tools1.60+git20181103.0eebece-1ubuntu5
openssh-client1:8.9p1-3
openssl3.0.2-0ubuntu1.7
passwd1:4.8.1-2ubuntu2
patch2.7.6-7build2
perl5.34.0-3ubuntu1.1
perl-base5.34.0-3ubuntu1.1
perl-modules-5.345.34.0-3ubuntu1.1
pinentry-curses1.1.1-1build2
procps2:3.3.17-6ubuntu2
publicsuffix20211207.1025-1
readline-common8.1.2-1
sed4.8-1ubuntu2
sensible-utils0.0.17
sudo1.9.9-1ubuntu2.1
sysvinit-utils3.01-1ubuntu1
tar1.34+dfsg-1build3
tzdata2022f-0ubuntu0.22.04.0
ubuntu-keyring2021.03.26
usrmerge25ubuntu2
util-linux2.37.2-4ubuntu3
xauth1:1.1-1build2
zlib1g1:1.2.11.dfsg-2ubuntu9.2
libexpat12.2.9-1build1
libext2fs21.45.5-2ubuntu1
libfdisk12.34-0.1ubuntu9.1
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
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.49+dfsg-2ubuntu1.8
libldap-common2.4.49+dfsg-2ubuntu1.8
liblz4-11.9.2-2ubuntu0.20.04.1
liblzma55.2.4-1ubuntu1
libmagic11:5.38-4
libmagic-mgc1:5.38-4
libmount12.34-0.1ubuntu9.1
libmpdec22.4.2-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.2
libpam-modules1.3.1-5ubuntu4.2
libpam-modules-bin1.3.1-5ubuntu4.2
libpam-runtime1.3.1-5ubuntu4.2
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
libpython3.8-minimal3.8.10-0ubuntu1~20.04.1
libpython3.8-stdlib3.8.10-0ubuntu1~20.04.1
libpython3-stdlib3.8.2-0ubuntu2
libreadline88.0-4
libroken18-heimdal7.7.0+dfsg-1ubuntu1
librtmp12.4+20151223.gitfa8646d.1-2build1
libsasl2-22.1.27+dfsg-2
libsasl2-modules2.1.27+dfsg-2
libsasl2-modules-db2.1.27+dfsg-2
libseccomp22.5.1-1ubuntu1~20.04.1
libselinux13.0-1build2
libsemanage13.0-1build2
libsemanage-common3.0-1build2
libsepol13.0-1
libsmartcols12.34-0.1ubuntu9.1
libsqlite3-03.31.1-4ubuntu0.2
libss21.45.5-2ubuntu1
libssh-40.9.3-2ubuntu2.2
libssl1.11.1.1f-1ubuntu2.8
libstdc++610.3.0-1ubuntu1~20.04
libsystemd0245.4-4ubuntu3.13
libtasn1-64.16.0-2
libtinfo66.2-0ubuntu2
libudev1245.4-4ubuntu3.13
libunistring20.9.10-2
libuuid12.34-0.1ubuntu9.1
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.2
login1:4.8.1-1ubuntu5.20.04.1
logsave1.45.5-2ubuntu1
lsb-base11.1.0ubuntu2
mawk1.3.4.20200120-2
mime-support3.64ubuntu1
mount2.34-0.1ubuntu9.1
nano4.8-1ubuntu1
ncurses-base6.2-0ubuntu2
ncurses-bin6.2-0ubuntu2
netbase6.1
net-tools1.60+git20180626.aebd88e-1ubuntu1
nodejs14.18.1-deb-1nodesource1
openssh-client1:8.2p1-4ubuntu0.3
openssl1.1.1f-1ubuntu2.8
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
python33.8.2-0ubuntu2
python3.83.8.10-0ubuntu1~20.04.1
python3.8-minimal3.8.10-0ubuntu1~20.04.1
python3-minimal3.8.2-0ubuntu2
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.1
tzdata2021a-2ubuntu0.20.04
ubuntu-keyring2020.02.11.4
util-linux2.34-0.1ubuntu9.1
xauth1:1.1-0ubuntu1
xz-utils5.2.4-1ubuntu1
yarn1.22.15-1
zlib1g1:1.2.11.dfsg-2ubuntu1.2

View File

@@ -26,9 +26,10 @@ available_architectures:
- { arch: "{{ arch_armhf }}", tag: "arm32v7-latest"}
# development version
development_versions: false
development_versions: true
development_versions_items:
- { tag: "latest", desc: "Stable releases" }
- { tag: "focal", desc: "Stable releases, on a focal baseiamge" }
# container parameters
common_param_env_vars_enabled: true
@@ -51,7 +52,6 @@ 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,13 +75,7 @@ app_setup_block: |
# changelog
changelogs:
- { date: "05.10.22:", desc: "Install recommended deps to maintain parity with the older images." }
- { date: "29.09.22:", desc: "Rebase to jammy, switch to s6v3. Fix chown logic to skip `/config/workspace` contents." }
- { 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: "12.07.21:", desc: "Rebase to focal" }
- { 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`." }

View File

@@ -17,15 +17,6 @@ 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
# fix permissions (ignore contents of /config/workspace)
find /config -path /config/workspace -prune -o -exec chown abc:abc {} +
chown abc:abc /config/workspace
chmod 700 /config/.ssh
if [ -n "$(ls -A /config/.ssh)" ]; then
chmod 600 /config/.ssh/*
fi
# permissions
chown -R abc:abc \
/config

View File

@@ -1 +0,0 @@
oneshot

View File

@@ -1 +0,0 @@
/etc/s6-overlay/s6-rc.d/init-code-server/run

View File

@@ -1,26 +0,0 @@
#!/usr/bin/with-contenv bash
if [ -n "${PASSWORD}" ] || [ -n "${HASHED_PASSWORD}" ]; then
AUTH="password"
else
AUTH="none"
echo "starting with no password"
fi
if [ -z ${PROXY_DOMAIN+x} ]; then
PROXY_DOMAIN_ARG=""
else
PROXY_DOMAIN_ARG="--proxy-domain=${PROXY_DOMAIN}"
fi
exec \
s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z 127.0.0.1 8443" \
s6-setuidgid abc \
/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}" \
"${DEFAULT_WORKSPACE:-/config/workspace}"

View File

@@ -1 +0,0 @@
longrun

View File

@@ -0,0 +1,25 @@
#!/usr/bin/with-contenv bash
if [ -n "${PASSWORD}" ] || [ -n "${HASHED_PASSWORD}" ]; then
AUTH="password"
else
AUTH="none"
echo "starting with no password"
fi
if [ -z ${PROXY_DOMAIN+x} ]; then
PROXY_DOMAIN_ARG=""
else
PROXY_DOMAIN_ARG="--proxy-domain=${PROXY_DOMAIN}"
fi
exec \
s6-setuidgid abc \
/usr/local/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

View File

@@ -1,10 +0,0 @@
#!/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