Compare commits

...

16 Commits

Author SHA1 Message Date
LinuxServer-CI
3de6bee22b Bot Updating Package Versions 2023-07-01 20:23:54 +00:00
LinuxServer-CI
0ae77a3f39 Bot Updating Templated Files 2023-07-01 20:20:04 +00:00
LinuxServer-CI
b47e34134c Bot Updating Templated Files 2023-07-01 20:18:40 +00:00
LinuxServer-CI
2f0fa20be3 Bot Updating Templated Files 2023-07-01 20:16:21 +00:00
LinuxServer-CI
e785f33bc1 Bot Updating Package Versions 2023-06-26 18:44:39 +00:00
LinuxServer-CI
d35b78301a Bot Updating Package Versions 2023-06-16 21:41:41 +00:00
LinuxServer-CI
624f63de3b Bot Updating Package Versions 2023-06-10 20:18:41 +00:00
LinuxServer-CI
8d3dd4a1b3 Bot Updating Package Versions 2023-06-03 20:16:54 +00:00
LinuxServer-CI
549e2e0208 Bot Updating Templated Files 2023-05-27 20:15:05 +00:00
LinuxServer-CI
8bc5a8902e Bot Updating Package Versions 2023-05-19 21:40:38 +00:00
LinuxServer-CI
1119a25e4c Bot Updating Package Versions 2023-05-06 20:15:55 +00:00
LinuxServer-CI
675ec78a74 Bot Updating Package Versions 2023-04-29 15:20:49 -05:00
LinuxServer-CI
16d7bd96af Bot Updating Templated Files 2023-04-29 15:17:11 -05:00
LinuxServer-CI
66da21de61 Bot Updating Templated Files 2023-04-29 15:15:34 -05:00
LinuxServer-CI
b8bcdc44b7 Bot Updating Package Versions 2023-04-21 18:45:35 +00:00
LinuxServer-CI
c2f09a6bb3 Bot Updating Package Versions 2023-04-15 15:16:58 -05:00
11 changed files with 286 additions and 328 deletions

View File

@@ -53,7 +53,6 @@ body:
options: options:
- x86-64 - x86-64
- arm64 - arm64
- armhf
validations: validations:
required: true required: true
- type: textarea - type: textarea

View File

@@ -2,9 +2,11 @@ name: Issue & PR Tracker
on: on:
issues: issues:
types: [opened,reopened,labeled,unlabeled] types: [opened,reopened,labeled,unlabeled,closed]
pull_request_target: pull_request_target:
types: [opened,reopened,review_requested,review_request_removed,labeled,unlabeled] types: [opened,reopened,review_requested,review_request_removed,labeled,unlabeled,closed]
pull_request_review:
types: [submitted,edited,dismissed]
jobs: jobs:
manage-project: manage-project:

View File

@@ -14,9 +14,11 @@ jobs:
run: | run: |
if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_MASTER }}" ]; then if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_MASTER }}" ]; then
echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_MASTER is set; skipping trigger. ****" echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_MASTER is set; skipping trigger. ****"
echo "Github secret \`PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_MASTER\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi 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 master branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_MASTER\". ****"
echo "External trigger running off of master branch. To disable this trigger, set a Github secret named \`PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_MASTER\`" >> $GITHUB_STEP_SUMMARY
echo "**** Retrieving external version ****" 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 -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 if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
@@ -30,6 +32,7 @@ jobs:
fi fi
EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g') EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
echo "**** External version: ${EXT_RELEASE} ****" echo "**** External version: ${EXT_RELEASE} ****"
echo "External version: ${EXT_RELEASE}" >> $GITHUB_STEP_SUMMARY
echo "**** Retrieving last pushed version ****" echo "**** Retrieving last pushed version ****"
image="linuxserver/code-server" image="linuxserver/code-server"
tag="latest" tag="latest"
@@ -65,14 +68,18 @@ jobs:
exit 1 exit 1
fi fi
echo "**** Last pushed version: ${IMAGE_VERSION} ****" echo "**** Last pushed version: ${IMAGE_VERSION} ****"
echo "Last pushed version: ${IMAGE_VERSION}" >> $GITHUB_STEP_SUMMARY
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
echo "**** Version ${EXT_RELEASE} already pushed, exiting ****" echo "**** Version ${EXT_RELEASE} already pushed, exiting ****"
echo "Version ${EXT_RELEASE} already pushed, exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "**** New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting ****" echo "**** New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting ****"
echo "New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
else else
echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****" echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****"
echo "New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build" >> $GITHUB_STEP_SUMMARY
response=$(curl -iX POST \ 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/master/buildWithParameters?PACKAGE_CHECK=false \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
@@ -82,6 +89,7 @@ jobs:
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url') buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}" buildurl="${buildurl%$'\r'}"
echo "**** Jenkins job build url: ${buildurl} ****" echo "**** Jenkins job build url: ${buildurl} ****"
echo "Jenkins job build url: ${buildurl}" >> $GITHUB_STEP_SUMMARY
echo "**** Attempting to change the Jenkins job description ****" echo "**** Attempting to change the Jenkins job description ****"
curl -iX POST \ curl -iX POST \
"${buildurl}submitDescription" \ "${buildurl}submitDescription" \

View File

@@ -2,7 +2,7 @@ name: External Trigger Scheduler
on: on:
schedule: schedule:
- cron: '41 * * * *' - cron: '32 * * * *'
workflow_dispatch: workflow_dispatch:
jobs: jobs:
@@ -17,18 +17,18 @@ jobs:
run: | run: |
echo "**** Branches found: ****" echo "**** Branches found: ****"
git for-each-ref --format='%(refname:short)' refs/remotes git for-each-ref --format='%(refname:short)' refs/remotes
echo "**** Pulling the yq docker image ****"
docker pull ghcr.io/linuxserver/yq
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes) for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do do
br=$(echo "$br" | sed 's|origin/||g') br=$(echo "$br" | sed 's|origin/||g')
echo "**** Evaluating branch ${br} ****" echo "**** Evaluating branch ${br} ****"
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-code-server/${br}/jenkins-vars.yml \ ls_jenkins_vars=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-code-server/${br}/jenkins-vars.yml)
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch) ls_branch=$(echo "${ls_jenkins_vars}" | yq -r '.ls_branch')
if [ "$br" == "$ls_branch" ]; then ls_trigger=$(echo "${ls_jenkins_vars}" | yq -r '.external_type')
echo "**** Branch ${br} appears to be live; checking workflow. ****" if [[ "${br}" == "${ls_branch}" ]] && [[ "${ls_trigger}" != "os" ]]; then
echo "**** Branch ${br} appears to be live and trigger is not os; checking workflow. ****"
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-code-server/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-code-server/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then
echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****." echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****."
echo "Triggering external trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY
curl -iX POST \ curl -iX POST \
-H "Authorization: token ${{ secrets.CR_PAT }}" \ -H "Authorization: token ${{ secrets.CR_PAT }}" \
-H "Accept: application/vnd.github.v3+json" \ -H "Accept: application/vnd.github.v3+json" \
@@ -36,8 +36,10 @@ jobs:
https://api.github.com/repos/linuxserver/docker-code-server/actions/workflows/external_trigger.yml/dispatches https://api.github.com/repos/linuxserver/docker-code-server/actions/workflows/external_trigger.yml/dispatches
else else
echo "**** Workflow doesn't exist; skipping trigger. ****" echo "**** Workflow doesn't exist; skipping trigger. ****"
echo "Skipping branch ${br} due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY
fi fi
else else
echo "**** ${br} appears to be a dev branch; skipping trigger. ****" echo "**** ${br} is either a dev branch, or has no external version; skipping trigger. ****"
echo "Skipping branch ${br} due to being detected as dev branch or having no external version." >> $GITHUB_STEP_SUMMARY
fi fi
done done

View File

@@ -14,13 +14,16 @@ jobs:
run: | run: |
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_CODE_SERVER_MASTER }}" ]; then if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_CODE_SERVER_MASTER }}" ]; then
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_CODE_SERVER_MASTER is set; skipping trigger. ****" echo "**** Github secret PAUSE_PACKAGE_TRIGGER_CODE_SERVER_MASTER is set; skipping trigger. ****"
echo "Github secret \`PAUSE_PACKAGE_TRIGGER_CODE_SERVER_MASTER\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi 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/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****" echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****"
echo "There already seems to be an active build on Jenkins; skipping package trigger" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi 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 master branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_CODE_SERVER_MASTER\". ****"
echo "Package trigger running off of master branch. To disable, set a Github secret named \`PAUSE_PACKAGE_TRIGGER_CODE_SERVER_MASTER\`" >> $GITHUB_STEP_SUMMARY
response=$(curl -iX POST \ 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/master/buildWithParameters?PACKAGE_CHECK=true \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
@@ -30,6 +33,7 @@ jobs:
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url') buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}" buildurl="${buildurl%$'\r'}"
echo "**** Jenkins job build url: ${buildurl} ****" echo "**** Jenkins job build url: ${buildurl} ****"
echo "Jenkins job build url: ${buildurl}" >> $GITHUB_STEP_SUMMARY
echo "**** Attempting to change the Jenkins job description ****" echo "**** Attempting to change the Jenkins job description ****"
curl -iX POST \ curl -iX POST \
"${buildurl}submitDescription" \ "${buildurl}submitDescription" \

View File

@@ -17,18 +17,16 @@ jobs:
run: | run: |
echo "**** Branches found: ****" echo "**** Branches found: ****"
git for-each-ref --format='%(refname:short)' refs/remotes git for-each-ref --format='%(refname:short)' refs/remotes
echo "**** Pulling the yq docker image ****"
docker pull ghcr.io/linuxserver/yq
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes) for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do do
br=$(echo "$br" | sed 's|origin/||g') br=$(echo "$br" | sed 's|origin/||g')
echo "**** Evaluating branch ${br} ****" echo "**** Evaluating branch ${br} ****"
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-code-server/${br}/jenkins-vars.yml \ ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-code-server/${br}/jenkins-vars.yml | yq -r '.ls_branch')
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch)
if [ "${br}" == "${ls_branch}" ]; then if [ "${br}" == "${ls_branch}" ]; then
echo "**** Branch ${br} appears to be live; checking workflow. ****" echo "**** Branch ${br} appears to be live; checking workflow. ****"
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-code-server/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-code-server/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then
echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****" echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****"
echo "Triggering package trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY
triggered_branches="${triggered_branches}${br} " triggered_branches="${triggered_branches}${br} "
curl -iX POST \ curl -iX POST \
-H "Authorization: token ${{ secrets.CR_PAT }}" \ -H "Authorization: token ${{ secrets.CR_PAT }}" \
@@ -38,9 +36,11 @@ jobs:
sleep 30 sleep 30
else else
echo "**** Workflow doesn't exist; skipping trigger. ****" echo "**** Workflow doesn't exist; skipping trigger. ****"
echo "Skipping branch ${br} due to no package trigger workflow present." >> $GITHUB_STEP_SUMMARY
fi fi
else else
echo "**** ${br} appears to be a dev branch; skipping trigger. ****" echo "**** ${br} appears to be a dev branch; skipping trigger. ****"
echo "Skipping branch ${br} due to being detected as dev branch." >> $GITHUB_STEP_SUMMARY
fi fi
done done
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****" echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"

View File

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

261
Jenkinsfile vendored
View File

@@ -39,10 +39,16 @@ pipeline {
// Setup all the basic environment variables needed for the build // Setup all the basic environment variables needed for the build
stage("Set ENV Variables base"){ stage("Set ENV Variables base"){
steps{ steps{
sh '''#! /bin/bash
containers=$(docker ps -aq)
if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
docker system prune -af --volumes || : '''
script{ script{
env.EXIT_STATUS = '' env.EXIT_STATUS = ''
env.LS_RELEASE = sh( env.LS_RELEASE = sh(
script: '''docker run --rm ghcr.io/linuxserver/alexeiled-skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':latest 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''', script: '''docker run --rm quay.io/skopeo/stable:v1 inspect docker://ghcr.io/${LS_USER}/${CONTAINER_NAME}:latest 2>/dev/null | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
returnStdout: true).trim() returnStdout: true).trim()
env.LS_RELEASE_NOTES = sh( env.LS_RELEASE_NOTES = sh(
script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''', script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
@@ -157,7 +163,7 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} }
@@ -180,7 +186,7 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} }
@@ -203,12 +209,12 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
} }
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
@@ -228,7 +234,7 @@ pipeline {
script{ script{
env.SHELLCHECK_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/shellcheck-result.xml' env.SHELLCHECK_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/shellcheck-result.xml'
} }
sh '''curl -sL https://raw.githubusercontent.com/linuxserver/docker-shellcheck/master/checkrun.sh | /bin/bash''' sh '''curl -sL https://raw.githubusercontent.com/linuxserver/docker-jenkins-builder/master/checkrun.sh | /bin/bash'''
sh '''#! /bin/bash sh '''#! /bin/bash
docker run --rm \ docker run --rm \
-v ${WORKSPACE}:/mnt \ -v ${WORKSPACE}:/mnt \
@@ -274,7 +280,7 @@ pipeline {
echo "Jenkinsfile is up to date." echo "Jenkinsfile is up to date."
fi fi
# Stage 2 - Delete old templates # Stage 2 - Delete old templates
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml" OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml Dockerfile.armhf"
for i in ${OLD_TEMPLATES}; do for i in ${OLD_TEMPLATES}; do
if [[ -f "${i}" ]]; then if [[ -f "${i}" ]]; then
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}" TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
@@ -310,12 +316,13 @@ pipeline {
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || : cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
cd ${TEMPDIR}/repo/${LS_REPO}/ cd ${TEMPDIR}/repo/${LS_REPO}/
if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
echo ".jenkins-external" >> .gitignore echo ".jenkins-external" >> .gitignore
git add .gitignore git add .gitignore
fi fi
git add ${TEMPLATED_FILES} git add readme-vars.yml ${TEMPLATED_FILES}
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
@@ -336,6 +343,8 @@ pipeline {
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
fi fi
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then if [[ ("${BRANCH_NAME}" == "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/ cd ${TEMPDIR}/unraid/templates/
@@ -376,6 +385,26 @@ pipeline {
} }
} }
} }
// If this is a master build check the S6 service file perms
stage("Check S6 Service file Permissions"){
when {
branch "master"
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
steps {
script{
sh '''#! /bin/bash
WRONG_PERM=$(find ./ -path "./.git" -prune -o \\( -name "run" -o -name "finish" -o -name "check" \\) -not -perm -u=x,g=x,o=x -print)
if [[ -n "${WRONG_PERM}" ]]; then
echo "The following S6 service files are missing the executable bit; canceling the faulty build: ${WRONG_PERM}"
exit 1
else
echo "S6 service file perms look good."
fi '''
}
}
}
/* ####################### /* #######################
GitLab Mirroring GitLab Mirroring
####################### */ ####################### */
@@ -407,8 +436,7 @@ pipeline {
} }
steps{ steps{
sh '''#! /bin/bash 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/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/code-server") | .uuid')
if [ -z "${PACKAGE_UUID}" ]; then if [ -z "${PACKAGE_UUID}" ]; then
echo "Adding package to Scarf.sh" echo "Adding package to Scarf.sh"
curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \ curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \
@@ -488,41 +516,6 @@ pipeline {
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
} }
} }
stage('Build ARMHF') {
agent {
label 'ARMHF'
}
steps {
echo "Running on node: ${NODE_NAME}"
echo 'Logging into Github'
sh '''#! /bin/bash
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
'''
sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.armhf"
sh "docker buildx build \
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
--label \"org.opencontainers.image.authors=linuxserver.io\" \
--label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-code-server/packages\" \
--label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-code-server\" \
--label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-code-server\" \
--label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \
--label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \
--label \"org.opencontainers.image.vendor=linuxserver.io\" \
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
--label \"org.opencontainers.image.title=Code-server\" \
--label \"org.opencontainers.image.description=[Code-server](https://coder.com) is VS Code running on a remote server, accessible through the browser. - Code on your Chromebook, tablet, and laptop with a consistent dev environment. - If you have a Windows or Mac workstation, more easily develop for Linux. - Take advantage of large cloud servers to speed up tests, compilations, downloads, and more. - Preserve battery life when you're on the go. - All intensive computation runs on your server. - You're no longer running excess instances of Chrome.\" \
--no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} --platform=linux/arm/v7 \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
retry(5) {
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
}
sh '''docker rmi \
${IMAGE}:arm32v7-${META_TAG} \
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
}
}
stage('Build ARM64') { stage('Build ARM64') {
agent { agent {
label 'ARM64' label 'ARM64'
@@ -553,9 +546,12 @@ pipeline {
retry(5) { retry(5) {
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}" sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
} }
sh '''docker rmi \ sh '''#! /bin/bash
${IMAGE}:arm64v8-${META_TAG} \ containers=$(docker ps -aq)
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :''' if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
docker system prune -af --volumes || : '''
} }
} }
} }
@@ -616,13 +612,6 @@ pipeline {
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
sh '''#! /bin/bash
echo "Packages were updated. Cleaning up the image and exiting."
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
docker rmi ${IMAGE}:amd64-${META_TAG}
else
docker rmi ${IMAGE}:${META_TAG}
fi'''
script{ script{
env.EXIT_STATUS = 'ABORTED' env.EXIT_STATUS = 'ABORTED'
} }
@@ -640,13 +629,6 @@ pipeline {
} }
} }
steps { steps {
sh '''#! /bin/bash
echo "There are no package updates. Cleaning up the image and exiting."
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
docker rmi ${IMAGE}:amd64-${META_TAG}
else
docker rmi ${IMAGE}:${META_TAG}
fi'''
script{ script{
env.EXIT_STATUS = 'ABORTED' env.EXIT_STATUS = 'ABORTED'
} }
@@ -668,14 +650,13 @@ pipeline {
]) { ]) {
script{ script{
env.CI_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/index.html' env.CI_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/index.html'
env.CI_JSON_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/report.json'
} }
sh '''#! /bin/bash sh '''#! /bin/bash
set -e set -e
docker pull ghcr.io/linuxserver/ci:latest docker pull ghcr.io/linuxserver/ci:latest
if [ "${MULTIARCH}" == "true" ]; then if [ "${MULTIARCH}" == "true" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
fi fi
docker run --rm \ docker run --rm \
@@ -694,8 +675,6 @@ pipeline {
-e WEB_SCREENSHOT=\"${CI_WEB}\" \ -e WEB_SCREENSHOT=\"${CI_WEB}\" \
-e WEB_AUTH=\"${CI_AUTH}\" \ -e WEB_AUTH=\"${CI_AUTH}\" \
-e WEB_PATH=\"${CI_WEBPATH}\" \ -e WEB_PATH=\"${CI_WEBPATH}\" \
-e DO_REGION="ams3" \
-e DO_BUCKET="lsio-ci" \
-t ghcr.io/linuxserver/ci:latest \ -t ghcr.io/linuxserver/ci:latest \
python3 test_build.py''' python3 test_build.py'''
} }
@@ -748,17 +727,6 @@ pipeline {
done done
''' '''
} }
sh '''#! /bin/bash
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
docker rmi \
${DELETEIMAGE}:${META_TAG} \
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
${DELETEIMAGE}:latest || :
if [ -n "${SEMVER}" ]; then
docker rmi ${DELETEIMAGE}:${SEMVER} || :
fi
done
'''
} }
} }
} }
@@ -791,8 +759,6 @@ pipeline {
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [ "${CI}" == "false" ]; then if [ "${CI}" == "false" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
fi fi
@@ -800,49 +766,47 @@ pipeline {
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-latest
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER} docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
fi fi
docker push ${MANIFESTIMAGE}:amd64-${META_TAG} docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
docker push ${MANIFESTIMAGE}:amd64-latest docker push ${MANIFESTIMAGE}:amd64-latest
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
docker push ${MANIFESTIMAGE}:arm32v7-latest
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker push ${MANIFESTIMAGE}:arm64v8-latest docker push ${MANIFESTIMAGE}:arm64v8-latest
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker push ${MANIFESTIMAGE}:amd64-${SEMVER} docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
fi fi
docker manifest push --purge ${MANIFESTIMAGE}:latest || : docker manifest push --purge ${MANIFESTIMAGE}:latest || :
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8 docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || : docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8 docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || : docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || :
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8 docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || : docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8 docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
fi fi
token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token')
digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-latest")
if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || :
docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest
fi
docker manifest push --purge ${MANIFESTIMAGE}:latest docker manifest push --purge ${MANIFESTIMAGE}:latest
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
@@ -852,29 +816,6 @@ pipeline {
done done
''' '''
} }
sh '''#! /bin/bash
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
docker rmi \
${DELETEIMAGE}:amd64-${META_TAG} \
${DELETEIMAGE}:amd64-latest \
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
${DELETEIMAGE}:arm32v7-${META_TAG} \
${DELETEIMAGE}:arm32v7-latest \
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
${DELETEIMAGE}:arm64v8-${META_TAG} \
${DELETEIMAGE}:arm64v8-latest \
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
if [ -n "${SEMVER}" ]; then
docker rmi \
${DELETEIMAGE}:amd64-${SEMVER} \
${DELETEIMAGE}:arm32v7-${SEMVER} \
${DELETEIMAGE}:arm64v8-${SEMVER} || :
fi
done
docker rmi \
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :
'''
} }
} }
} }
@@ -945,12 +886,78 @@ pipeline {
stage('Pull Request Comment') { stage('Pull Request Comment') {
when { when {
not {environment name: 'CHANGE_ID', value: ''} not {environment name: 'CHANGE_ID', value: ''}
environment name: 'CI', value: 'true'
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/issues/${PULL_REQUEST}/comments \ sh '''#! /bin/bash
-d '{"body": "I am a bot, here are the test results for this PR: \\n'${CI_URL}' \\n'${SHELLCHECK_URL}'"}' ''' # Function to retrieve JSON data from URL
get_json() {
local url="$1"
local response=$(curl -s "$url")
if [ $? -ne 0 ]; then
echo "Failed to retrieve JSON data from $url"
return 1
fi
local json=$(echo "$response" | jq .)
if [ $? -ne 0 ]; then
echo "Failed to parse JSON data from $url"
return 1
fi
echo "$json"
}
build_table() {
local data="$1"
# Get the keys in the JSON data
local keys=$(echo "$data" | jq -r 'to_entries | map(.key) | .[]')
# Check if keys are empty
if [ -z "$keys" ]; then
echo "JSON report data does not contain any keys or the report does not exist."
return 1
fi
# Build table header
local header="| Tag | Passed |\\n| --- | --- |\\n"
# Loop through the JSON data to build the table rows
local rows=""
for build in $keys; do
local status=$(echo "$data" | jq -r ".[\\"$build\\"].test_success")
if [ "$status" = "true" ]; then
status="✅"
else
status="❌"
fi
local row="| "$build" | "$status" |\\n"
rows="${rows}${row}"
done
local table="${header}${rows}"
local escaped_table=$(echo "$table" | sed 's/\"/\\\\"/g')
echo "$escaped_table"
}
if [[ "${CI}" = "true" ]]; then
# Retrieve JSON data from URL
data=$(get_json "$CI_JSON_URL")
# Create table from JSON data
table=$(build_table "$data")
echo -e "$table"
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
-d "{\\"body\\": \\"I am a bot, here are the test results for this PR: \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"
else
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
-d "{\\"body\\": \\"I am a bot, here is the pushed image/manifest for this PR: \\n\\n\\`${GITHUBIMAGE}:${META_TAG}\\`\\"}"
fi
'''
} }
} }
} }
@@ -976,6 +983,14 @@ pipeline {
} }
} }
cleanup { cleanup {
sh '''#! /bin/bash
echo "Performing docker system prune!!"
containers=$(docker ps -aq)
if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
docker system prune -af --volumes || :
'''
cleanWs() cleanWs()
} }
} }

View File

@@ -62,7 +62,7 @@ The architectures supported by this image are:
| :----: | :----: | ---- | | :----: | :----: | ---- |
| x86-64 | ✅ | amd64-\<version tag\> | | x86-64 | ✅ | amd64-\<version tag\> |
| arm64 | ✅ | arm64v8-\<version tag\> | | arm64 | ✅ | arm64v8-\<version tag\> |
| armhf | | arm32v7-\<version tag\> | | armhf | | |
## Application Setup ## Application Setup
@@ -257,6 +257,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions ## Versions
* **01.07.23:** - Deprecate armhf. As announced [here](https://www.linuxserver.io/blog/a-farewell-to-arm-hf)
* **05.10.22:** - Install recommended deps to maintain parity with the older images. * **05.10.22:** - Install recommended deps to maintain parity with the older images.
* **29.09.22:** - Rebase to jammy, switch to s6v3. Fix chown logic to skip `/config/workspace` contents. * **29.09.22:** - Rebase to jammy, switch to s6v3. Fix chown logic to skip `/config/workspace` contents.
* **20.02.22:** - Install using the official tarballs. * **20.02.22:** - Install using the official tarballs.

View File

@@ -9,7 +9,7 @@ NAME VERSION
@google-cloud/promisify 2.0.4 npm @google-cloud/promisify 2.0.4 npm
@grpc/grpc-js 1.6.12 npm @grpc/grpc-js 1.6.12 npm
@grpc/proto-loader 0.6.13 npm @grpc/proto-loader 0.6.13 npm
@grpc/proto-loader 0.7.5 npm @grpc/proto-loader 0.7.7 npm
@mapbox/node-pre-gyp 1.0.10 npm @mapbox/node-pre-gyp 1.0.10 npm
@microsoft/1ds-core-js 3.2.3 npm @microsoft/1ds-core-js 3.2.3 npm
@microsoft/1ds-post-js 3.2.3 npm @microsoft/1ds-post-js 3.2.3 npm
@@ -31,26 +31,29 @@ NAME VERSION
@tootallnate/once 1.1.2 npm @tootallnate/once 1.1.2 npm
@tootallnate/once 2.0.0 npm @tootallnate/once 2.0.0 npm
@types/long 4.0.2 npm @types/long 4.0.2 npm
@types/node 16.11.41 npm @types/node 16.18.18 npm
@vscode/iconv-lite-umd 0.7.0 npm @vscode/iconv-lite-umd 0.7.0 npm
@vscode/ripgrep 1.14.2 npm @vscode/proxy-agent 0.13.2 npm
@vscode/ripgrep 1.15.3 npm
@vscode/spdlog 0.13.10 npm
@vscode/vscode-languagedetection 1.0.21 npm @vscode/vscode-languagedetection 1.0.21 npm
abbrev 1.1.1 npm abbrev 1.1.1 npm
abort-controller 3.0.0 npm abort-controller 3.0.0 npm
accepts 1.3.7 npm accepts 1.3.7 npm
acorn 8.7.0 npm acorn 8.8.2 npm
acorn-walk 8.2.0 npm acorn-walk 8.2.0 npm
adduser 3.118ubuntu5 deb adduser 3.118ubuntu5 deb
agent-base 4.2.0 npm agent-base 4.2.0 npm
agent-base 4.3.0 npm agent-base 4.3.0 npm
agent-base 6.0.2 npm agent-base 6.0.2 npm
agent-base 7.1.0 npm
ansi-regex 2.1.1 npm ansi-regex 2.1.1 npm
ansi-regex 5.0.1 npm ansi-regex 5.0.1 npm
ansi-styles 4.3.0 npm ansi-styles 4.3.0 npm
aproba 1.2.0 npm aproba 1.2.0 npm
aproba 2.0.0 npm aproba 2.0.0 npm
apt 2.4.8 deb apt 2.4.9 deb
apt-utils 2.4.8 deb apt-utils 2.4.9 deb
are-we-there-yet 1.1.7 npm are-we-there-yet 1.1.7 npm
are-we-there-yet 2.0.0 npm are-we-there-yet 2.0.0 npm
argon2 0.30.3 npm argon2 0.30.3 npm
@@ -63,6 +66,7 @@ base-files 12ubuntu4.3
base-passwd 3.5.52build1 deb base-passwd 3.5.52build1 deb
base64-js 1.5.1 npm base64-js 1.5.1 npm
bash 5.1-6ubuntu1 deb bash 5.1-6ubuntu1 deb
basic-ftp 5.0.3 npm
bat 1.0.0 npm bat 1.0.0 npm
beep-boop 1.2.3 npm beep-boop 1.2.3 npm
bignumber.js 9.1.1 npm bignumber.js 9.1.1 npm
@@ -81,16 +85,16 @@ buffer-fill 1.0.0
builtin-notebook-renderers 1.0.0 npm builtin-notebook-renderers 1.0.0 npm
bytes 3.0.0 npm bytes 3.0.0 npm
bytes 3.1.0 npm bytes 3.1.0 npm
bytes 3.1.1 npm ca-certificates 20230311ubuntu0.22.04.1 deb
ca-certificates 20211016ubuntu0.22.04.1 deb
call-bind 1.0.2 npm call-bind 1.0.2 npm
charenc 0.0.2 npm charenc 0.0.2 npm
chownr 1.1.4 npm chownr 1.1.4 npm
chownr 2.0.0 npm chownr 2.0.0 npm
cliui 7.0.4 npm cliui 7.0.4 npm
cliui 8.0.1 npm
clojure 1.0.0 npm clojure 1.0.0 npm
code-point-at 1.1.0 npm code-point-at 1.1.0 npm
code-server 4.11.0 npm code-server 4.14.1 npm
coffeescript 1.0.0 npm coffeescript 1.0.0 npm
color-convert 2.0.1 npm color-convert 2.0.1 npm
color-name 1.1.4 npm color-name 1.1.4 npm
@@ -106,7 +110,6 @@ cookie 0.4.0
cookie-parser 1.4.5 npm cookie-parser 1.4.5 npm
cookie-signature 1.0.6 npm cookie-signature 1.0.6 npm
core-util-is 1.0.2 npm core-util-is 1.0.2 npm
core-util-is 1.0.3 npm
coreutils 8.32-4.1ubuntu1 deb coreutils 8.32-4.1ubuntu1 deb
cpp 1.0.0 npm cpp 1.0.0 npm
crypt 0.0.2 npm crypt 0.0.2 npm
@@ -116,7 +119,7 @@ css-language-features 1.0.0
curl 7.81.0-1ubuntu1.10 deb curl 7.81.0-1ubuntu1.10 deb
dart 1.0.0 npm dart 1.0.0 npm
dash 0.5.11+git20210903+057cd650a4ed-3build1 deb dash 0.5.11+git20210903+057cd650a4ed-3build1 deb
data-uri-to-buffer 3.0.1 npm data-uri-to-buffer 5.0.1 npm
debconf 1.5.79ubuntu1 deb debconf 1.5.79ubuntu1 deb
debianutils 5.5-1ubuntu2 deb debianutils 5.5-1ubuntu2 deb
debug 2.6.9 npm debug 2.6.9 npm
@@ -129,7 +132,7 @@ debug-server-ready 1.0.0
decompress-response 6.0.0 npm decompress-response 6.0.0 npm
deep-extend 0.6.0 npm deep-extend 0.6.0 npm
deep-is 0.1.4 npm deep-is 0.1.4 npm
degenerator 3.0.1 npm degenerator 4.0.2 npm
delegates 1.0.0 npm delegates 1.0.0 npm
depd 1.1.2 npm depd 1.1.2 npm
destroy 1.0.4 npm destroy 1.0.4 npm
@@ -139,7 +142,7 @@ diffutils 1:3.8-0ubuntu2
dirmngr 2.2.27-3ubuntu2.1 deb dirmngr 2.2.27-3ubuntu2.1 deb
docker 1.0.0 npm docker 1.0.0 npm
dot-prop 6.0.1 npm dot-prop 6.0.1 npm
dpkg 1.21.1ubuntu2.1 deb dpkg 1.21.1ubuntu2.2 deb
duplexify 4.1.2 npm duplexify 4.1.2 npm
e2fsprogs 1.46.5-2ubuntu1.1 deb e2fsprogs 1.46.5-2ubuntu1.1 deb
ecdsa-sig-formatter 1.0.11 npm ecdsa-sig-formatter 1.0.11 npm
@@ -171,7 +174,6 @@ fast-levenshtein 2.0.6
fast-text-encoding 1.0.6 npm fast-text-encoding 1.0.6 npm
fd-slicer 1.1.0 npm fd-slicer 1.1.0 npm
file-uri-to-path 1.0.0 npm file-uri-to-path 1.0.0 npm
file-uri-to-path 2.0.0 npm
fill-range 7.0.1 npm fill-range 7.0.1 npm
finalhandler 1.1.2 npm finalhandler 1.1.2 npm
findutils 4.8.0-1ubuntu3 deb findutils 4.8.0-1ubuntu3 deb
@@ -183,7 +185,6 @@ fs-extra 8.1.0
fs-minipass 2.1.0 npm fs-minipass 2.1.0 npm
fs.realpath 1.0.0 npm fs.realpath 1.0.0 npm
fsharp 1.0.0 npm fsharp 1.0.0 npm
ftp 0.3.10 npm
function-bind 1.1.1 npm function-bind 1.1.1 npm
gauge 2.7.4 npm gauge 2.7.4 npm
gauge 3.0.2 npm gauge 3.0.2 npm
@@ -192,11 +193,11 @@ gcc-12-base 12.1.0-2ubuntu1~22.04
gcp-metadata 4.3.1 npm gcp-metadata 4.3.1 npm
get-caller-file 2.0.5 npm get-caller-file 2.0.5 npm
get-intrinsic 1.1.1 npm get-intrinsic 1.1.1 npm
get-uri 3.0.2 npm get-uri 6.0.1 npm
git 1.0.0 npm git 1.0.0 npm
git 1:2.34.1-1ubuntu1.8 deb git 1:2.34.1-1ubuntu1.9 deb
git-base 1.0.0 npm git-base 1.0.0 npm
git-man 1:2.34.1-1ubuntu1.8 deb git-man 1:2.34.1-1ubuntu1.9 deb
github 0.0.1 npm github 0.0.1 npm
github-authentication 0.0.2 npm github-authentication 0.0.2 npm
github-from-package 0.0.0 npm github-from-package 0.0.0 npm
@@ -232,15 +233,17 @@ html 1.0.0
html-language-features 1.0.0 npm html-language-features 1.0.0 npm
http-errors 1.7.2 npm http-errors 1.7.2 npm
http-errors 1.7.3 npm http-errors 1.7.3 npm
http-errors 1.8.1 npm
http-proxy 1.18.1 npm http-proxy 1.18.1 npm
http-proxy-agent 2.1.0 npm http-proxy-agent 2.1.0 npm
http-proxy-agent 4.0.1 npm http-proxy-agent 4.0.1 npm
http-proxy-agent 5.0.0 npm http-proxy-agent 5.0.0 npm
http-proxy-agent 7.0.0 npm
httpolyglot 0.1.2 npm httpolyglot 0.1.2 npm
https-proxy-agent 2.2.4 npm https-proxy-agent 2.2.4 npm
https-proxy-agent 5.0.0 npm https-proxy-agent 5.0.0 npm
i18next 22.4.6 npm https-proxy-agent 5.0.1 npm
https-proxy-agent 7.0.0 npm
i18next 22.5.1 npm
iconv-lite 0.4.24 npm iconv-lite 0.4.24 npm
ieee754 1.2.1 npm ieee754 1.2.1 npm
inflight 1.0.6 npm inflight 1.0.6 npm
@@ -250,6 +253,7 @@ ini 1.0.0
ini 1.3.8 npm ini 1.3.8 npm
init-system-helpers 1.62 deb init-system-helpers 1.62 deb
ip 1.1.5 npm ip 1.1.5 npm
ip 2.0.0 npm
ipaddr.js 1.9.1 npm ipaddr.js 1.9.1 npm
ipynb 1.0.0 npm ipynb 1.0.0 npm
is-buffer 1.1.6 npm is-buffer 1.1.6 npm
@@ -261,14 +265,13 @@ is-number 7.0.0
is-obj 2.0.0 npm is-obj 2.0.0 npm
is-stream 2.0.1 npm is-stream 2.0.1 npm
is-stream-ended 0.1.4 npm is-stream-ended 0.1.4 npm
isarray 0.0.1 npm
isarray 1.0.0 npm isarray 1.0.0 npm
isexe 2.0.0 npm isexe 2.0.0 npm
jake 1.0.0 npm jake 1.0.0 npm
java 1.0.0 npm java 1.0.0 npm
javascript 1.0.0 npm javascript 1.0.0 npm
jq 1.6-2.1ubuntu3 deb jq 1.6-2.1ubuntu3 deb
js-debug 1.76.0 npm js-debug 1.78.0 npm
js-debug-companion 1.0.18 npm js-debug-companion 1.0.18 npm
js-yaml 4.1.0 npm js-yaml 4.1.0 npm
jschardet 3.0.0 npm jschardet 3.0.0 npm
@@ -286,7 +289,7 @@ less 1.0.0
less 590-1ubuntu0.22.04.1 deb less 590-1ubuntu0.22.04.1 deb
levn 0.3.0 npm levn 0.3.0 npm
libacl1 2.3.1-1 deb libacl1 2.3.1-1 deb
libapt-pkg6.0 2.4.8 deb libapt-pkg6.0 2.4.9 deb
libassuan0 2.5.5-1build1 deb libassuan0 2.5.5-1build1 deb
libatomic1 12.1.0-2ubuntu1~22.04 deb libatomic1 12.1.0-2ubuntu1~22.04 deb
libattr1 1:2.5.1-1build1 deb libattr1 1:2.5.1-1build1 deb
@@ -299,7 +302,7 @@ libbz2-1.0 1.0.8-5build1
libc-bin 2.35-0ubuntu3.1 deb libc-bin 2.35-0ubuntu3.1 deb
libc6 2.35-0ubuntu3.1 deb libc6 2.35-0ubuntu3.1 deb
libcap-ng0 0.7.9-2.2build3 deb libcap-ng0 0.7.9-2.2build3 deb
libcap2 1:2.44-1build3 deb libcap2 1:2.44-1ubuntu0.22.04.1 deb
libcbor0.8 0.8.0-2ubuntu1 deb libcbor0.8 0.8.0-2ubuntu1 deb
libcom-err2 1.46.5-2ubuntu1.1 deb libcom-err2 1.46.5-2ubuntu1.1 deb
libcrypt1 1:4.4.27-1 deb libcrypt1 1:4.4.27-1 deb
@@ -320,23 +323,23 @@ libgdbm6 1.23-1
libgmp10 2:6.2.1+dfsg-3ubuntu1 deb libgmp10 2:6.2.1+dfsg-3ubuntu1 deb
libgnutls30 3.7.3-4ubuntu1.2 deb libgnutls30 3.7.3-4ubuntu1.2 deb
libgpg-error0 1.43-3 deb libgpg-error0 1.43-3 deb
libgssapi-krb5-2 1.19.2-2ubuntu0.1 deb libgssapi-krb5-2 1.19.2-2ubuntu0.2 deb
libhogweed6 3.7.3-1build2 deb libhogweed6 3.7.3-1build2 deb
libidn2-0 2.3.2-2build1 deb libidn2-0 2.3.2-2build1 deb
libjq1 1.6-2.1ubuntu3 deb libjq1 1.6-2.1ubuntu3 deb
libk5crypto3 1.19.2-2ubuntu0.1 deb libk5crypto3 1.19.2-2ubuntu0.2 deb
libkeyutils1 1.6.1-2ubuntu3 deb libkeyutils1 1.6.1-2ubuntu3 deb
libkrb5-3 1.19.2-2ubuntu0.1 deb libkrb5-3 1.19.2-2ubuntu0.2 deb
libkrb5support0 1.19.2-2ubuntu0.1 deb libkrb5support0 1.19.2-2ubuntu0.2 deb
libksba8 1.6.0-2ubuntu0.2 deb libksba8 1.6.0-2ubuntu0.2 deb
libldap-2.5-0 2.5.14+dfsg-0ubuntu0.22.04.1 deb libldap-2.5-0 2.5.14+dfsg-0ubuntu0.22.04.2 deb
libldap-common 2.5.14+dfsg-0ubuntu0.22.04.1 deb libldap-common 2.5.14+dfsg-0ubuntu0.22.04.2 deb
liblz4-1 1.9.3-2build2 deb liblz4-1 1.9.3-2build2 deb
liblzma5 5.2.5-2ubuntu1 deb liblzma5 5.2.5-2ubuntu1 deb
libmd0 1.0.4-1build1 deb libmd0 1.0.4-1build1 deb
libmount1 2.37.2-4ubuntu3 deb libmount1 2.37.2-4ubuntu3 deb
libncurses6 6.3-2 deb libncurses6 6.3-2ubuntu0.1 deb
libncursesw6 6.3-2 deb libncursesw6 6.3-2ubuntu0.1 deb
libnettle8 3.7.3-1build2 deb libnettle8 3.7.3-1build2 deb
libnghttp2-14 1.43.0-1build3 deb libnghttp2-14 1.43.0-1build3 deb
libnpth0 1.6-3build2 deb libnpth0 1.6-3build2 deb
@@ -349,7 +352,7 @@ libpam-runtime 1.4.0-11ubuntu2.3
libpam0g 1.4.0-11ubuntu2.3 deb libpam0g 1.4.0-11ubuntu2.3 deb
libpcre2-8-0 10.39-3ubuntu0.1 deb libpcre2-8-0 10.39-3ubuntu0.1 deb
libpcre3 2:8.39-13ubuntu0.22.04.1 deb libpcre3 2:8.39-13ubuntu0.22.04.1 deb
libperl5.34 5.34.0-3ubuntu1.1 deb libperl5.34 5.34.0-3ubuntu1.2 deb
libprocps8 2:3.3.17-6ubuntu2 deb libprocps8 2:3.3.17-6ubuntu2 deb
libpsl5 0.21.0-1.2build2 deb libpsl5 0.21.0-1.2build2 deb
libreadline8 8.1.2-1 deb libreadline8 8.1.2-1 deb
@@ -365,19 +368,19 @@ libsepol2 3.3-1build1
libsmartcols1 2.37.2-4ubuntu3 deb libsmartcols1 2.37.2-4ubuntu3 deb
libsqlite3-0 3.37.2-2ubuntu0.1 deb libsqlite3-0 3.37.2-2ubuntu0.1 deb
libss2 1.46.5-2ubuntu1.1 deb libss2 1.46.5-2ubuntu1.1 deb
libssh-4 0.9.6-2build1 deb libssh-4 0.9.6-2ubuntu0.22.04.1 deb
libssl3 3.0.2-0ubuntu1.8 deb libssl3 3.0.2-0ubuntu1.10 deb
libstdc++6 12.1.0-2ubuntu1~22.04 deb libstdc++6 12.1.0-2ubuntu1~22.04 deb
libsystemd0 249.11-0ubuntu3.7 deb libsystemd0 249.11-0ubuntu3.9 deb
libtasn1-6 4.18.0-4build1 deb libtasn1-6 4.18.0-4build1 deb
libtinfo6 6.3-2 deb libtinfo6 6.3-2ubuntu0.1 deb
libtirpc-common 1.3.2-2ubuntu0.1 deb libtirpc-common 1.3.2-2ubuntu0.1 deb
libtirpc3 1.3.2-2ubuntu0.1 deb libtirpc3 1.3.2-2ubuntu0.1 deb
libudev1 249.11-0ubuntu3.7 deb libudev1 249.11-0ubuntu3.9 deb
libunistring2 1.0-1 deb libunistring2 1.0-1 deb
libuuid1 2.37.2-4ubuntu3 deb libuuid1 2.37.2-4ubuntu3 deb
libx11-6 2:1.7.5-1 deb libx11-6 2:1.7.5-1ubuntu0.2 deb
libx11-data 2:1.7.5-1 deb libx11-data 2:1.7.5-1ubuntu0.2 deb
libxau6 1:1.0.9-1build5 deb libxau6 1:1.0.9-1build5 deb
libxcb1 1.14-3ubuntu3 deb libxcb1 1.14-3ubuntu3 deb
libxdmcp6 1:1.1.3-0ubuntu5 deb libxdmcp6 1:1.1.3-0ubuntu5 deb
@@ -392,9 +395,9 @@ log 1.0.0
login 1:4.8.1-2ubuntu2.1 deb login 1:4.8.1-2ubuntu2.1 deb
logsave 1.46.5-2ubuntu1.1 deb logsave 1.46.5-2ubuntu1.1 deb
long 4.0.0 npm long 4.0.0 npm
long 5.2.1 npm long 5.2.3 npm
lru-cache 5.1.1 npm
lru-cache 6.0.0 npm lru-cache 6.0.0 npm
lru-cache 7.18.3 npm
lsb-base 11.1.0ubuntu4 deb lsb-base 11.1.0ubuntu4 deb
lua 1.0.0 npm lua 1.0.0 npm
make 1.0.0 npm make 1.0.0 npm
@@ -419,27 +422,26 @@ minimatch 3.1.2
minimist 1.2.6 npm minimist 1.2.6 npm
minipass 3.1.3 npm minipass 3.1.3 npm
minizlib 2.1.2 npm minizlib 2.1.2 npm
mkdirp 0.5.5 npm mkdirp 0.5.6 npm
mkdirp 1.0.4 npm mkdirp 1.0.4 npm
mkdirp-classic 0.5.3 npm mkdirp-classic 0.5.3 npm
mount 2.37.2-4ubuntu3 deb mount 2.37.2-4ubuntu3 deb
ms 2.0.0 npm ms 2.0.0 npm
ms 2.1.1 npm ms 2.1.1 npm
ms 2.1.2 npm ms 2.1.2 npm
nan 2.15.0 npm
nan 2.17.0 npm nan 2.17.0 npm
nano 6.2-1 deb nano 6.2-1 deb
napi-build-utils 1.0.2 npm napi-build-utils 1.0.2 npm
native-watchdog 1.4.1 npm native-watchdog 1.4.2 npm
ncurses-base 6.3-2 deb ncurses-base 6.3-2ubuntu0.1 deb
ncurses-bin 6.3-2 deb ncurses-bin 6.3-2ubuntu0.1 deb
negotiator 0.6.2 npm negotiator 0.6.2 npm
net-tools 1.60+git20181103.0eebece-1ubuntu5 deb net-tools 1.60+git20181103.0eebece-1ubuntu5 deb
netbase 6.3 deb netbase 6.3 deb
netcat 1.218-4ubuntu1 deb netcat 1.218-4ubuntu1 deb
netcat-openbsd 1.218-4ubuntu1 deb netcat-openbsd 1.218-4ubuntu1 deb
netmask 2.0.2 npm netmask 2.0.2 npm
node 16.19.1 binary node 16.20.0 binary
node-abi 3.8.0 npm node-abi 3.8.0 npm
node-addon-api 3.2.1 npm node-addon-api 3.2.1 npm
node-addon-api 4.3.0 npm node-addon-api 4.3.0 npm
@@ -448,7 +450,7 @@ node-fetch 2.6.7
node-forge 1.3.1 npm node-forge 1.3.1 npm
node-forge-flash 0.0.0 npm node-forge-flash 0.0.0 npm
node-gyp-build 4.3.0 npm node-gyp-build 4.3.0 npm
node-pty 0.11.0-beta29 npm node-pty 0.11.0-beta32 npm
nopt 5.0.0 npm nopt 5.0.0 npm
npm 1.0.1 npm npm 1.0.1 npm
npmlog 4.1.2 npm npmlog 4.1.2 npm
@@ -463,11 +465,11 @@ on-finished 2.3.0
on-headers 1.0.2 npm on-headers 1.0.2 npm
once 1.4.0 npm once 1.4.0 npm
openssh-client 1:8.9p1-3ubuntu0.1 deb openssh-client 1:8.9p1-3ubuntu0.1 deb
openssl 3.0.2-0ubuntu1.8 deb openssl 3.0.2-0ubuntu1.10 deb
optionator 0.8.3 npm optionator 0.8.3 npm
os-tmpdir 1.0.2 npm os-tmpdir 1.0.2 npm
pac-proxy-agent 5.0.0 npm pac-proxy-agent 6.0.3 npm
pac-resolver 5.0.0 npm pac-resolver 6.0.1 npm
parseurl 1.3.3 npm parseurl 1.3.3 npm
passwd 1:4.8.1-2ubuntu2.1 deb passwd 1:4.8.1-2ubuntu2.1 deb
patch 2.7.6-7build2 deb patch 2.7.6-7build2 deb
@@ -476,9 +478,9 @@ path-to-regexp 0.1.7
pem 1.14.4 npm pem 1.14.4 npm
pend 1.2.0 npm pend 1.2.0 npm
perl 1.0.0 npm perl 1.0.0 npm
perl 5.34.0-3ubuntu1.1 deb perl 5.34.0-3ubuntu1.2 deb
perl-base 5.34.0-3ubuntu1.1 deb perl-base 5.34.0-3ubuntu1.2 deb
perl-modules-5.34 5.34.0-3ubuntu1.1 deb perl-modules-5.34 5.34.0-3ubuntu1.2 deb
php 1.0.0 npm php 1.0.0 npm
php-language-features 1.0.0 npm php-language-features 1.0.0 npm
picomatch 2.3.1 npm picomatch 2.3.1 npm
@@ -490,9 +492,9 @@ process-nextick-args 2.0.1
procps 2:3.3.17-6ubuntu2 deb procps 2:3.3.17-6ubuntu2 deb
proto3-json-serializer 0.1.9 npm proto3-json-serializer 0.1.9 npm
protobufjs 6.11.3 npm protobufjs 6.11.3 npm
protobufjs 7.2.2 npm protobufjs 7.2.3 npm
proxy-addr 2.0.6 npm proxy-addr 2.0.6 npm
proxy-agent 5.0.0 npm proxy-agent 6.2.1 npm
proxy-from-env 1.1.0 npm proxy-from-env 1.1.0 npm
publicsuffix 20211207.1025-1 deb publicsuffix 20211207.1025-1 deb
pug 1.0.0 npm pug 1.0.0 npm
@@ -504,13 +506,10 @@ qs 6.7.0
r 1.0.0 npm r 1.0.0 npm
range-parser 1.2.1 npm range-parser 1.2.1 npm
raw-body 2.4.0 npm raw-body 2.4.0 npm
raw-body 2.4.2 npm
razor 1.0.0 npm razor 1.0.0 npm
rc 1.2.8 npm rc 1.2.8 npm
readable-stream 1.1.14 npm
readable-stream 2.3.7 npm readable-stream 2.3.7 npm
readable-stream 3.6.0 npm readable-stream 3.6.0 npm
readable-stream 3.6.2 npm
readline-common 8.1.2-1 deb readline-common 8.1.2-1 deb
references-view 1.0.0 npm references-view 1.0.0 npm
regenerator-runtime 0.13.11 npm regenerator-runtime 0.13.11 npm
@@ -519,7 +518,7 @@ requires-port 1.0.0
restructuredtext 1.0.0 npm restructuredtext 1.0.0 npm
retry-request 4.2.2 npm retry-request 4.2.2 npm
rimraf 3.0.2 npm rimraf 3.0.2 npm
rotating-file-stream 3.0.0 npm rotating-file-stream 3.1.0 npm
router 2.0.0-alpha.1 npm router 2.0.0-alpha.1 npm
ruby 1.0.0 npm ruby 1.0.0 npm
rust 1.0.0 npm rust 1.0.0 npm
@@ -539,7 +538,6 @@ serve-static 1.14.1
set-blocking 2.0.0 npm set-blocking 2.0.0 npm
setprototypeof 1.1.0 npm setprototypeof 1.1.0 npm
setprototypeof 1.1.1 npm setprototypeof 1.1.1 npm
setprototypeof 1.2.0 npm
shaderlab 1.0.0 npm shaderlab 1.0.0 npm
shellscript 1.0.0 npm shellscript 1.0.0 npm
side-channel 1.0.4 npm side-channel 1.0.4 npm
@@ -551,11 +549,10 @@ simple-get 4.0.1
smart-buffer 4.1.0 npm smart-buffer 4.1.0 npm
smart-buffer 4.2.0 npm smart-buffer 4.2.0 npm
socks 2.6.1 npm socks 2.6.1 npm
socks 2.7.1 npm
socks-proxy-agent 5.0.0 npm socks-proxy-agent 5.0.0 npm
socks-proxy-agent 5.0.1 npm socks-proxy-agent 8.0.1 npm
source-map 0.6.1 npm source-map 0.6.1 npm
spdlog 0.13.6 npm
split2 4.1.0 npm
sql 1.0.0 npm sql 1.0.0 npm
statuses 1.5.0 npm statuses 1.5.0 npm
stream-events 1.0.5 npm stream-events 1.0.5 npm
@@ -563,21 +560,20 @@ stream-shift 1.0.1
string-width 1.0.2 npm string-width 1.0.2 npm
string-width 4.2.2 npm string-width 4.2.2 npm
string-width 4.2.3 npm string-width 4.2.3 npm
string_decoder 0.10.31 npm
string_decoder 1.1.1 npm string_decoder 1.1.1 npm
string_decoder 1.3.0 npm string_decoder 1.3.0 npm
strip-ansi 3.0.1 npm strip-ansi 3.0.1 npm
strip-ansi 6.0.1 npm strip-ansi 6.0.1 npm
strip-json-comments 2.0.1 npm strip-json-comments 2.0.1 npm
stubs 3.0.0 npm stubs 3.0.0 npm
sudo 1.9.9-1ubuntu2.3 deb sudo 1.9.9-1ubuntu2.4 deb
swift 1.0.0 npm swift 1.0.0 npm
sysvinit-utils 3.01-1ubuntu1 deb sysvinit-utils 3.01-1ubuntu1 deb
tar 1.34+dfsg-1ubuntu0.1.22.04.1 deb tar 1.34+dfsg-1ubuntu0.1.22.04.1 deb
tar 6.1.11 npm tar 6.1.11 npm
tar-fs 2.1.1 npm tar-fs 2.1.1 npm
tar-stream 2.2.0 npm tar-stream 2.2.0 npm
tas-client-umd 0.1.6 npm tas-client-umd 0.1.8 npm
teeny-request 7.2.0 npm teeny-request 7.2.0 npm
theme-abyss 1.0.0 npm theme-abyss 1.0.0 npm
theme-defaults 1.0.0 npm theme-defaults 1.0.0 npm
@@ -591,16 +587,15 @@ theme-solarized-light 1.0.0
theme-tomorrow-night-blue 1.0.0 npm theme-tomorrow-night-blue 1.0.0 npm
to-regex-range 5.0.1 npm to-regex-range 5.0.1 npm
toidentifier 1.0.0 npm toidentifier 1.0.0 npm
toidentifier 1.0.1 npm
tr46 0.0.3 npm tr46 0.0.3 npm
tslib 2.3.1 npm tslib 2.3.1 npm
tunnel-agent 0.6.0 npm tunnel-agent 0.6.0 npm
type-check 0.3.2 npm type-check 0.3.2 npm
type-is 1.6.18 npm type-is 1.6.18 npm
typescript 1.0.0 npm typescript 1.0.0 npm
typescript 4.9.5 npm typescript 5.1.3 npm
typescript-language-features 1.0.0 npm typescript-language-features 1.0.0 npm
tzdata 2022g-0ubuntu0.22.04.1 deb tzdata 2023c-0ubuntu0.22.04.2 deb
ubuntu-keyring 2021.03.26 deb ubuntu-keyring 2021.03.26 deb
universalify 0.1.2 npm universalify 0.1.2 npm
unpipe 1.0.0 npm unpipe 1.0.0 npm
@@ -611,17 +606,16 @@ utils-merge 1.0.1
uuid 8.3.2 npm uuid 8.3.2 npm
vary 1.1.2 npm vary 1.1.2 npm
vb 1.0.0 npm vb 1.0.0 npm
vm2 3.9.11 npm vm2 3.9.19 npm
vscode-css-languageserver 1.0.0 npm vscode-css-languageserver 1.0.0 npm
vscode-extensions 0.0.1 npm vscode-extensions 0.0.1 npm
vscode-html-languageserver 1.0.0 npm vscode-html-languageserver 1.0.0 npm
vscode-js-profile-table 1.0.3 npm vscode-js-profile-table 1.0.3 npm
vscode-json-languageserver 1.3.4 npm vscode-json-languageserver 1.3.4 npm
vscode-markdown-languageserver 0.3.0-alpha.4 npm vscode-markdown-languageserver 0.4.0-alpha.2 npm
vscode-oniguruma 1.7.0 npm vscode-oniguruma 1.7.0 npm
vscode-proxy-agent 0.12.0 npm
vscode-regexpp 3.1.0 npm vscode-regexpp 3.1.0 npm
vscode-reh 1.76.1 npm vscode-reh 1.79.2 npm
vscode-textmate 9.0.0 npm vscode-textmate 9.0.0 npm
vscode-theme-seti 1.0.0 npm vscode-theme-seti 1.0.0 npm
webidl-conversions 3.0.1 npm webidl-conversions 3.0.1 npm
@@ -631,24 +625,25 @@ wide-align 1.1.5
word-wrap 1.2.3 npm word-wrap 1.2.3 npm
wrap-ansi 7.0.0 npm wrap-ansi 7.0.0 npm
wrappy 1.0.2 npm wrappy 1.0.2 npm
ws 8.2.0 npm ws 8.13.0 npm
xauth 1:1.1-1build2 deb xauth 1:1.1-1build2 deb
xdg-basedir 4.0.0 npm xdg-basedir 4.0.0 npm
xml 1.0.0 npm xml 1.0.0 npm
xregexp 2.0.0 npm xterm 5.2.0-beta.49 npm
xterm 5.2.0-beta.29 npm xterm-addon-canvas 0.4.0-beta.14 npm
xterm-addon-canvas 0.4.0-beta.7 npm xterm-addon-image 0.4.0 npm
xterm-addon-search 0.11.0 npm xterm-addon-search 0.12.0-beta.5 npm
xterm-addon-serialize 0.9.0 npm xterm-addon-serialize 0.10.0-beta.2 npm
xterm-addon-unicode11 0.5.0 npm xterm-addon-unicode11 0.5.0 npm
xterm-addon-webgl 0.15.0-beta.7 npm xterm-addon-webgl 0.15.0-beta.15 npm
xterm-headless 5.2.0-beta.29 npm xterm-headless 5.2.0-beta.49 npm
y18n 5.0.8 npm y18n 5.0.8 npm
yallist 3.1.1 npm
yallist 4.0.0 npm yallist 4.0.0 npm
yaml 1.0.0 npm yaml 1.0.0 npm
yargs 16.2.0 npm yargs 16.2.0 npm
yargs 17.7.2 npm
yargs-parser 20.2.9 npm yargs-parser 20.2.9 npm
yargs-parser 21.1.1 npm
yauzl 2.10.0 npm yauzl 2.10.0 npm
yazl 2.4.3 npm yazl 2.4.3 npm
zlib1g 1:1.2.11.dfsg-2ubuntu9.2 deb zlib1g 1:1.2.11.dfsg-2ubuntu9.2 deb

View File

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