Compare commits
18 Commits
master
...
focal-v4.0
Author | SHA1 | Date | |
---|---|---|---|
|
bfe52319dc | ||
|
186eb88fc3 | ||
|
54b39f86b8 | ||
|
edb878e01d | ||
|
88b91e5da9 | ||
|
081b38ed70 | ||
|
05fdef4e1d | ||
|
0509b51cf7 | ||
|
5215cc3bcb | ||
|
dd0f72fd3a | ||
|
6d8712671c | ||
|
2ee4966213 | ||
|
a5349c4c28 | ||
|
71fa088aa8 | ||
|
a11064a29a | ||
|
3b78d9e7c6 | ||
|
65a27cfcdb | ||
|
5b5bc16fe6 |
4
.github/CONTRIBUTING.md
vendored
4
.github/CONTRIBUTING.md
vendored
@ -24,7 +24,7 @@
|
|||||||
## Readme
|
## Readme
|
||||||
|
|
||||||
If you would like to change our readme, please __**do not**__ directly edit the readme, as it is auto-generated on each commit.
|
If you would like to change our readme, please __**do not**__ directly edit the readme, as it is auto-generated on each commit.
|
||||||
Instead edit the [readme-vars.yml](https://github.com/linuxserver/docker-code-server/edit/master/readme-vars.yml).
|
Instead edit the [readme-vars.yml](https://github.com/linuxserver/docker-code-server/edit/focal/readme-vars.yml).
|
||||||
|
|
||||||
These variables are used in a template for our [Jenkins Builder](https://github.com/linuxserver/docker-jenkins-builder) as part of an ansible play.
|
These variables are used in a template for our [Jenkins Builder](https://github.com/linuxserver/docker-jenkins-builder) as part of an ansible play.
|
||||||
Most of these variables are also carried over to [docs.linuxserver.io](https://docs.linuxserver.io/images/docker-code-server)
|
Most of these variables are also carried over to [docs.linuxserver.io](https://docs.linuxserver.io/images/docker-code-server)
|
||||||
@ -115,7 +115,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
|
|||||||
|
|
||||||
## Update the changelog
|
## Update the changelog
|
||||||
|
|
||||||
If you are modifying the Dockerfiles or any of the startup scripts in [root](https://github.com/linuxserver/docker-code-server/tree/master/root), add an entry to the changelog
|
If you are modifying the Dockerfiles or any of the startup scripts in [root](https://github.com/linuxserver/docker-code-server/tree/focal/root), add an entry to the changelog
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
changelogs:
|
changelogs:
|
||||||
|
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
- [ ] I have read the [contributing](https://github.com/linuxserver/docker-code-server/blob/master/.github/CONTRIBUTING.md) guideline and understand that I have made the correct modifications
|
- [ ] I have read the [contributing](https://github.com/linuxserver/docker-code-server/blob/focal/.github/CONTRIBUTING.md) guideline and understand that I have made the correct modifications
|
||||||
|
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
|
22
.github/workflows/external_trigger.yml
vendored
22
.github/workflows/external_trigger.yml
vendored
@ -4,24 +4,24 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
external-trigger-master:
|
external-trigger-focal:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2.3.3
|
- uses: actions/checkout@v2.3.3
|
||||||
|
|
||||||
- name: External Trigger
|
- name: External Trigger
|
||||||
if: github.ref == 'refs/heads/master'
|
if: github.ref == 'refs/heads/focal'
|
||||||
run: |
|
run: |
|
||||||
if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_MASTER }}" ]; then
|
if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_FOCAL }}" ]; then
|
||||||
echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_MASTER is set; skipping trigger. ****"
|
echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_FOCAL is set; skipping trigger. ****"
|
||||||
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 focal branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_FOCAL\". ****"
|
||||||
echo "**** Retrieving external version ****"
|
echo "**** Retrieving external version ****"
|
||||||
EXT_RELEASE=$(curl -sX GET https://registry.yarnpkg.com/code-server | jq -r '."dist-tags".latest' | sed 's|^|v|')
|
EXT_RELEASE=$(curl -sX GET https://registry.yarnpkg.com/code-server | jq -r '."dist-tags".latest' | sed 's|^|v|')
|
||||||
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
|
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
|
||||||
echo "**** Can't retrieve external version, exiting ****"
|
echo "**** Can't retrieve external version, exiting ****"
|
||||||
FAILURE_REASON="Can't retrieve external version for code-server branch master"
|
FAILURE_REASON="Can't retrieve external version for code-server branch focal"
|
||||||
GHA_TRIGGER_URL="https://github.com/linuxserver/docker-code-server/actions/runs/${{ github.run_id }}"
|
GHA_TRIGGER_URL="https://github.com/linuxserver/docker-code-server/actions/runs/${{ github.run_id }}"
|
||||||
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
|
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
|
||||||
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n**Trigger URL:** '"${GHA_TRIGGER_URL}"' \n"}],
|
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n**Trigger URL:** '"${GHA_TRIGGER_URL}"' \n"}],
|
||||||
@ -32,7 +32,7 @@ jobs:
|
|||||||
echo "**** External version: ${EXT_RELEASE} ****"
|
echo "**** External version: ${EXT_RELEASE} ****"
|
||||||
echo "**** Retrieving last pushed version ****"
|
echo "**** Retrieving last pushed version ****"
|
||||||
image="linuxserver/code-server"
|
image="linuxserver/code-server"
|
||||||
tag="latest"
|
tag="focal"
|
||||||
token=$(curl -sX GET \
|
token=$(curl -sX GET \
|
||||||
"https://ghcr.io/token?scope=repository%3Alinuxserver%2Fcode-server%3Apull" \
|
"https://ghcr.io/token?scope=repository%3Alinuxserver%2Fcode-server%3Apull" \
|
||||||
| jq -r '.token')
|
| jq -r '.token')
|
||||||
@ -54,7 +54,7 @@ jobs:
|
|||||||
IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}')
|
IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}')
|
||||||
if [ -z "${IMAGE_VERSION}" ]; then
|
if [ -z "${IMAGE_VERSION}" ]; then
|
||||||
echo "**** Can't retrieve last pushed version, exiting ****"
|
echo "**** Can't retrieve last pushed version, exiting ****"
|
||||||
FAILURE_REASON="Can't retrieve last pushed version for code-server tag latest"
|
FAILURE_REASON="Can't retrieve last pushed version for code-server tag focal"
|
||||||
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
|
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
|
||||||
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
|
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
|
||||||
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
||||||
@ -64,13 +64,13 @@ jobs:
|
|||||||
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 ****"
|
||||||
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/focal/lastBuild/api/json | jq -r '.building') == "true" ]; then
|
||||||
echo "**** New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting ****"
|
echo "**** New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting ****"
|
||||||
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 ****"
|
||||||
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/focal/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|")
|
||||||
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
|
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
|
||||||
echo "**** Sleeping 10 seconds until job starts ****"
|
echo "**** Sleeping 10 seconds until job starts ****"
|
||||||
@ -85,7 +85,7 @@ jobs:
|
|||||||
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
|
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
|
||||||
--data-urlencode "Submit=Submit"
|
--data-urlencode "Submit=Submit"
|
||||||
echo "**** Notifying Discord ****"
|
echo "**** Notifying Discord ****"
|
||||||
TRIGGER_REASON="A version change was detected for code-server tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}"
|
TRIGGER_REASON="A version change was detected for code-server tag focal. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}"
|
||||||
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
|
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
|
||||||
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
|
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
|
||||||
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
||||||
|
4
.github/workflows/greetings.yml
vendored
4
.github/workflows/greetings.yml
vendored
@ -8,6 +8,6 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/first-interaction@v1
|
- uses: actions/first-interaction@v1
|
||||||
with:
|
with:
|
||||||
issue-message: 'Thanks for opening your first issue here! Be sure to follow the [bug](https://github.com/linuxserver/docker-code-server/blob/master/.github/ISSUE_TEMPLATE/issue.bug.md) or [feature](https://github.com/linuxserver/docker-code-server/blob/master/.github/ISSUE_TEMPLATE/issue.feature.md) issue templates!'
|
issue-message: 'Thanks for opening your first issue here! Be sure to follow the [bug](https://github.com/linuxserver/docker-code-server/blob/focal/.github/ISSUE_TEMPLATE/issue.bug.md) or [feature](https://github.com/linuxserver/docker-code-server/blob/focal/.github/ISSUE_TEMPLATE/issue.feature.md) issue templates!'
|
||||||
pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-code-server/blob/master/.github/PULL_REQUEST_TEMPLATE.md)!'
|
pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-code-server/blob/focal/.github/PULL_REQUEST_TEMPLATE.md)!'
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
14
.github/workflows/package_trigger.yml
vendored
14
.github/workflows/package_trigger.yml
vendored
@ -4,25 +4,25 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
package-trigger-master:
|
package-trigger-focal:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2.3.3
|
- uses: actions/checkout@v2.3.3
|
||||||
|
|
||||||
- name: Package Trigger
|
- name: Package Trigger
|
||||||
if: github.ref == 'refs/heads/master'
|
if: github.ref == 'refs/heads/focal'
|
||||||
run: |
|
run: |
|
||||||
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_CODE_SERVER_MASTER }}" ]; then
|
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_CODE_SERVER_FOCAL }}" ]; then
|
||||||
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_CODE_SERVER_MASTER is set; skipping trigger. ****"
|
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_CODE_SERVER_FOCAL is set; skipping trigger. ****"
|
||||||
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/focal/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 ****"
|
||||||
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 focal branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_CODE_SERVER_FOCAL\". ****"
|
||||||
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/focal/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|")
|
||||||
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
|
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
|
||||||
echo "**** Sleeping 10 seconds until job starts ****"
|
echo "**** Sleeping 10 seconds until job starts ****"
|
||||||
|
11
Dockerfile
11
Dockerfile
@ -1,4 +1,4 @@
|
|||||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:bionic
|
FROM ghcr.io/linuxserver/baseimage-ubuntu:focal
|
||||||
|
|
||||||
# set version label
|
# set version label
|
||||||
ARG BUILD_DATE
|
ARG BUILD_DATE
|
||||||
@ -16,7 +16,7 @@ RUN \
|
|||||||
apt-get install -y \
|
apt-get install -y \
|
||||||
gnupg && \
|
gnupg && \
|
||||||
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
|
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
|
||||||
echo 'deb https://deb.nodesource.com/node_14.x bionic main' \
|
echo 'deb https://deb.nodesource.com/node_14.x focal main' \
|
||||||
> /etc/apt/sources.list.d/nodesource.list && \
|
> /etc/apt/sources.list.d/nodesource.list && \
|
||||||
curl -s https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
curl -s https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
||||||
echo 'deb https://dl.yarnpkg.com/debian/ stable main' \
|
echo 'deb https://dl.yarnpkg.com/debian/ stable main' \
|
||||||
@ -25,10 +25,11 @@ RUN \
|
|||||||
apt-get update && \
|
apt-get update && \
|
||||||
apt-get install -y \
|
apt-get install -y \
|
||||||
build-essential \
|
build-essential \
|
||||||
|
libsecret-1-dev \
|
||||||
libx11-dev \
|
libx11-dev \
|
||||||
libxkbfile-dev \
|
libxkbfile-dev \
|
||||||
libsecret-1-dev \
|
pkg-config \
|
||||||
pkg-config && \
|
python3 && \
|
||||||
echo "**** install runtime dependencies ****" && \
|
echo "**** install runtime dependencies ****" && \
|
||||||
apt-get install -y \
|
apt-get install -y \
|
||||||
git \
|
git \
|
||||||
@ -44,6 +45,7 @@ RUN \
|
|||||||
| jq -r '."dist-tags".latest' | sed 's|^|v|'); \
|
| jq -r '."dist-tags".latest' | sed 's|^|v|'); \
|
||||||
fi && \
|
fi && \
|
||||||
CODE_VERSION=$(echo "$CODE_RELEASE" | awk '{print substr($1,2); }') && \
|
CODE_VERSION=$(echo "$CODE_RELEASE" | awk '{print substr($1,2); }') && \
|
||||||
|
npm config set python python3 \
|
||||||
yarn config set network-timeout 600000 -g && \
|
yarn config set network-timeout 600000 -g && \
|
||||||
yarn --production --verbose --frozen-lockfile global add code-server@"$CODE_VERSION" && \
|
yarn --production --verbose --frozen-lockfile global add code-server@"$CODE_VERSION" && \
|
||||||
yarn cache clean && \
|
yarn cache clean && \
|
||||||
@ -56,6 +58,7 @@ RUN \
|
|||||||
pkg-config && \
|
pkg-config && \
|
||||||
apt-get clean && \
|
apt-get clean && \
|
||||||
rm -rf \
|
rm -rf \
|
||||||
|
/config/* \
|
||||||
/tmp/* \
|
/tmp/* \
|
||||||
/var/lib/apt/lists/* \
|
/var/lib/apt/lists/* \
|
||||||
/var/tmp/*
|
/var/tmp/*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-bionic
|
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-focal
|
||||||
|
|
||||||
# set version label
|
# set version label
|
||||||
ARG BUILD_DATE
|
ARG BUILD_DATE
|
||||||
@ -16,7 +16,7 @@ RUN \
|
|||||||
apt-get install -y \
|
apt-get install -y \
|
||||||
gnupg && \
|
gnupg && \
|
||||||
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
|
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
|
||||||
echo 'deb https://deb.nodesource.com/node_14.x bionic main' \
|
echo 'deb https://deb.nodesource.com/node_14.x focal main' \
|
||||||
> /etc/apt/sources.list.d/nodesource.list && \
|
> /etc/apt/sources.list.d/nodesource.list && \
|
||||||
curl -s https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
curl -s https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
||||||
echo 'deb https://dl.yarnpkg.com/debian/ stable main' \
|
echo 'deb https://dl.yarnpkg.com/debian/ stable main' \
|
||||||
@ -25,10 +25,11 @@ RUN \
|
|||||||
apt-get update && \
|
apt-get update && \
|
||||||
apt-get install -y \
|
apt-get install -y \
|
||||||
build-essential \
|
build-essential \
|
||||||
|
libsecret-1-dev \
|
||||||
libx11-dev \
|
libx11-dev \
|
||||||
libxkbfile-dev \
|
libxkbfile-dev \
|
||||||
libsecret-1-dev \
|
pkg-config \
|
||||||
pkg-config && \
|
python3 && \
|
||||||
echo "**** install runtime dependencies ****" && \
|
echo "**** install runtime dependencies ****" && \
|
||||||
apt-get install -y \
|
apt-get install -y \
|
||||||
git \
|
git \
|
||||||
@ -44,6 +45,7 @@ RUN \
|
|||||||
| jq -r '."dist-tags".latest' | sed 's|^|v|'); \
|
| jq -r '."dist-tags".latest' | sed 's|^|v|'); \
|
||||||
fi && \
|
fi && \
|
||||||
CODE_VERSION=$(echo "$CODE_RELEASE" | awk '{print substr($1,2); }') && \
|
CODE_VERSION=$(echo "$CODE_RELEASE" | awk '{print substr($1,2); }') && \
|
||||||
|
npm config set python python3 \
|
||||||
yarn config set network-timeout 600000 -g && \
|
yarn config set network-timeout 600000 -g && \
|
||||||
yarn --production --verbose --frozen-lockfile global add code-server@"$CODE_VERSION" && \
|
yarn --production --verbose --frozen-lockfile global add code-server@"$CODE_VERSION" && \
|
||||||
yarn cache clean && \
|
yarn cache clean && \
|
||||||
@ -56,6 +58,7 @@ RUN \
|
|||||||
pkg-config && \
|
pkg-config && \
|
||||||
apt-get clean && \
|
apt-get clean && \
|
||||||
rm -rf \
|
rm -rf \
|
||||||
|
/config/* \
|
||||||
/tmp/* \
|
/tmp/* \
|
||||||
/var/lib/apt/lists/* \
|
/var/lib/apt/lists/* \
|
||||||
/var/tmp/*
|
/var/tmp/*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm32v7-bionic
|
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm32v7-focal
|
||||||
|
|
||||||
# set version label
|
# set version label
|
||||||
ARG BUILD_DATE
|
ARG BUILD_DATE
|
||||||
@ -16,7 +16,7 @@ RUN \
|
|||||||
apt-get install -y \
|
apt-get install -y \
|
||||||
gnupg && \
|
gnupg && \
|
||||||
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
|
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
|
||||||
echo 'deb https://deb.nodesource.com/node_14.x bionic main' \
|
echo 'deb https://deb.nodesource.com/node_14.x focal main' \
|
||||||
> /etc/apt/sources.list.d/nodesource.list && \
|
> /etc/apt/sources.list.d/nodesource.list && \
|
||||||
curl -s https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
curl -s https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
||||||
echo 'deb https://dl.yarnpkg.com/debian/ stable main' \
|
echo 'deb https://dl.yarnpkg.com/debian/ stable main' \
|
||||||
@ -25,10 +25,11 @@ RUN \
|
|||||||
apt-get update && \
|
apt-get update && \
|
||||||
apt-get install -y \
|
apt-get install -y \
|
||||||
build-essential \
|
build-essential \
|
||||||
|
libsecret-1-dev \
|
||||||
libx11-dev \
|
libx11-dev \
|
||||||
libxkbfile-dev \
|
libxkbfile-dev \
|
||||||
libsecret-1-dev \
|
pkg-config \
|
||||||
pkg-config && \
|
python3 && \
|
||||||
echo "**** install runtime dependencies ****" && \
|
echo "**** install runtime dependencies ****" && \
|
||||||
apt-get install -y \
|
apt-get install -y \
|
||||||
git \
|
git \
|
||||||
@ -44,6 +45,7 @@ RUN \
|
|||||||
| jq -r '."dist-tags".latest' | sed 's|^|v|'); \
|
| jq -r '."dist-tags".latest' | sed 's|^|v|'); \
|
||||||
fi && \
|
fi && \
|
||||||
CODE_VERSION=$(echo "$CODE_RELEASE" | awk '{print substr($1,2); }') && \
|
CODE_VERSION=$(echo "$CODE_RELEASE" | awk '{print substr($1,2); }') && \
|
||||||
|
npm config set python python3 \
|
||||||
yarn config set network-timeout 600000 -g && \
|
yarn config set network-timeout 600000 -g && \
|
||||||
yarn --production --verbose --frozen-lockfile global add code-server@"$CODE_VERSION" && \
|
yarn --production --verbose --frozen-lockfile global add code-server@"$CODE_VERSION" && \
|
||||||
yarn cache clean && \
|
yarn cache clean && \
|
||||||
@ -56,6 +58,7 @@ RUN \
|
|||||||
pkg-config && \
|
pkg-config && \
|
||||||
apt-get clean && \
|
apt-get clean && \
|
||||||
rm -rf \
|
rm -rf \
|
||||||
|
/config/* \
|
||||||
/tmp/* \
|
/tmp/* \
|
||||||
/var/lib/apt/lists/* \
|
/var/lib/apt/lists/* \
|
||||||
/var/tmp/*
|
/var/tmp/*
|
||||||
|
219
Jenkinsfile
vendored
219
Jenkinsfile
vendored
@ -16,6 +16,7 @@ pipeline {
|
|||||||
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
|
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
|
||||||
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
|
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
|
||||||
GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
|
GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
|
||||||
|
SCARF_TOKEN=credentials('scarf_api_key')
|
||||||
CONTAINER_NAME = 'code-server'
|
CONTAINER_NAME = 'code-server'
|
||||||
BUILD_VERSION_ARG = 'CODE_RELEASE'
|
BUILD_VERSION_ARG = 'CODE_RELEASE'
|
||||||
LS_USER = 'linuxserver'
|
LS_USER = 'linuxserver'
|
||||||
@ -41,7 +42,7 @@ pipeline {
|
|||||||
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 ghcr.io/linuxserver/alexeiled-skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':focal 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' ''',
|
||||||
@ -116,13 +117,37 @@ pipeline {
|
|||||||
env.EXT_RELEASE_CLEAN = sh(
|
env.EXT_RELEASE_CLEAN = sh(
|
||||||
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''',
|
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''',
|
||||||
returnStdout: true).trim()
|
returnStdout: true).trim()
|
||||||
|
|
||||||
|
def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)/
|
||||||
|
if (semver.find()) {
|
||||||
|
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
|
||||||
|
} else {
|
||||||
|
semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)(?:\.(\d+))?(.*)/
|
||||||
|
if (semver.find()) {
|
||||||
|
if (semver[0][3]) {
|
||||||
|
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
|
||||||
|
} else if (!semver[0][3] && !semver[0][4]) {
|
||||||
|
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${(new Date()).format('YYYYMMdd')}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// If this is a master build use live docker endpoints
|
|
||||||
|
if (env.SEMVER != null) {
|
||||||
|
if (BRANCH_NAME != "master" && BRANCH_NAME != "main") {
|
||||||
|
env.SEMVER = "${env.SEMVER}-${BRANCH_NAME}"
|
||||||
|
}
|
||||||
|
println("SEMVER: ${env.SEMVER}")
|
||||||
|
} else {
|
||||||
|
println("No SEMVER detected")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// If this is a focal build use live docker endpoints
|
||||||
stage("Set ENV live build"){
|
stage("Set ENV live build"){
|
||||||
when {
|
when {
|
||||||
branch "master"
|
branch "focal"
|
||||||
environment name: 'CHANGE_ID', value: ''
|
environment name: 'CHANGE_ID', value: ''
|
||||||
}
|
}
|
||||||
steps {
|
steps {
|
||||||
@ -130,21 +155,22 @@ pipeline {
|
|||||||
env.IMAGE = env.DOCKERHUB_IMAGE
|
env.IMAGE = env.DOCKERHUB_IMAGE
|
||||||
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/' + env.CONTAINER_NAME
|
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/' + env.CONTAINER_NAME
|
||||||
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
|
||||||
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-focal-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-focal-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-focal-' + 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 = 'focal-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||||
}
|
}
|
||||||
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||||
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
env.META_TAG = 'focal-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||||
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
|
env.EXT_RELEASE_TAG = 'focal-version-' + env.EXT_RELEASE_CLEAN
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// If this is a dev build use dev docker endpoints
|
// If this is a dev build use dev docker endpoints
|
||||||
stage("Set ENV dev build"){
|
stage("Set ENV dev build"){
|
||||||
when {
|
when {
|
||||||
not {branch "master"}
|
not {branch "focal"}
|
||||||
environment name: 'CHANGE_ID', value: ''
|
environment name: 'CHANGE_ID', value: ''
|
||||||
}
|
}
|
||||||
steps {
|
steps {
|
||||||
@ -152,14 +178,15 @@ pipeline {
|
|||||||
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
|
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
|
||||||
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lsiodev-' + env.CONTAINER_NAME
|
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lsiodev-' + env.CONTAINER_NAME
|
||||||
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
|
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
|
||||||
|
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
|
||||||
if (env.MULTIARCH == 'true') {
|
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-focal-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-focal-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-focal-' + 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 = 'focal-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||||
}
|
}
|
||||||
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||||
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
env.META_TAG = 'focal-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||||
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
|
env.EXT_RELEASE_TAG = 'focal-version-' + env.EXT_RELEASE_CLEAN
|
||||||
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
|
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -174,14 +201,15 @@ pipeline {
|
|||||||
env.IMAGE = env.PR_DOCKERHUB_IMAGE
|
env.IMAGE = env.PR_DOCKERHUB_IMAGE
|
||||||
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lspipepr-' + env.CONTAINER_NAME
|
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lspipepr-' + env.CONTAINER_NAME
|
||||||
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
|
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
|
||||||
|
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
|
||||||
if (env.MULTIARCH == 'true') {
|
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-focal-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-focal-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-focal-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
||||||
} else {
|
} else {
|
||||||
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
env.CI_TAGS = 'focal-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-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 + '-pr-' + env.PULL_REQUEST
|
||||||
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
env.META_TAG = 'focal-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
||||||
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
|
env.EXT_RELEASE_TAG = 'focal-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/'
|
||||||
}
|
}
|
||||||
@ -219,7 +247,7 @@ pipeline {
|
|||||||
// Use helper containers to render templated files
|
// Use helper containers to render templated files
|
||||||
stage('Update-Templates') {
|
stage('Update-Templates') {
|
||||||
when {
|
when {
|
||||||
branch "master"
|
branch "focal"
|
||||||
environment name: 'CHANGE_ID', value: ''
|
environment name: 'CHANGE_ID', value: ''
|
||||||
expression {
|
expression {
|
||||||
env.CONTAINER_NAME != null
|
env.CONTAINER_NAME != null
|
||||||
@ -230,13 +258,13 @@ pipeline {
|
|||||||
set -e
|
set -e
|
||||||
TEMPDIR=$(mktemp -d)
|
TEMPDIR=$(mktemp -d)
|
||||||
docker pull ghcr.io/linuxserver/jenkins-builder:latest
|
docker pull ghcr.io/linuxserver/jenkins-builder:latest
|
||||||
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
|
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=focal -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
|
||||||
# Stage 1 - Jenkinsfile update
|
# Stage 1 - Jenkinsfile update
|
||||||
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
|
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
|
||||||
mkdir -p ${TEMPDIR}/repo
|
mkdir -p ${TEMPDIR}/repo
|
||||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||||
git checkout -f master
|
git checkout -f focal
|
||||||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
|
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
|
||||||
git add Jenkinsfile
|
git add Jenkinsfile
|
||||||
git commit -m 'Bot Updating Templated Files'
|
git commit -m 'Bot Updating Templated Files'
|
||||||
@ -259,7 +287,7 @@ pipeline {
|
|||||||
mkdir -p ${TEMPDIR}/repo
|
mkdir -p ${TEMPDIR}/repo
|
||||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||||
git checkout -f master
|
git checkout -f focal
|
||||||
for i in ${TEMPLATES_TO_DELETE}; do
|
for i in ${TEMPLATES_TO_DELETE}; do
|
||||||
git rm "${i}"
|
git rm "${i}"
|
||||||
done
|
done
|
||||||
@ -280,7 +308,7 @@ pipeline {
|
|||||||
mkdir -p ${TEMPDIR}/repo
|
mkdir -p ${TEMPDIR}/repo
|
||||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||||
git checkout -f master
|
git checkout -f focal
|
||||||
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
|
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
|
||||||
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
|
||||||
@ -336,7 +364,7 @@ pipeline {
|
|||||||
// Exit the build if the Templated files were just updated
|
// Exit the build if the Templated files were just updated
|
||||||
stage('Template-exit') {
|
stage('Template-exit') {
|
||||||
when {
|
when {
|
||||||
branch "master"
|
branch "focal"
|
||||||
environment name: 'CHANGE_ID', value: ''
|
environment name: 'CHANGE_ID', value: ''
|
||||||
environment name: 'FILES_UPDATED', value: 'true'
|
environment name: 'FILES_UPDATED', value: 'true'
|
||||||
expression {
|
expression {
|
||||||
@ -369,13 +397,45 @@ pipeline {
|
|||||||
"visibility":"public"}' '''
|
"visibility":"public"}' '''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* #######################
|
||||||
|
Scarf.sh package registry
|
||||||
|
####################### */
|
||||||
|
// Add package to Scarf.sh and set permissions
|
||||||
|
stage("Scarf.sh package registry"){
|
||||||
|
when {
|
||||||
|
branch "focal"
|
||||||
|
environment name: 'EXIT_STATUS', value: ''
|
||||||
|
}
|
||||||
|
steps{
|
||||||
|
sh '''#! /bin/bash
|
||||||
|
set -e
|
||||||
|
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/code-server") | .uuid')
|
||||||
|
if [ -z "${PACKAGE_UUID}" ]; then
|
||||||
|
echo "Adding package to Scarf.sh"
|
||||||
|
curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \
|
||||||
|
-H "Authorization: Bearer ${SCARF_TOKEN}" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"name":"linuxserver/code-server",\
|
||||||
|
"shortDescription":"example description",\
|
||||||
|
"libraryType":"docker",\
|
||||||
|
"website":"https://github.com/linuxserver/docker-code-server",\
|
||||||
|
"backendUrl":"https://ghcr.io/linuxserver/code-server",\
|
||||||
|
"publicUrl":"https://lscr.io/linuxserver/code-server"}' || :
|
||||||
|
else
|
||||||
|
echo "Package already exists on Scarf.sh"
|
||||||
|
fi
|
||||||
|
'''
|
||||||
|
}
|
||||||
|
}
|
||||||
/* ###############
|
/* ###############
|
||||||
Build Container
|
Build Container
|
||||||
############### */
|
############### */
|
||||||
// Build Docker container for push to LS Repo
|
// Build Docker container for push to LS Repo
|
||||||
stage('Build-Single') {
|
stage('Build-Single') {
|
||||||
when {
|
when {
|
||||||
environment name: 'MULTIARCH', value: 'false'
|
expression {
|
||||||
|
env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
|
||||||
|
}
|
||||||
environment name: 'EXIT_STATUS', value: ''
|
environment name: 'EXIT_STATUS', value: ''
|
||||||
}
|
}
|
||||||
steps {
|
steps {
|
||||||
@ -400,7 +460,10 @@ pipeline {
|
|||||||
// Build MultiArch Docker containers for push to LS Repo
|
// Build MultiArch Docker containers for push to LS Repo
|
||||||
stage('Build-Multi') {
|
stage('Build-Multi') {
|
||||||
when {
|
when {
|
||||||
|
allOf {
|
||||||
environment name: 'MULTIARCH', value: 'true'
|
environment name: 'MULTIARCH', value: 'true'
|
||||||
|
expression { params.PACKAGE_CHECK == 'false' }
|
||||||
|
}
|
||||||
environment name: 'EXIT_STATUS', value: ''
|
environment name: 'EXIT_STATUS', value: ''
|
||||||
}
|
}
|
||||||
parallel {
|
parallel {
|
||||||
@ -497,7 +560,7 @@ pipeline {
|
|||||||
// Take the image we just built and dump package versions for comparison
|
// Take the image we just built and dump package versions for comparison
|
||||||
stage('Update-packages') {
|
stage('Update-packages') {
|
||||||
when {
|
when {
|
||||||
branch "master"
|
branch "focal"
|
||||||
environment name: 'CHANGE_ID', value: ''
|
environment name: 'CHANGE_ID', value: ''
|
||||||
environment name: 'EXIT_STATUS', value: ''
|
environment name: 'EXIT_STATUS', value: ''
|
||||||
}
|
}
|
||||||
@ -505,7 +568,7 @@ pipeline {
|
|||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
set -e
|
set -e
|
||||||
TEMPDIR=$(mktemp -d)
|
TEMPDIR=$(mktemp -d)
|
||||||
if [ "${MULTIARCH}" == "true" ]; then
|
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
|
||||||
LOCAL_CONTAINER=${IMAGE}:amd64-${META_TAG}
|
LOCAL_CONTAINER=${IMAGE}:amd64-${META_TAG}
|
||||||
else
|
else
|
||||||
LOCAL_CONTAINER=${IMAGE}:${META_TAG}
|
LOCAL_CONTAINER=${IMAGE}:${META_TAG}
|
||||||
@ -534,7 +597,7 @@ pipeline {
|
|||||||
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
|
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
|
if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then
|
||||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
|
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
|
||||||
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f master
|
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f focal
|
||||||
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
|
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
|
||||||
cd ${TEMPDIR}/${LS_REPO}/
|
cd ${TEMPDIR}/${LS_REPO}/
|
||||||
wait
|
wait
|
||||||
@ -558,7 +621,7 @@ pipeline {
|
|||||||
// Exit the build if the package file was just updated
|
// Exit the build if the package file was just updated
|
||||||
stage('PACKAGE-exit') {
|
stage('PACKAGE-exit') {
|
||||||
when {
|
when {
|
||||||
branch "master"
|
branch "focal"
|
||||||
environment name: 'CHANGE_ID', value: ''
|
environment name: 'CHANGE_ID', value: ''
|
||||||
environment name: 'PACKAGE_UPDATED', value: 'true'
|
environment name: 'PACKAGE_UPDATED', value: 'true'
|
||||||
environment name: 'EXIT_STATUS', value: ''
|
environment name: 'EXIT_STATUS', value: ''
|
||||||
@ -566,7 +629,7 @@ pipeline {
|
|||||||
steps {
|
steps {
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
echo "Packages were updated. Cleaning up the image and exiting."
|
echo "Packages were updated. Cleaning up the image and exiting."
|
||||||
if [ "${MULTIARCH}" == "true" ]; then
|
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
|
||||||
docker rmi ${IMAGE}:amd64-${META_TAG}
|
docker rmi ${IMAGE}:amd64-${META_TAG}
|
||||||
else
|
else
|
||||||
docker rmi ${IMAGE}:${META_TAG}
|
docker rmi ${IMAGE}:${META_TAG}
|
||||||
@ -579,7 +642,7 @@ pipeline {
|
|||||||
// Exit the build if this is just a package check and there are no changes to push
|
// Exit the build if this is just a package check and there are no changes to push
|
||||||
stage('PACKAGECHECK-exit') {
|
stage('PACKAGECHECK-exit') {
|
||||||
when {
|
when {
|
||||||
branch "master"
|
branch "focal"
|
||||||
environment name: 'CHANGE_ID', value: ''
|
environment name: 'CHANGE_ID', value: ''
|
||||||
environment name: 'PACKAGE_UPDATED', value: 'false'
|
environment name: 'PACKAGE_UPDATED', value: 'false'
|
||||||
environment name: 'EXIT_STATUS', value: ''
|
environment name: 'EXIT_STATUS', value: ''
|
||||||
@ -590,7 +653,7 @@ pipeline {
|
|||||||
steps {
|
steps {
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
echo "There are no package updates. Cleaning up the image and exiting."
|
echo "There are no package updates. Cleaning up the image and exiting."
|
||||||
if [ "${MULTIARCH}" == "true" ]; then
|
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
|
||||||
docker rmi ${IMAGE}:amd64-${META_TAG}
|
docker rmi ${IMAGE}:amd64-${META_TAG}
|
||||||
else
|
else
|
||||||
docker rmi ${IMAGE}:${META_TAG}
|
docker rmi ${IMAGE}:${META_TAG}
|
||||||
@ -665,6 +728,12 @@ pipeline {
|
|||||||
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
||||||
usernameVariable: 'DOCKERUSER',
|
usernameVariable: 'DOCKERUSER',
|
||||||
passwordVariable: 'DOCKERPASS'
|
passwordVariable: 'DOCKERPASS'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
$class: 'UsernamePasswordMultiBinding',
|
||||||
|
credentialsId: 'Quay.io-Robot',
|
||||||
|
usernameVariable: 'QUAYUSER',
|
||||||
|
passwordVariable: 'QUAYPASS'
|
||||||
]
|
]
|
||||||
]) {
|
]) {
|
||||||
retry(5) {
|
retry(5) {
|
||||||
@ -673,22 +742,32 @@ pipeline {
|
|||||||
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
||||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||||
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
|
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||||
|
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
|
||||||
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
|
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
|
||||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
|
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:focal
|
||||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
||||||
docker push ${PUSHIMAGE}:latest
|
if [ -n "${SEMVER}" ]; then
|
||||||
|
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
|
||||||
|
fi
|
||||||
|
docker push ${PUSHIMAGE}:focal
|
||||||
docker push ${PUSHIMAGE}:${META_TAG}
|
docker push ${PUSHIMAGE}:${META_TAG}
|
||||||
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
||||||
|
if [ -n "${SEMVER}" ]; then
|
||||||
|
docker push ${PUSHIMAGE}:${SEMVER}
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
|
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
|
||||||
docker rmi \
|
docker rmi \
|
||||||
${DELETEIMAGE}:${META_TAG} \
|
${DELETEIMAGE}:${META_TAG} \
|
||||||
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
|
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
|
||||||
${DELETEIMAGE}:latest || :
|
${DELETEIMAGE}:focal || :
|
||||||
|
if [ -n "${SEMVER}" ]; then
|
||||||
|
docker rmi ${DELETEIMAGE}:${SEMVER} || :
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
@ -707,6 +786,12 @@ pipeline {
|
|||||||
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
||||||
usernameVariable: 'DOCKERUSER',
|
usernameVariable: 'DOCKERUSER',
|
||||||
passwordVariable: 'DOCKERPASS'
|
passwordVariable: 'DOCKERPASS'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
$class: 'UsernamePasswordMultiBinding',
|
||||||
|
credentialsId: 'Quay.io-Robot',
|
||||||
|
usernameVariable: 'QUAYUSER',
|
||||||
|
passwordVariable: 'QUAYPASS'
|
||||||
]
|
]
|
||||||
]) {
|
]) {
|
||||||
retry(5) {
|
retry(5) {
|
||||||
@ -715,35 +800,46 @@ pipeline {
|
|||||||
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
||||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||||
|
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||||
if [ "${CI}" == "false" ]; then
|
if [ "${CI}" == "false" ]; then
|
||||||
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
|
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: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
|
||||||
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}"; do
|
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
|
||||||
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
|
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
|
||||||
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
||||||
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest
|
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-focal
|
||||||
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-latest
|
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-focal
|
||||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest
|
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-focal
|
||||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
||||||
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
||||||
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
|
||||||
|
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
|
||||||
|
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
|
||||||
|
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||||
|
fi
|
||||||
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
|
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
|
||||||
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
||||||
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||||
docker push ${MANIFESTIMAGE}:amd64-latest
|
docker push ${MANIFESTIMAGE}:amd64-focal
|
||||||
docker push ${MANIFESTIMAGE}:arm32v7-latest
|
docker push ${MANIFESTIMAGE}:arm32v7-focal
|
||||||
docker push ${MANIFESTIMAGE}:arm64v8-latest
|
docker push ${MANIFESTIMAGE}:arm64v8-focal
|
||||||
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
||||||
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
||||||
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||||
docker manifest push --purge ${MANIFESTIMAGE}:latest || :
|
if [ -n "${SEMVER}" ]; then
|
||||||
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
|
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
|
||||||
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
|
docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
|
||||||
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8
|
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||||
|
fi
|
||||||
|
docker manifest push --purge ${MANIFESTIMAGE}:focal || :
|
||||||
|
docker manifest create ${MANIFESTIMAGE}:focal ${MANIFESTIMAGE}:amd64-focal ${MANIFESTIMAGE}:arm32v7-focal ${MANIFESTIMAGE}:arm64v8-focal
|
||||||
|
docker manifest annotate ${MANIFESTIMAGE}:focal ${MANIFESTIMAGE}:arm32v7-focal --os linux --arch arm
|
||||||
|
docker manifest annotate ${MANIFESTIMAGE}:focal ${MANIFESTIMAGE}:arm64v8-focal --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}: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}:arm32v7-${META_TAG} --os linux --arch arm
|
||||||
@ -752,24 +848,39 @@ pipeline {
|
|||||||
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||||
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
|
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}: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
|
||||||
docker manifest push --purge ${MANIFESTIMAGE}:latest
|
if [ -n "${SEMVER}" ]; then
|
||||||
|
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
|
||||||
|
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||||
|
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
|
||||||
|
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
|
||||||
|
fi
|
||||||
|
docker manifest push --purge ${MANIFESTIMAGE}:focal
|
||||||
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}
|
||||||
|
if [ -n "${SEMVER}" ]; then
|
||||||
|
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
|
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
|
||||||
docker rmi \
|
docker rmi \
|
||||||
${DELETEIMAGE}:amd64-${META_TAG} \
|
${DELETEIMAGE}:amd64-${META_TAG} \
|
||||||
${DELETEIMAGE}:amd64-latest \
|
${DELETEIMAGE}:amd64-focal \
|
||||||
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
|
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
|
||||||
${DELETEIMAGE}:arm32v7-${META_TAG} \
|
${DELETEIMAGE}:arm32v7-${META_TAG} \
|
||||||
${DELETEIMAGE}:arm32v7-latest \
|
${DELETEIMAGE}:arm32v7-focal \
|
||||||
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
|
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
|
||||||
${DELETEIMAGE}:arm64v8-${META_TAG} \
|
${DELETEIMAGE}:arm64v8-${META_TAG} \
|
||||||
${DELETEIMAGE}:arm64v8-latest \
|
${DELETEIMAGE}:arm64v8-focal \
|
||||||
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
|
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
|
||||||
|
if [ -n "${SEMVER}" ]; then
|
||||||
|
docker rmi \
|
||||||
|
${DELETEIMAGE}:amd64-${SEMVER} \
|
||||||
|
${DELETEIMAGE}:arm32v7-${SEMVER} \
|
||||||
|
${DELETEIMAGE}:arm64v8-${SEMVER} || :
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
docker rmi \
|
docker rmi \
|
||||||
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
|
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
|
||||||
@ -781,7 +892,7 @@ pipeline {
|
|||||||
// If this is a public release tag it in the LS Github
|
// If this is a public release tag it in the LS Github
|
||||||
stage('Github-Tag-Push-Release') {
|
stage('Github-Tag-Push-Release') {
|
||||||
when {
|
when {
|
||||||
branch "master"
|
branch "focal"
|
||||||
expression {
|
expression {
|
||||||
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||||
}
|
}
|
||||||
@ -793,14 +904,14 @@ pipeline {
|
|||||||
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
|
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
|
||||||
-d '{"tag":"'${META_TAG}'",\
|
-d '{"tag":"'${META_TAG}'",\
|
||||||
"object": "'${COMMIT_SHA}'",\
|
"object": "'${COMMIT_SHA}'",\
|
||||||
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
|
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to focal",\
|
||||||
"type": "commit",\
|
"type": "commit",\
|
||||||
"tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
|
"tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
|
||||||
echo "Pushing New release for Tag"
|
echo "Pushing New release for Tag"
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json
|
echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json
|
||||||
echo '{"tag_name":"'${META_TAG}'",\
|
echo '{"tag_name":"'${META_TAG}'",\
|
||||||
"target_commitish": "master",\
|
"target_commitish": "focal",\
|
||||||
"name": "'${META_TAG}'",\
|
"name": "'${META_TAG}'",\
|
||||||
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start
|
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start
|
||||||
printf '","draft": false,"prerelease": false}' >> releasebody.json
|
printf '","draft": false,"prerelease": false}' >> releasebody.json
|
||||||
|
21
README.md
21
README.md
@ -1,5 +1,5 @@
|
|||||||
<!-- DO NOT EDIT THIS FILE MANUALLY -->
|
<!-- DO NOT EDIT THIS FILE MANUALLY -->
|
||||||
<!-- Please read the https://github.com/linuxserver/docker-code-server/blob/master/.github/CONTRIBUTING.md -->
|
<!-- Please read the https://github.com/linuxserver/docker-code-server/blob/focal/.github/CONTRIBUTING.md -->
|
||||||
|
|
||||||
[](https://linuxserver.io)
|
[](https://linuxserver.io)
|
||||||
|
|
||||||
@ -29,13 +29,15 @@ Find us at:
|
|||||||
|
|
||||||
# [linuxserver/code-server](https://github.com/linuxserver/docker-code-server)
|
# [linuxserver/code-server](https://github.com/linuxserver/docker-code-server)
|
||||||
|
|
||||||
|
[](https://scarf.sh/gateway/linuxserver-ci/docker/linuxserver%2Fcode-server)
|
||||||
[](https://github.com/linuxserver/docker-code-server)
|
[](https://github.com/linuxserver/docker-code-server)
|
||||||
[](https://github.com/linuxserver/docker-code-server/releases)
|
[](https://github.com/linuxserver/docker-code-server/releases)
|
||||||
[](https://github.com/linuxserver/docker-code-server/packages)
|
[](https://github.com/linuxserver/docker-code-server/packages)
|
||||||
[](https://gitlab.com/linuxserver.io/docker-code-server/container_registry)
|
[](https://gitlab.com/linuxserver.io/docker-code-server/container_registry)
|
||||||
|
[](https://quay.io/repository/linuxserver.io/code-server)
|
||||||
[](https://hub.docker.com/r/linuxserver/code-server)
|
[](https://hub.docker.com/r/linuxserver/code-server)
|
||||||
[](https://hub.docker.com/r/linuxserver/code-server)
|
[](https://hub.docker.com/r/linuxserver/code-server)
|
||||||
[](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/master/)
|
[](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/focal/)
|
||||||
[](https://ci-tests.linuxserver.io/linuxserver/code-server/latest/index.html)
|
[](https://ci-tests.linuxserver.io/linuxserver/code-server/latest/index.html)
|
||||||
|
|
||||||
[Code-server](https://coder.com) is VS Code running on a remote server, accessible through the browser.
|
[Code-server](https://coder.com) is VS Code running on a remote server, accessible through the browser.
|
||||||
@ -52,7 +54,7 @@ Find us at:
|
|||||||
|
|
||||||
Our images support multiple architectures such as `x86-64`, `arm64` and `armhf`. We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
|
Our images support multiple architectures such as `x86-64`, `arm64` and `armhf`. We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
|
||||||
|
|
||||||
Simply pulling `ghcr.io/linuxserver/code-server` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
|
Simply pulling `lscr.io/linuxserver/code-server` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
|
||||||
|
|
||||||
The architectures supported by this image are:
|
The architectures supported by this image are:
|
||||||
|
|
||||||
@ -69,7 +71,7 @@ This image provides various versions that are available via tags. `latest` tag u
|
|||||||
| Tag | Description |
|
| Tag | Description |
|
||||||
| :----: | --- |
|
| :----: | --- |
|
||||||
| latest | Stable releases |
|
| latest | Stable releases |
|
||||||
| development | DEPRECATED (no longer updated) - Prereleases from their GitHub |
|
| focal | Stable releases, on a focal baseiamge |
|
||||||
|
|
||||||
## Application Setup
|
## Application Setup
|
||||||
|
|
||||||
@ -97,7 +99,7 @@ Here are some example snippets to help you get started creating a container.
|
|||||||
version: "2.1"
|
version: "2.1"
|
||||||
services:
|
services:
|
||||||
code-server:
|
code-server:
|
||||||
image: ghcr.io/linuxserver/code-server
|
image: lscr.io/linuxserver/code-server
|
||||||
container_name: code-server
|
container_name: code-server
|
||||||
environment:
|
environment:
|
||||||
- PUID=1000
|
- PUID=1000
|
||||||
@ -131,7 +133,7 @@ docker run -d \
|
|||||||
-p 8443:8443 \
|
-p 8443:8443 \
|
||||||
-v /path/to/appdata/config:/config \
|
-v /path/to/appdata/config:/config \
|
||||||
--restart unless-stopped \
|
--restart unless-stopped \
|
||||||
ghcr.io/linuxserver/code-server
|
lscr.io/linuxserver/code-server
|
||||||
```
|
```
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
@ -194,7 +196,7 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
|
|||||||
* container version number
|
* container version number
|
||||||
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' code-server`
|
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' code-server`
|
||||||
* image version number
|
* image version number
|
||||||
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' ghcr.io/linuxserver/code-server`
|
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/code-server`
|
||||||
|
|
||||||
## Updating Info
|
## Updating Info
|
||||||
|
|
||||||
@ -212,7 +214,7 @@ Below are the instructions for updating containers:
|
|||||||
|
|
||||||
### Via Docker Run
|
### Via Docker Run
|
||||||
|
|
||||||
* Update the image: `docker pull ghcr.io/linuxserver/code-server`
|
* Update the image: `docker pull lscr.io/linuxserver/code-server`
|
||||||
* Stop the running container: `docker stop code-server`
|
* Stop the running container: `docker stop code-server`
|
||||||
* Delete the container: `docker rm code-server`
|
* Delete the container: `docker rm code-server`
|
||||||
* Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
|
* Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
|
||||||
@ -247,7 +249,7 @@ cd docker-code-server
|
|||||||
docker build \
|
docker build \
|
||||||
--no-cache \
|
--no-cache \
|
||||||
--pull \
|
--pull \
|
||||||
-t ghcr.io/linuxserver/code-server:latest .
|
-t lscr.io/linuxserver/code-server:latest .
|
||||||
```
|
```
|
||||||
|
|
||||||
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
|
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
|
||||||
@ -260,6 +262,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
|
|||||||
|
|
||||||
## Versions
|
## Versions
|
||||||
|
|
||||||
|
* **12.07.21:** - Rebase to focal
|
||||||
* **11.07.21:** - Bump node to 14 to fix builds
|
* **11.07.21:** - Bump node to 14 to fix builds
|
||||||
* **08.05.21:** - Fix doc link
|
* **08.05.21:** - Fix doc link
|
||||||
* **04.02.20:** - Allow setting gui password via hash using env var `HASHED_PASSWORD`.
|
* **04.02.20:** - Allow setting gui password via hash using env var `HASHED_PASSWORD`.
|
||||||
|
@ -5,8 +5,8 @@ project_name: docker-code-server
|
|||||||
external_type: na
|
external_type: na
|
||||||
custom_version_command: "curl -sX GET https://registry.yarnpkg.com/code-server | jq -r '.\"dist-tags\".latest' | sed 's|^|v|'"
|
custom_version_command: "curl -sX GET https://registry.yarnpkg.com/code-server | jq -r '.\"dist-tags\".latest' | sed 's|^|v|'"
|
||||||
release_type: stable
|
release_type: stable
|
||||||
release_tag: latest
|
release_tag: focal
|
||||||
ls_branch: master
|
ls_branch: focal
|
||||||
repo_vars:
|
repo_vars:
|
||||||
- CONTAINER_NAME = 'code-server'
|
- CONTAINER_NAME = 'code-server'
|
||||||
- BUILD_VERSION_ARG = 'CODE_RELEASE'
|
- BUILD_VERSION_ARG = 'CODE_RELEASE'
|
||||||
|
@ -1,185 +1,190 @@
|
|||||||
adduser3.116ubuntu1
|
adduser3.118ubuntu2
|
||||||
apt1.6.14
|
apt2.0.6
|
||||||
apt-utils1.6.14
|
apt-utils2.0.6
|
||||||
base-files10.1ubuntu2.10
|
base-files11ubuntu5.4
|
||||||
base-passwd3.5.44
|
base-passwd3.5.47
|
||||||
bash4.4.18-2ubuntu1.2
|
bash5.0-6ubuntu1.1
|
||||||
bsdutils1:2.31.1-0.4ubuntu3.7
|
bsdutils1:2.34-0.1ubuntu9.1
|
||||||
bzip21.0.6-8.1ubuntu0.2
|
bzip21.0.8-2
|
||||||
ca-certificates20210119~18.04.1
|
ca-certificates20210119~20.04.2
|
||||||
coreutils8.28-1ubuntu1
|
coreutils8.30-3ubuntu2
|
||||||
curl7.58.0-2ubuntu3.13
|
curl7.68.0-1ubuntu2.7
|
||||||
dash0.5.8-2.10
|
dash0.5.10.2-6
|
||||||
debconf1.5.66ubuntu1
|
debconf1.5.73
|
||||||
debianutils4.8.4
|
debianutils4.9.1
|
||||||
diffutils1:3.6-1
|
diffutils1:3.7-3
|
||||||
dirmngr2.2.4-1ubuntu1.4
|
dirmngr2.2.19-3ubuntu2.1
|
||||||
dpkg1.19.0.5ubuntu2.3
|
dpkg1.19.7ubuntu3
|
||||||
e2fsprogs1.44.1-1ubuntu1.3
|
e2fsprogs1.45.5-2ubuntu1
|
||||||
fdisk2.31.1-0.4ubuntu3.7
|
fdisk2.34-0.1ubuntu9.1
|
||||||
file1:5.32-2ubuntu0.4
|
file1:5.38-4
|
||||||
findutils4.6.0+git+20170828-2
|
findutils4.7.0-1ubuntu1
|
||||||
gcc-8-base8.4.0-1ubuntu1~18.04
|
gcc-10-base10.3.0-1ubuntu1~20.04
|
||||||
git1:2.17.1-1ubuntu0.8
|
git1:2.25.1-1ubuntu3.2
|
||||||
git-man1:2.17.1-1ubuntu0.8
|
git-man1:2.25.1-1ubuntu3.2
|
||||||
gnupg2.2.4-1ubuntu1.4
|
gnupg2.2.19-3ubuntu2.1
|
||||||
gnupg-l10n2.2.4-1ubuntu1.4
|
gnupg-l10n2.2.19-3ubuntu2.1
|
||||||
gnupg-utils2.2.4-1ubuntu1.4
|
gnupg-utils2.2.19-3ubuntu2.1
|
||||||
gpg2.2.4-1ubuntu1.4
|
gpg2.2.19-3ubuntu2.1
|
||||||
gpg-agent2.2.4-1ubuntu1.4
|
gpg-agent2.2.19-3ubuntu2.1
|
||||||
gpgconf2.2.4-1ubuntu1.4
|
gpgconf2.2.19-3ubuntu2.1
|
||||||
gpgsm2.2.4-1ubuntu1.4
|
gpgsm2.2.19-3ubuntu2.1
|
||||||
gpgv2.2.4-1ubuntu1.4
|
gpgv2.2.19-3ubuntu2.1
|
||||||
gpg-wks-client2.2.4-1ubuntu1.4
|
gpg-wks-client2.2.19-3ubuntu2.1
|
||||||
gpg-wks-server2.2.4-1ubuntu1.4
|
gpg-wks-server2.2.19-3ubuntu2.1
|
||||||
grep3.1-2build1
|
grep3.4-1
|
||||||
gzip1.6-5ubuntu1
|
gzip1.10-0ubuntu4
|
||||||
hostname3.20
|
hostname3.23
|
||||||
init-system-helpers1.51
|
init-system-helpers1.57
|
||||||
jq1.5+dfsg-2
|
jq1.6-1ubuntu0.20.04.1
|
||||||
krb5-locales1.16-2ubuntu0.2
|
krb5-locales1.17-6ubuntu4.1
|
||||||
less487-0.1
|
less551-1ubuntu0.1
|
||||||
libacl12.2.52-3build1
|
libacl12.2.53-6
|
||||||
libapt-inst2.01.6.14
|
libapt-pkg6.02.0.6
|
||||||
libapt-pkg5.01.6.14
|
libasn1-8-heimdal7.7.0+dfsg-1ubuntu1
|
||||||
libasn1-8-heimdal7.5.0+dfsg-1
|
libassuan02.5.3-7ubuntu2
|
||||||
libassuan02.5.1-2
|
libattr11:2.4.48-5
|
||||||
libattr11:2.4.47-2build1
|
libaudit11:2.8.5-2ubuntu6
|
||||||
libaudit11:2.8.2-1ubuntu1.1
|
libaudit-common1:2.8.5-2ubuntu6
|
||||||
libaudit-common1:2.8.2-1ubuntu1.1
|
libblkid12.34-0.1ubuntu9.1
|
||||||
libblkid12.31.1-0.4ubuntu3.7
|
libbrotli11.0.7-6ubuntu0.1
|
||||||
libbsd00.8.7-1ubuntu0.1
|
libbsd00.10.0-1
|
||||||
libbz2-1.01.0.6-8.1ubuntu0.2
|
libbz2-1.01.0.8-2
|
||||||
libc62.27-3ubuntu1.4
|
libc62.31-0ubuntu9.2
|
||||||
libcap-ng00.7.7-3.1
|
libcap-ng00.7.9-2.1build1
|
||||||
libc-bin2.27-3ubuntu1.4
|
libc-bin2.31-0ubuntu9.2
|
||||||
libcom-err21.44.1-1ubuntu1.3
|
libcbor0.60.6.0-0ubuntu1
|
||||||
libcurl3-gnutls7.58.0-2ubuntu3.13
|
libcom-err21.45.5-2ubuntu1
|
||||||
libcurl47.58.0-2ubuntu3.13
|
libcrypt11:4.4.10-10ubuntu4
|
||||||
libdb5.35.3.28-13.1ubuntu1.1
|
libcurl3-gnutls7.68.0-1ubuntu2.7
|
||||||
libdebconfclient00.213ubuntu1
|
libcurl47.68.0-1ubuntu2.7
|
||||||
libedit23.1-20170329-1
|
libdb5.35.3.28+dfsg1-0.6ubuntu2
|
||||||
liberror-perl0.17025-1
|
libdebconfclient00.251ubuntu1
|
||||||
libexpat12.2.5-3ubuntu0.2
|
libedit23.1-20191231-1
|
||||||
libext2fs21.44.1-1ubuntu1.3
|
liberror-perl0.17029-1
|
||||||
libfdisk12.31.1-0.4ubuntu3.7
|
libexpat12.2.9-1build1
|
||||||
libffi63.2.1-8
|
libext2fs21.45.5-2ubuntu1
|
||||||
libgcc11:8.4.0-1ubuntu1~18.04
|
libfdisk12.34-0.1ubuntu9.1
|
||||||
libgcrypt201.8.1-4ubuntu1.2
|
libffi73.3-4
|
||||||
libgdbm51.14.1-6
|
libfido2-11.3.1-1ubuntu2
|
||||||
libgdbm-compat41.14.1-6
|
libgcc-s110.3.0-1ubuntu1~20.04
|
||||||
libgmp102:6.1.2+dfsg-2
|
libgcrypt201.8.5-5ubuntu1.1
|
||||||
libgnutls303.5.18-1ubuntu1.4
|
libgdbm61.18.1-5
|
||||||
libgpg-error01.27-6
|
libgdbm-compat41.18.1-5
|
||||||
libgssapi3-heimdal7.5.0+dfsg-1
|
libgmp102:6.2.0+dfsg-4
|
||||||
libgssapi-krb5-21.16-2ubuntu0.2
|
libgnutls303.6.13-2ubuntu1.6
|
||||||
libhcrypto4-heimdal7.5.0+dfsg-1
|
libgpg-error01.37-1
|
||||||
libheimbase1-heimdal7.5.0+dfsg-1
|
libgssapi3-heimdal7.7.0+dfsg-1ubuntu1
|
||||||
libheimntlm0-heimdal7.5.0+dfsg-1
|
libgssapi-krb5-21.17-6ubuntu4.1
|
||||||
libhogweed43.4.1-0ubuntu0.18.04.1
|
libhcrypto4-heimdal7.7.0+dfsg-1ubuntu1
|
||||||
libhx509-5-heimdal7.5.0+dfsg-1
|
libheimbase1-heimdal7.7.0+dfsg-1ubuntu1
|
||||||
libidn2-02.0.4-1.1ubuntu0.2
|
libheimntlm0-heimdal7.7.0+dfsg-1ubuntu1
|
||||||
libjq11.5+dfsg-2
|
libhogweed53.5.1+really3.5.1-2ubuntu0.2
|
||||||
libk5crypto31.16-2ubuntu0.2
|
libhx509-5-heimdal7.7.0+dfsg-1ubuntu1
|
||||||
libkeyutils11.5.9-9.2ubuntu2
|
libidn2-02.2.0-2
|
||||||
libkrb5-26-heimdal7.5.0+dfsg-1
|
libjq11.6-1ubuntu0.20.04.1
|
||||||
libkrb5-31.16-2ubuntu0.2
|
libk5crypto31.17-6ubuntu4.1
|
||||||
libkrb5support01.16-2ubuntu0.2
|
libkeyutils11.6-6ubuntu1
|
||||||
|
libkrb5-26-heimdal7.7.0+dfsg-1ubuntu1
|
||||||
|
libkrb5-31.17-6ubuntu4.1
|
||||||
|
libkrb5support01.17-6ubuntu4.1
|
||||||
libksba81.3.5-2
|
libksba81.3.5-2
|
||||||
libldap-2.4-22.4.45+dfsg-1ubuntu1.10
|
libldap-2.4-22.4.49+dfsg-2ubuntu1.8
|
||||||
libldap-common2.4.45+dfsg-1ubuntu1.10
|
libldap-common2.4.49+dfsg-2ubuntu1.8
|
||||||
liblz4-10.0~r131-2ubuntu3.1
|
liblz4-11.9.2-2ubuntu0.20.04.1
|
||||||
liblzma55.2.2-1.3
|
liblzma55.2.4-1ubuntu1
|
||||||
libmagic11:5.32-2ubuntu0.4
|
libmagic11:5.38-4
|
||||||
libmagic-mgc1:5.32-2ubuntu0.4
|
libmagic-mgc1:5.38-4
|
||||||
libmount12.31.1-0.4ubuntu3.7
|
libmount12.34-0.1ubuntu9.1
|
||||||
libncurses56.1-1ubuntu1.18.04
|
libmpdec22.4.2-3
|
||||||
libncursesw56.1-1ubuntu1.18.04
|
libncurses66.2-0ubuntu2
|
||||||
libnettle63.4.1-0ubuntu0.18.04.1
|
libncursesw66.2-0ubuntu2
|
||||||
libnghttp2-141.30.0-1ubuntu1
|
libnettle73.5.1+really3.5.1-2ubuntu0.2
|
||||||
libnpth01.5-3
|
libnghttp2-141.40.0-1build1
|
||||||
libonig46.7.0-1
|
libnpth01.6-1
|
||||||
libp11-kit00.23.9-2ubuntu0.1
|
libonig56.9.4-1
|
||||||
libpam0g1.1.8-3.6ubuntu2.18.04.3
|
libp11-kit00.23.20-1ubuntu0.1
|
||||||
libpam-modules1.1.8-3.6ubuntu2.18.04.3
|
libpam0g1.3.1-5ubuntu4.3
|
||||||
libpam-modules-bin1.1.8-3.6ubuntu2.18.04.3
|
libpam-modules1.3.1-5ubuntu4.3
|
||||||
libpam-runtime1.1.8-3.6ubuntu2.18.04.3
|
libpam-modules-bin1.3.1-5ubuntu4.3
|
||||||
libpcre32:8.39-9
|
libpam-runtime1.3.1-5ubuntu4.3
|
||||||
libperl5.265.26.1-6ubuntu0.5
|
libpcre2-8-010.34-7
|
||||||
libprocps62:3.3.12-3ubuntu1.2
|
libpcre32:8.39-12build1
|
||||||
libpsl50.19.1-5build1
|
libperl5.305.30.0-9ubuntu0.2
|
||||||
libpython2.7-minimal2.7.17-1~18.04ubuntu1.6
|
libprocps82:3.3.16-1ubuntu2.3
|
||||||
libpython2.7-stdlib2.7.17-1~18.04ubuntu1.6
|
libpsl50.21.0-1ubuntu1
|
||||||
libpython-stdlib2.7.15~rc1-1
|
libpython3.8-minimal3.8.10-0ubuntu1~20.04.2
|
||||||
libreadline77.0-3
|
libpython3.8-stdlib3.8.10-0ubuntu1~20.04.2
|
||||||
libroken18-heimdal7.5.0+dfsg-1
|
libpython3-stdlib3.8.2-0ubuntu2
|
||||||
librtmp12.4+20151223.gitfa8646d.1-1
|
libreadline88.0-4
|
||||||
libsasl2-22.1.27~101-g0780600+dfsg-3ubuntu2.3
|
libroken18-heimdal7.7.0+dfsg-1ubuntu1
|
||||||
libsasl2-modules2.1.27~101-g0780600+dfsg-3ubuntu2.3
|
librtmp12.4+20151223.gitfa8646d.1-2build1
|
||||||
libsasl2-modules-db2.1.27~101-g0780600+dfsg-3ubuntu2.3
|
libsasl2-22.1.27+dfsg-2
|
||||||
libseccomp22.5.1-1ubuntu1~18.04.1
|
libsasl2-modules2.1.27+dfsg-2
|
||||||
libselinux12.7-2build2
|
libsasl2-modules-db2.1.27+dfsg-2
|
||||||
libsemanage12.7-2build2
|
libseccomp22.5.1-1ubuntu1~20.04.2
|
||||||
libsemanage-common2.7-2build2
|
libselinux13.0-1build2
|
||||||
libsepol12.7-1
|
libsemanage13.0-1build2
|
||||||
libsmartcols12.31.1-0.4ubuntu3.7
|
libsemanage-common3.0-1build2
|
||||||
libsqlite3-03.22.0-1ubuntu0.4
|
libsepol13.0-1
|
||||||
libss21.44.1-1ubuntu1.3
|
libsmartcols12.34-0.1ubuntu9.1
|
||||||
libssl1.0.01.0.2n-1ubuntu5.6
|
libsqlite3-03.31.1-4ubuntu0.2
|
||||||
libssl1.11.1.1-1ubuntu2.1~18.04.9
|
libss21.45.5-2ubuntu1
|
||||||
libstdc++68.4.0-1ubuntu1~18.04
|
libssh-40.9.3-2ubuntu2.2
|
||||||
libsystemd0237-3ubuntu10.48
|
libssl1.11.1.1f-1ubuntu2.10
|
||||||
libtasn1-64.13-2
|
libstdc++610.3.0-1ubuntu1~20.04
|
||||||
libtinfo56.1-1ubuntu1.18.04
|
libsystemd0245.4-4ubuntu3.13
|
||||||
libudev1237-3ubuntu10.48
|
libtasn1-64.16.0-2
|
||||||
libunistring20.9.9-0ubuntu2
|
libtinfo66.2-0ubuntu2
|
||||||
libuuid12.31.1-0.4ubuntu3.7
|
libudev1245.4-4ubuntu3.13
|
||||||
libwind0-heimdal7.5.0+dfsg-1
|
libunistring20.9.10-2
|
||||||
libx11-62:1.6.4-3ubuntu0.4
|
libuuid12.34-0.1ubuntu9.1
|
||||||
libx11-data2:1.6.4-3ubuntu0.4
|
libwind0-heimdal7.7.0+dfsg-1ubuntu1
|
||||||
libxau61:1.0.8-1ubuntu1
|
libx11-62:1.6.9-2ubuntu1.2
|
||||||
libxcb11.13-2~ubuntu18.04
|
libx11-data2:1.6.9-2ubuntu1.2
|
||||||
libxdmcp61:1.1.2-3
|
libxau61:1.0.9-0ubuntu1
|
||||||
libxext62:1.3.3-1
|
libxcb11.14-2
|
||||||
libxmuu12:1.1.2-2
|
libxdmcp61:1.1.3-0ubuntu1
|
||||||
libzstd11.3.3+dfsg-2ubuntu1.2
|
libxext62:1.3.4-0ubuntu1
|
||||||
locales2.27-3ubuntu1.4
|
libxmuu12:1.1.3-0ubuntu1
|
||||||
login1:4.5-1ubuntu2
|
libzstd11.4.4+dfsg-3ubuntu0.1
|
||||||
lsb-base9.20170808ubuntu1
|
locales2.31-0ubuntu9.2
|
||||||
mawk1.3.3-17ubuntu3
|
login1:4.8.1-1ubuntu5.20.04.1
|
||||||
mime-support3.60ubuntu1
|
logsave1.45.5-2ubuntu1
|
||||||
mount2.31.1-0.4ubuntu3.7
|
lsb-base11.1.0ubuntu2
|
||||||
multiarch-support2.27-3ubuntu1.4
|
mawk1.3.4.20200120-2
|
||||||
nano2.9.3-2
|
mime-support3.64ubuntu1
|
||||||
ncurses-base6.1-1ubuntu1.18.04
|
mount2.34-0.1ubuntu9.1
|
||||||
ncurses-bin6.1-1ubuntu1.18.04
|
nano4.8-1ubuntu1
|
||||||
netbase5.4
|
ncurses-base6.2-0ubuntu2
|
||||||
net-tools1.60+git20161116.90da8a0-1ubuntu1
|
ncurses-bin6.2-0ubuntu2
|
||||||
nodejs14.17.2-1nodesource1
|
netbase6.1
|
||||||
openssh-client1:7.6p1-4ubuntu0.3
|
net-tools1.60+git20180626.aebd88e-1ubuntu1
|
||||||
openssl1.1.1-1ubuntu2.1~18.04.9
|
nodejs14.18.2-deb-1nodesource1
|
||||||
passwd1:4.5-1ubuntu2
|
openssh-client1:8.2p1-4ubuntu0.3
|
||||||
patch2.7.6-2ubuntu1.1
|
openssl1.1.1f-1ubuntu2.10
|
||||||
perl5.26.1-6ubuntu0.5
|
passwd1:4.8.1-1ubuntu5.20.04.1
|
||||||
perl-base5.26.1-6ubuntu0.5
|
patch2.7.6-6
|
||||||
perl-modules-5.265.26.1-6ubuntu0.5
|
perl5.30.0-9ubuntu0.2
|
||||||
pinentry-curses1.1.0-1
|
perl-base5.30.0-9ubuntu0.2
|
||||||
procps2:3.3.12-3ubuntu1.2
|
perl-modules-5.305.30.0-9ubuntu0.2
|
||||||
publicsuffix20180223.1310-1
|
pinentry-curses1.1.0-3build1
|
||||||
python2.7.15~rc1-1
|
procps2:3.3.16-1ubuntu2.3
|
||||||
python2.72.7.17-1~18.04ubuntu1.6
|
publicsuffix20200303.0012-1
|
||||||
python2.7-minimal2.7.17-1~18.04ubuntu1.6
|
python33.8.2-0ubuntu2
|
||||||
python-minimal2.7.15~rc1-1
|
python3.83.8.10-0ubuntu1~20.04.2
|
||||||
readline-common7.0-3
|
python3.8-minimal3.8.10-0ubuntu1~20.04.2
|
||||||
sed4.4-2
|
python3-minimal3.8.2-0ubuntu2
|
||||||
sensible-utils0.0.12
|
readline-common8.0-4
|
||||||
sudo1.8.21p2-3ubuntu1.4
|
sed4.7-1
|
||||||
sysvinit-utils2.88dsf-59.10ubuntu1
|
sensible-utils0.0.12+nmu1
|
||||||
tar1.29b-2ubuntu0.2
|
sudo1.8.31-1ubuntu1.2
|
||||||
tzdata2021a-0ubuntu0.18.04
|
sysvinit-utils2.96-2.1ubuntu1
|
||||||
ubuntu-keyring2018.09.18.1~18.04.2
|
tar1.30+dfsg-7ubuntu0.20.04.1
|
||||||
util-linux2.31.1-0.4ubuntu3.7
|
tzdata2021e-0ubuntu0.20.04
|
||||||
xauth1:1.0.10-1
|
ubuntu-keyring2020.02.11.4
|
||||||
xz-utils5.2.2-1.3
|
util-linux2.34-0.1ubuntu9.1
|
||||||
yarn1.22.5-1
|
xauth1:1.1-0ubuntu1
|
||||||
zlib1g1:1.2.11.dfsg-0ubuntu2
|
xz-utils5.2.4-1ubuntu1
|
||||||
|
yarn1.22.17-1
|
||||||
|
zlib1g1:1.2.11.dfsg-2ubuntu1.2
|
||||||
|
@ -29,7 +29,7 @@ available_architectures:
|
|||||||
development_versions: true
|
development_versions: true
|
||||||
development_versions_items:
|
development_versions_items:
|
||||||
- { tag: "latest", desc: "Stable releases" }
|
- { tag: "latest", desc: "Stable releases" }
|
||||||
- { tag: "development", desc: "DEPRECATED (no longer updated) - Prereleases from their GitHub" }
|
- { tag: "focal", desc: "Stable releases, on a focal baseiamge" }
|
||||||
|
|
||||||
# container parameters
|
# container parameters
|
||||||
common_param_env_vars_enabled: true
|
common_param_env_vars_enabled: true
|
||||||
@ -75,6 +75,7 @@ app_setup_block: |
|
|||||||
|
|
||||||
# changelog
|
# changelog
|
||||||
changelogs:
|
changelogs:
|
||||||
|
- { date: "12.07.21:", desc: "Rebase to focal" }
|
||||||
- { date: "11.07.21:", desc: "Bump node to 14 to fix builds" }
|
- { date: "11.07.21:", desc: "Bump node to 14 to fix builds" }
|
||||||
- { date: "08.05.21:", desc: "Fix doc link" }
|
- { date: "08.05.21:", desc: "Fix doc link" }
|
||||||
- { date: "04.02.20:", desc: "Allow setting gui password via hash using env var `HASHED_PASSWORD`." }
|
- { date: "04.02.20:", desc: "Allow setting gui password via hash using env var `HASHED_PASSWORD`." }
|
||||||
|
@ -17,6 +17,11 @@ if [ -n "${SUDO_PASSWORD}" ] || [ -n "${SUDO_PASSWORD_HASH}" ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
[[ ! -f /config/.bashrc ]] && \
|
||||||
|
cp /root/.bashrc /config/.bashrc
|
||||||
|
[[ ! -f /config/.profile ]] && \
|
||||||
|
cp /root/.profile /config/.profile
|
||||||
|
|
||||||
# permissions
|
# permissions
|
||||||
chown -R abc:abc \
|
chown -R abc:abc \
|
||||||
/config
|
/config
|
||||||
|
Loading…
x
Reference in New Issue
Block a user