mirror of
https://github.com/linuxserver/docker-code-server
synced 2025-06-26 18:27:40 +00:00
Compare commits
28 Commits
v3.10.2-ls
...
v3.12.0-ls
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d418e2444a | ||
|
|
ad2469e77d | ||
|
|
580ad0130e | ||
|
|
aa8b978f9a | ||
|
|
7fe76cb84f | ||
|
|
44f7b9fc5f | ||
|
|
442dac7b54 | ||
|
|
2ef2329327 | ||
|
|
e95b42b57a | ||
|
|
2dee5b2a47 | ||
|
|
17e0bbf080 | ||
|
|
a9ea1fe773 | ||
|
|
323745a36d | ||
|
|
17af5070b3 | ||
|
|
514f668726 | ||
|
|
a5fa8c5058 | ||
|
|
3e5681a624 | ||
|
|
d721fd11f9 | ||
|
|
d76a6d56cd | ||
|
|
a1608a1d3c | ||
|
|
b54982550b | ||
|
|
d1ae5a93d7 | ||
|
|
2a65149f2e | ||
|
|
074dafc216 | ||
|
|
34f67cb087 | ||
|
|
dcd097edab | ||
|
|
0d50ead3d7 | ||
|
|
fa2f58a1b0 |
20
.editorconfig
Executable file
20
.editorconfig
Executable file
@@ -0,0 +1,20 @@
|
||||
# This file is globally distributed to all container image projects from
|
||||
# https://github.com/linuxserver/docker-jenkins-builder/blob/master/.editorconfig
|
||||
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
# Unix-style newlines with a newline ending every file
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
# trim_trailing_whitespace may cause unintended issues and should not be globally set true
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[{Dockerfile*,**.yml}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[{**.sh,root/etc/cont-init.d/**,root/etc/services.d/**}]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
2
.github/CONTRIBUTING.md
vendored
2
.github/CONTRIBUTING.md
vendored
@@ -4,7 +4,7 @@
|
||||
|
||||
* While contributing make sure to make all your changes before creating a Pull Request, as our pipeline builds each commit after the PR is open.
|
||||
* Read, and fill the Pull Request template
|
||||
* If this is a fix for a typo in code or documentation in the README please file an issue
|
||||
* If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR
|
||||
* If the PR is addressing an existing issue include, closes #\<issue number>, in the body of the PR commit message
|
||||
* If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://discord.gg/YWrKVTn)
|
||||
|
||||
|
||||
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -6,7 +6,7 @@
|
||||
|
||||
<!--- Before submitting a pull request please check the following -->
|
||||
|
||||
<!--- If this is a fix for a typo in code or documentation in the README please file an issue and let us sort it out we do not need a PR -->
|
||||
<!--- If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR -->
|
||||
<!--- Ask yourself if this modification is something the whole userbase will benefit from, if this is a specific change for corner case functionality or plugins please look at making a Docker Mod or local script https://blog.linuxserver.io/2019/09/14/customizing-our-containers/ -->
|
||||
<!--- That if the PR is addressing an existing issue include, closes #<issue number> , in the body of the PR commit message -->
|
||||
<!--- You have included links to any files / patches etc your PR may be using in the body of the PR commit message -->
|
||||
|
||||
2
.github/workflows/stale.yml
vendored
2
.github/workflows/stale.yml
vendored
@@ -10,7 +10,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/stale@v1
|
||||
- uses: actions/stale@v3
|
||||
with:
|
||||
stale-issue-message: "This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
|
||||
stale-pr-message: "This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
|
||||
|
||||
@@ -16,7 +16,7 @@ RUN \
|
||||
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_12.x bionic main' \
|
||||
echo 'deb https://deb.nodesource.com/node_14.x bionic 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' \
|
||||
|
||||
@@ -16,7 +16,7 @@ RUN \
|
||||
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_12.x bionic main' \
|
||||
echo 'deb https://deb.nodesource.com/node_14.x bionic 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' \
|
||||
|
||||
@@ -16,7 +16,7 @@ RUN \
|
||||
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_12.x bionic main' \
|
||||
echo 'deb https://deb.nodesource.com/node_14.x bionic 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' \
|
||||
|
||||
133
Jenkinsfile
vendored
133
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'
|
||||
@@ -55,7 +56,7 @@ pipeline {
|
||||
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT
|
||||
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/'
|
||||
env.PULL_REQUEST = env.CHANGE_ID
|
||||
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.md ./.github/ISSUE_TEMPLATE/issue.feature.md ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/stale.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml'
|
||||
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.md ./.github/ISSUE_TEMPLATE/issue.feature.md ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/stale.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml'
|
||||
}
|
||||
script{
|
||||
env.LS_RELEASE_NUMBER = sh(
|
||||
@@ -116,6 +117,23 @@ pipeline {
|
||||
env.EXT_RELEASE_CLEAN = sh(
|
||||
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''',
|
||||
returnStdout: true).trim()
|
||||
|
||||
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+))?(.*)$/
|
||||
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')}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
println("SEMVER: ${env.SEMVER}")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -130,6 +148,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 +171,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 +194,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 {
|
||||
@@ -260,7 +281,6 @@ pipeline {
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||
git checkout -f master
|
||||
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
|
||||
for i in ${TEMPLATES_TO_DELETE}; do
|
||||
git rm "${i}"
|
||||
done
|
||||
@@ -370,13 +390,57 @@ 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/packages | jq -r '.[] | select(.name=="linuxserver/code-server") | .uuid')
|
||||
if [ -z "${PACKAGE_UUID}" ]; then
|
||||
echo "Adding package to Scarf.sh"
|
||||
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",\
|
||||
"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"}' \
|
||||
| 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"}]'
|
||||
'''
|
||||
}
|
||||
}
|
||||
/* ###############
|
||||
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 {
|
||||
@@ -401,7 +465,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 {
|
||||
@@ -506,7 +573,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}
|
||||
@@ -521,6 +588,15 @@ pipeline {
|
||||
apt list -qq --installed | sed "s#/.*now ##g" | cut -d" " -f1 > /tmp/package_versions.txt && \
|
||||
sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \
|
||||
chmod 777 /tmp/package_versions.txt'
|
||||
elif [ "${DIST_IMAGE}" == "fedora" ]; then
|
||||
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
|
||||
rpm -qa > /tmp/package_versions.txt && \
|
||||
sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \
|
||||
chmod 777 /tmp/package_versions.txt'
|
||||
elif [ "${DIST_IMAGE}" == "arch" ]; then
|
||||
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
|
||||
pacman -Q > /tmp/package_versions.txt && \
|
||||
chmod 777 /tmp/package_versions.txt'
|
||||
fi
|
||||
NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )
|
||||
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
|
||||
@@ -558,7 +634,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}
|
||||
@@ -582,7 +658,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}
|
||||
@@ -657,6 +733,12 @@ pipeline {
|
||||
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
||||
usernameVariable: 'DOCKERUSER',
|
||||
passwordVariable: 'DOCKERPASS'
|
||||
],
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: 'Quay.io-Robot',
|
||||
usernameVariable: 'QUAYUSER',
|
||||
passwordVariable: 'QUAYPASS'
|
||||
]
|
||||
]) {
|
||||
retry(5) {
|
||||
@@ -665,22 +747,26 @@ 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}
|
||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
|
||||
docker push ${PUSHIMAGE}:latest
|
||||
docker push ${PUSHIMAGE}:${META_TAG}
|
||||
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
||||
docker push ${PUSHIMAGE}:${SEMVER}
|
||||
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 || :
|
||||
${DELETEIMAGE}:latest \
|
||||
${DELETEIMAGE}:${SEMVER} || :
|
||||
done
|
||||
'''
|
||||
}
|
||||
@@ -699,6 +785,12 @@ pipeline {
|
||||
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
||||
usernameVariable: 'DOCKERUSER',
|
||||
passwordVariable: 'DOCKERPASS'
|
||||
],
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: 'Quay.io-Robot',
|
||||
usernameVariable: 'QUAYUSER',
|
||||
passwordVariable: 'QUAYPASS'
|
||||
]
|
||||
]) {
|
||||
retry(5) {
|
||||
@@ -707,13 +799,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}
|
||||
@@ -723,6 +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}
|
||||
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}
|
||||
@@ -732,6 +828,9 @@ pipeline {
|
||||
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||
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
|
||||
@@ -744,24 +843,32 @@ 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
|
||||
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}
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}
|
||||
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 \
|
||||
${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} || :
|
||||
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} \
|
||||
${DELETEIMAGE}:arm64v8-${SEMVER} || :
|
||||
done
|
||||
docker rmi \
|
||||
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
|
||||
|
||||
22
README.md
22
README.md
@@ -33,7 +33,7 @@ Find us at:
|
||||
[](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://microbadger.com/images/linuxserver/code-server "Get your own version badge on microbadger.com")
|
||||
[](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/)
|
||||
@@ -53,7 +53,7 @@ Find us at:
|
||||
|
||||
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 `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` 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:
|
||||
|
||||
@@ -91,16 +91,14 @@ How to create the [hashed password](https://github.com/cdr/code-server/blob/mast
|
||||
|
||||
Here are some example snippets to help you get started creating a container.
|
||||
|
||||
### docker-compose ([recommended](https://docs.linuxserver.io/general/docker-compose))
|
||||
|
||||
Compatible with docker-compose v2 schemas.
|
||||
### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
|
||||
|
||||
```yaml
|
||||
---
|
||||
version: "2.1"
|
||||
services:
|
||||
code-server:
|
||||
image: ghcr.io/linuxserver/code-server
|
||||
image: lscr.io/linuxserver/code-server
|
||||
container_name: code-server
|
||||
environment:
|
||||
- PUID=1000
|
||||
@@ -118,7 +116,7 @@ services:
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
### docker cli
|
||||
### docker cli ([click here for more info](https://docs.docker.com/engine/reference/commandline/cli/))
|
||||
|
||||
```bash
|
||||
docker run -d \
|
||||
@@ -134,7 +132,7 @@ docker run -d \
|
||||
-p 8443:8443 \
|
||||
-v /path/to/appdata/config:/config \
|
||||
--restart unless-stopped \
|
||||
ghcr.io/linuxserver/code-server
|
||||
lscr.io/linuxserver/code-server
|
||||
```
|
||||
|
||||
## Parameters
|
||||
@@ -197,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" }}' ghcr.io/linuxserver/code-server`
|
||||
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/code-server`
|
||||
|
||||
## Updating Info
|
||||
|
||||
@@ -215,7 +213,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`
|
||||
* 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)
|
||||
@@ -250,7 +248,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`
|
||||
@@ -263,6 +261,8 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
|
||||
|
||||
## Versions
|
||||
|
||||
* **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`.
|
||||
* **23.12.20:** - Allow setting sudo password via hash using env var `SUDO_PASSWORD_HASH`.
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
adduser3.116ubuntu1
|
||||
apt1.6.13
|
||||
apt-utils1.6.13
|
||||
base-files10.1ubuntu2.10
|
||||
apt1.6.14
|
||||
apt-utils1.6.14
|
||||
base-files10.1ubuntu2.11
|
||||
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
|
||||
ca-certificates20210119~18.04.2
|
||||
coreutils8.28-1ubuntu1
|
||||
curl7.58.0-2ubuntu3.13
|
||||
curl7.58.0-2ubuntu3.16
|
||||
dash0.5.8-2.10
|
||||
debconf1.5.66ubuntu1
|
||||
debianutils4.8.4
|
||||
@@ -20,8 +20,8 @@ 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
|
||||
git1:2.17.1-1ubuntu0.9
|
||||
git-man1:2.17.1-1ubuntu0.9
|
||||
gnupg2.2.4-1ubuntu1.4
|
||||
gnupg-l10n2.2.4-1ubuntu1.4
|
||||
gnupg-utils2.2.4-1ubuntu1.4
|
||||
@@ -33,15 +33,15 @@ 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
|
||||
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.13
|
||||
libapt-pkg5.01.6.13
|
||||
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
|
||||
@@ -54,8 +54,8 @@ 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.13
|
||||
libcurl47.58.0-2ubuntu3.13
|
||||
libcurl3-gnutls7.58.0-2ubuntu3.16
|
||||
libcurl47.58.0-2ubuntu3.16
|
||||
libdb5.35.3.28-13.1ubuntu1.1
|
||||
libdebconfclient00.213ubuntu1
|
||||
libedit23.1-20170329-1
|
||||
@@ -65,18 +65,18 @@ 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
|
||||
libgcrypt201.8.1-4ubuntu1.3
|
||||
libgdbm51.14.1-6
|
||||
libgdbm-compat41.14.1-6
|
||||
libgmp102:6.1.2+dfsg-2
|
||||
libgnutls303.5.18-1ubuntu1.4
|
||||
libgnutls303.5.18-1ubuntu1.5
|
||||
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-1ubuntu0.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
|
||||
@@ -95,7 +95,7 @@ libmagic-mgc1:5.32-2ubuntu0.4
|
||||
libmount12.31.1-0.4ubuntu3.7
|
||||
libncurses56.1-1ubuntu1.18.04
|
||||
libncursesw56.1-1ubuntu1.18.04
|
||||
libnettle63.4-1ubuntu0.1
|
||||
libnettle63.4.1-0ubuntu0.18.04.1
|
||||
libnghttp2-141.30.0-1ubuntu1
|
||||
libnpth01.5-3
|
||||
libonig46.7.0-1
|
||||
@@ -125,13 +125,13 @@ 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
|
||||
libssl1.0.01.0.2n-1ubuntu5.7
|
||||
libssl1.11.1.1-1ubuntu2.1~18.04.13
|
||||
libstdc++68.4.0-1ubuntu1~18.04
|
||||
libsystemd0237-3ubuntu10.47
|
||||
libsystemd0237-3ubuntu10.52
|
||||
libtasn1-64.13-2
|
||||
libtinfo56.1-1ubuntu1.18.04
|
||||
libudev1237-3ubuntu10.47
|
||||
libudev1237-3ubuntu10.52
|
||||
libunistring20.9.9-0ubuntu2
|
||||
libuuid12.31.1-0.4ubuntu3.7
|
||||
libwind0-heimdal7.5.0+dfsg-1
|
||||
@@ -155,9 +155,9 @@ ncurses-base6.1-1ubuntu1.18.04
|
||||
ncurses-bin6.1-1ubuntu1.18.04
|
||||
netbase5.4
|
||||
net-tools1.60+git20161116.90da8a0-1ubuntu1
|
||||
nodejs12.22.1-1nodesource1
|
||||
openssh-client1:7.6p1-4ubuntu0.3
|
||||
openssl1.1.1-1ubuntu2.1~18.04.9
|
||||
nodejs14.18.1-1nodesource1
|
||||
openssh-client1:7.6p1-4ubuntu0.5
|
||||
openssl1.1.1-1ubuntu2.1~18.04.13
|
||||
passwd1:4.5-1ubuntu2
|
||||
patch2.7.6-2ubuntu1.1
|
||||
perl5.26.1-6ubuntu0.5
|
||||
@@ -176,10 +176,10 @@ sensible-utils0.0.12
|
||||
sudo1.8.21p2-3ubuntu1.4
|
||||
sysvinit-utils2.88dsf-59.10ubuntu1
|
||||
tar1.29b-2ubuntu0.2
|
||||
tzdata2021a-0ubuntu0.18.04
|
||||
tzdata2021a-2ubuntu0.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
|
||||
yarn1.22.15-1
|
||||
zlib1g1:1.2.11.dfsg-0ubuntu2
|
||||
|
||||
@@ -75,6 +75,8 @@ app_setup_block: |
|
||||
|
||||
# changelog
|
||||
changelogs:
|
||||
- { 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`." }
|
||||
- { date: "23.12.20:", desc: "Allow setting sudo password via hash using env var `SUDO_PASSWORD_HASH`." }
|
||||
|
||||
@@ -18,5 +18,20 @@ if [ -n "${SUDO_PASSWORD}" ] || [ -n "${SUDO_PASSWORD_HASH}" ]; then
|
||||
fi
|
||||
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user