Compare commits

..

25 Commits

Author SHA1 Message Date
LinuxServer-CI
ad6d5a936b Bot Updating Package Versions 2020-02-23 05:16:54 -05:00
LinuxServer-CI
13d3722e71 Bot Updating Package Versions 2020-02-16 10:16:45 +00:00
LinuxServer-CI
74a7581d70 Bot Updating Package Versions 2020-02-09 10:16:21 +00:00
LinuxServer-CI
8c70a3ebf3 Bot Updating Package Versions 2020-02-02 05:16:56 -05:00
LinuxServer-CI
a9346cfc98 Bot Updating Package Versions 2020-01-26 10:16:38 +00:00
LinuxServer-CI
2833c89c78 Bot Updating Package Versions 2020-01-18 04:54:49 +01:00
aptalca
3d83533d55 fix artifact retrieval 2020-01-17 19:52:43 -08:00
LinuxServer-CI
0a84da8cbc Bot Updating Package Versions 2019-12-15 10:16:23 +00:00
LinuxServer-CI
9b216da63c Bot Updating Package Versions 2019-12-08 05:17:08 -05:00
LinuxServer-CI
edc6c7946f Bot Updating Templated Files 2019-12-01 05:15:47 -05:00
LinuxServer-CI
3c29bed31f Bot Updating Package Versions 2019-11-24 10:16:36 +00:00
LinuxServer-CI
590a4e11e8 Bot Updating Templated Files 2019-10-30 14:42:45 -04:00
LinuxServer-CI
10c27ab1a4 Bot Updating Package Versions 2019-10-30 14:19:09 -04:00
LinuxServer-CI
6984171e38 Bot Updating Templated Files 2019-10-30 14:17:21 -04:00
aptalca
c1d35b1473 fix auth param 2019-10-24 13:35:23 -07:00
aptalca
a3a6e0f937 v2 compatibility 2019-10-24 13:35:23 -07:00
LinuxServer-CI
524ba35499 Bot Updating Package Versions 2019-10-20 05:16:54 -04:00
LinuxServer-CI
11862601e8 Bot Updating Package Versions 2019-10-13 05:20:05 -04:00
LinuxServer-CI
81feb2f1b2 Bot Updating Templated Files 2019-10-13 05:17:12 -04:00
LinuxServer-CI
4736401320 Bot Updating Templated Files 2019-10-13 10:16:03 +01:00
LinuxServer-CI
11879beabf Bot Updating Package Versions 2019-10-06 10:16:28 +01:00
chbmb
9c27d62f8b Merge pull request #11 from linuxserver/logo
update project logo
2019-09-28 20:11:16 +01:00
aptalca
e92996b547 update project logo 2019-09-28 14:57:30 -04:00
LinuxServer-CI
90a6230676 Bot Updating Package Versions 2019-09-21 07:16:31 +01:00
aptalca
6a460b9e79 add development tag 2019-09-20 23:14:36 -07:00
6 changed files with 81 additions and 68 deletions

View File

@@ -11,7 +11,6 @@ LABEL maintainer="aptalca"
ENV HOME="/config"
RUN \
echo "**** install dependencies ****" && \
apt-get update && \
apt-get install -y \
git \
@@ -21,17 +20,17 @@ RUN \
sudo && \
echo "**** install code-server ****" && \
if [ -z ${CODE_RELEASE+x} ]; then \
CODE_RELEASE=$(curl -sX GET "https://api.github.com/repos/cdr/code-server/releases" \
| jq -r 'first(.[] | select(.prerelease == true)) | .tag_name'); \
CODE_RELEASE=$(curl -sX GET "https://api.github.com/repos/cdr/code-server/releases/latest" \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
fi && \
CODE_URL=$(curl -sX GET "https://api.github.com/repos/cdr/code-server/releases/tags/${CODE_RELEASE}" \
| jq -r '.assets[] | select(.browser_download_url | contains("linux-x86_64")) | .browser_download_url') && \
mkdir -p /app/code-server && \
curl -o \
/tmp/code.tar.gz -L \
"${CODE_URL}" && \
tar xzf /tmp/code.tar.gz -C \
/app/code-server --strip-components=1 && \
/usr/bin/ --strip-components=1 \
--wildcards code-server*/code-server && \
echo "**** clean up ****" && \
rm -rf \
/tmp/* \

102
Jenkinsfile vendored
View File

@@ -16,8 +16,9 @@ pipeline {
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
JSON_URL = 'https://api.github.com/repos/cdr/code-server/releases'
JSON_PATH = 'first(.[] | select(.prerelease == true)) | .tag_name'
EXT_GIT_BRANCH = 'master'
EXT_USER = 'cdr'
EXT_REPO = 'code-server'
CONTAINER_NAME = 'code-server'
BUILD_VERSION_ARG = 'CODE_RELEASE'
LS_USER = 'linuxserver'
@@ -43,7 +44,7 @@ pipeline {
script{
env.EXIT_STATUS = ''
env.LS_RELEASE = sh(
script: '''docker run --rm alexeiled/skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':development 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
script: '''docker run --rm 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' || : ''',
returnStdout: true).trim()
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' ''',
@@ -100,14 +101,21 @@ pipeline {
/* ########################
External Release Tagging
######################## */
// If this is a custom json endpoint parse the return to get external tag
stage("Set ENV custom_json"){
// If this is a stable github release use the latest endpoint from github to determine the ext tag
stage("Set ENV github_stable"){
steps{
script{
env.EXT_RELEASE = sh(
script: '''curl -s ${JSON_URL} | jq -r ". | ${JSON_PATH}" ''',
script: '''curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq -r '. | .tag_name' ''',
returnStdout: true).trim()
env.RELEASE_LINK = env.JSON_URL
}
}
}
// If this is a stable or devel github release generate the link for the build message
stage("Set ENV github_link"){
steps{
script{
env.RELEASE_LINK = 'https://github.com/' + env.EXT_USER + '/' + env.EXT_REPO + '/releases/tag/' + env.EXT_RELEASE
}
}
}
@@ -121,10 +129,10 @@ pipeline {
}
}
}
// If this is a development build use live docker endpoints
// If this is a master build use live docker endpoints
stage("Set ENV live build"){
when {
branch "development"
branch "master"
environment name: 'CHANGE_ID', value: ''
}
steps {
@@ -145,7 +153,7 @@ pipeline {
// If this is a dev build use dev docker endpoints
stage("Set ENV dev build"){
when {
not {branch "development"}
not {branch "master"}
environment name: 'CHANGE_ID', value: ''
}
steps {
@@ -218,7 +226,7 @@ pipeline {
// Use helper containers to render templated files
stage('Update-Templates') {
when {
branch "development"
branch "master"
environment name: 'CHANGE_ID', value: ''
expression {
env.CONTAINER_NAME != null
@@ -229,7 +237,7 @@ pipeline {
set -e
TEMPDIR=$(mktemp -d)
docker pull linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=development -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
@@ -237,7 +245,7 @@ pipeline {
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f development
git checkout -f master
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/
@@ -269,7 +277,7 @@ pipeline {
// Exit the build if the Templated files were just updated
stage('Template-exit') {
when {
branch "development"
branch "master"
environment name: 'CHANGE_ID', value: ''
environment name: 'FILES_UPDATED', value: 'true'
expression {
@@ -388,7 +396,7 @@ pipeline {
// Take the image we just built and dump package versions for comparison
stage('Update-packages') {
when {
branch "development"
branch "master"
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
@@ -416,7 +424,7 @@ pipeline {
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f development
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f master
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
cd ${TEMPDIR}/${LS_REPO}/
wait
@@ -440,7 +448,7 @@ pipeline {
// Exit the build if the package file was just updated
stage('PACKAGE-exit') {
when {
branch "development"
branch "master"
environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'true'
environment name: 'EXIT_STATUS', value: ''
@@ -454,7 +462,7 @@ pipeline {
// Exit the build if this is just a package check and there are no changes to push
stage('PACKAGECHECK-exit') {
when {
branch "development"
branch "master"
environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'false'
environment name: 'EXIT_STATUS', value: ''
@@ -549,14 +557,14 @@ pipeline {
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
for PUSHIMAGE in "${QUAYIMAGE}" "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:development
docker push ${PUSHIMAGE}:development
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
docker push ${PUSHIMAGE}:latest
docker push ${PUSHIMAGE}:${META_TAG}
done
for DELETEIMAGE in "${QUAYIMAGE}" "${GITHUBIMAGE}" "{GITLABIMAGE}" "${IMAGE}"; do
docker rmi \
${DELETEIMAGE}:${META_TAG} \
${DELETEIMAGE}:development || :
${DELETEIMAGE}:latest || :
done
'''
}
@@ -599,52 +607,52 @@ pipeline {
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}
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-development
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-development
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-development
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-latest
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker push ${MANIFESTIMAGE}:amd64-development
docker push ${MANIFESTIMAGE}:arm32v7-development
docker push ${MANIFESTIMAGE}:arm64v8-development
docker manifest push --purge ${MANIFESTIMAGE}:development || :
docker manifest create ${MANIFESTIMAGE}:development ${MANIFESTIMAGE}:amd64-development ${MANIFESTIMAGE}:arm32v7-development ${MANIFESTIMAGE}:arm64v8-development
docker manifest annotate ${MANIFESTIMAGE}:development ${MANIFESTIMAGE}:arm32v7-development --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:development ${MANIFESTIMAGE}:arm64v8-development --os linux --arch arm64 --variant v8
docker push ${MANIFESTIMAGE}:amd64-latest
docker push ${MANIFESTIMAGE}:arm32v7-latest
docker push ${MANIFESTIMAGE}:arm64v8-latest
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
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8
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 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 push --purge ${MANIFESTIMAGE}:development
docker manifest push --purge ${MANIFESTIMAGE}:latest
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
done
for LEGACYIMAGE in "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
docker tag ${IMAGE}:amd64-${META_TAG} ${LEGACYIMAGE}:amd64-${META_TAG}
docker tag ${IMAGE}:arm32v7-${META_TAG} ${LEGACYIMAGE}:arm32v7-${META_TAG}
docker tag ${IMAGE}:arm64v8-${META_TAG} ${LEGACYIMAGE}:arm64v8-${META_TAG}
docker tag ${LEGACYIMAGE}:amd64-${META_TAG} ${LEGACYIMAGE}:development
docker tag ${LEGACYIMAGE}:amd64-${META_TAG} ${LEGACYIMAGE}:latest
docker tag ${LEGACYIMAGE}:amd64-${META_TAG} ${LEGACYIMAGE}:${META_TAG}
docker tag ${LEGACYIMAGE}:arm32v7-${META_TAG} ${LEGACYIMAGE}:arm32v7-development
docker tag ${LEGACYIMAGE}:arm64v8-${META_TAG} ${LEGACYIMAGE}:arm64v8-development
docker tag ${LEGACYIMAGE}:arm32v7-${META_TAG} ${LEGACYIMAGE}:arm32v7-latest
docker tag ${LEGACYIMAGE}:arm64v8-${META_TAG} ${LEGACYIMAGE}:arm64v8-latest
docker push ${LEGACYIMAGE}:amd64-${META_TAG}
docker push ${LEGACYIMAGE}:arm32v7-${META_TAG}
docker push ${LEGACYIMAGE}:arm64v8-${META_TAG}
docker push ${LEGACYIMAGE}:development
docker push ${LEGACYIMAGE}:latest
docker push ${LEGACYIMAGE}:${META_TAG}
docker push ${LEGACYIMAGE}:arm32v7-development
docker push ${LEGACYIMAGE}:arm64v8-development
docker push ${LEGACYIMAGE}:arm32v7-latest
docker push ${LEGACYIMAGE}:arm64v8-latest
done
'''
sh '''#! /bin/bash
for DELETEIMAGE in "${QUAYIMAGE}" "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
docker rmi \
${DELETEIMAGE}:amd64-${META_TAG} \
${DELETEIMAGE}:amd64-development \
${DELETEIMAGE}:amd64-latest \
${DELETEIMAGE}:arm32v7-${META_TAG} \
${DELETEIMAGE}:arm32v7-development \
${DELETEIMAGE}:arm32v7-latest \
${DELETEIMAGE}:arm64v8-${META_TAG} \
${DELETEIMAGE}:arm64v8-development || :
${DELETEIMAGE}:arm64v8-latest || :
done
docker rmi \
lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
@@ -656,7 +664,7 @@ pipeline {
// If this is a public release tag it in the LS Github
stage('Github-Tag-Push-Release') {
when {
branch "development"
branch "master"
expression {
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
}
@@ -668,17 +676,17 @@ pipeline {
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to development",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
"type": "commit",\
"tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
echo "Pushing New release for Tag"
sh '''#! /bin/bash
echo "Data change at JSON endpoint ${JSON_URL}" > releasebody.json
curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq '. |.body' | sed 's:^.\\(.*\\).$:\\1:' > releasebody.json
echo '{"tag_name":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
"target_commitish": "development",\
"target_commitish": "master",\
"name": "'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**Remote Changes:**\\n\\n' > start
printf '","draft": false,"prerelease": true}' >> releasebody.json
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**'${EXT_REPO}' Changes:**\\n\\n' > start
printf '","draft": false,"prerelease": false}' >> releasebody.json
paste -d'\\0' start releasebody.json > releasebody.json.done
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
}

View File

@@ -44,7 +44,7 @@ Find us at:
- All intensive computation runs on your server.
- You're no longer running excess instances of Chrome.
[![code-server](https://github.com/cdr/code-server/raw/master/doc/assets/cli.png)](https://coder.com)
[![code-server](https://github.com/cdr/code-server/raw/master/doc/assets/ide.gif)](https://coder.com)
## Supported Architectures
@@ -229,7 +229,10 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions
* **05.03.20:** - Updates for v3.0.0 (structural changes).
* **17.01.20:** - Fix artifact url retrieval from github.
* **24.10.19:** - Upgrade to v2 builds.
* **28.09.19:** - Update project logo.
* **21.09.19:** - Add development builds/tag.
* **09.07.19:** - Add optional sudo access.
* **01.07.19:** - Add nano.
* **24.06.19:** - Initial Release.

View File

@@ -2,13 +2,14 @@
# jenkins variables
project_name: docker-code-server
external_type: custom_json
release_type: prerelease
release_tag: development
ls_branch: development
external_type: github_stable
release_type: stable
release_tag: latest
ls_branch: master
repo_vars:
- JSON_URL = 'https://api.github.com/repos/cdr/code-server/releases'
- JSON_PATH = 'first(.[] | select(.prerelease == true)) | .tag_name'
- EXT_GIT_BRANCH = 'master'
- EXT_USER = 'cdr'
- EXT_REPO = 'code-server'
- CONTAINER_NAME = 'code-server'
- BUILD_VERSION_ARG = 'CODE_RELEASE'
- LS_USER = 'linuxserver'

View File

@@ -3,7 +3,7 @@
# project information
project_name: code-server
project_url: "https://coder.com"
project_logo: "https://github.com/cdr/code-server/raw/master/doc/assets/cli.png"
project_logo: "https://github.com/cdr/code-server/raw/master/doc/assets/ide.gif"
project_blurb: "[{{ project_name|capitalize }}]({{ project_url }}) is VS Code running on a remote server, accessible through the browser.
- Code on your Chromebook, tablet, and laptop with a consistent dev environment.
@@ -65,7 +65,10 @@ app_setup_block: |
# changelog
changelogs:
- { date: "05.03.20:", desc: "Updates for v3.0.0 (structural changes)." }
- { date: "17.01.20:", desc: "Fix artifact url retrieval from github." }
- { date: "24.10.19:", desc: "Upgrade to v2 builds." }
- { date: "28.09.19:", desc: "Update project logo." }
- { date: "21.09.19:", desc: "Add development builds/tag." }
- { date: "09.07.19:", desc: "Add optional sudo access." }
- { date: "01.07.19:", desc: "Add nano." }
- { date: "24.06.19:", desc: "Initial Release." }

View File

@@ -1,20 +1,19 @@
#!/usr/bin/with-contenv bash
if [ -n "${PASSWORD}" ]; then
AUTH="password"
AUTH="password"
else
AUTH="none"
echo "starting with no password"
AUTH="none"
echo "starting with no password"
fi
exec \
s6-setuidgid abc \
/app/code-server/code-server \
--host 0.0.0.0 \
/usr/bin/code-server \
--port 8443 \
--user-data-dir /config/data \
--extensions-dir /config/extensions \
--disable-telemetry \
--disable-updates \
--auth ${AUTH} \
--auth "${AUTH}" \
/config/workspace