Skip to content

Commit b357321

Browse files
authored
Merge pull request #3 from linuxserver/riscv
2 parents 0b56ea0 + 1edc28a commit b357321

5 files changed

Lines changed: 136 additions & 7 deletions

File tree

Dockerfile.riscv64

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# syntax=docker/dockerfile:1
2+
3+
FROM ghcr.io/linuxserver/baseimage-ubuntu:riscv64-noble
4+
5+
# set version label
6+
ARG BUILD_DATE
7+
ARG VERSION
8+
ARG CODE_RELEASE
9+
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
10+
LABEL maintainer="aptalca"
11+
12+
# environment settings
13+
ARG DEBIAN_FRONTEND="noninteractive"
14+
ENV HOME="/config"
15+
16+
RUN \
17+
echo "**** install runtime dependencies ****" && \
18+
apt-get update && \
19+
apt-get install -y \
20+
git \
21+
libatomic1 \
22+
nano \
23+
net-tools \
24+
sudo && \
25+
echo "**** install vscodium-web ****" && \
26+
if [ -z ${CODE_RELEASE+x} ]; then \
27+
CODE_RELEASE=$(curl -s https://api.github.com/repos/VSCodium/vscodium/releases/latest \
28+
| jq -r '. | .tag_name'); \
29+
fi && \
30+
mkdir -p /app/vscodium-web && \
31+
curl -o \
32+
/tmp/vscodium-web.tar.gz -L \
33+
"https://github.com/VSCodium/vscodium/releases/download/${CODE_RELEASE}/vscodium-reh-web-linux-riscv64-${CODE_RELEASE}.tar.gz" && \
34+
tar xf \
35+
/tmp/vscodium-web.tar.gz -C \
36+
/app/vscodium-web/ --strip-components=1 && \
37+
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
38+
echo "**** clean up ****" && \
39+
apt-get clean && \
40+
rm -rf \
41+
/tmp/* \
42+
/var/lib/apt/lists/* \
43+
/var/tmp/*
44+
45+
# add local files
46+
COPY /root /
47+
48+
# ports and volumes
49+
EXPOSE 8000

Jenkinsfile

Lines changed: 83 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ pipeline {
210210
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
211211
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
212212
if (env.MULTIARCH == 'true') {
213-
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
213+
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|riscv64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
214214
} else {
215215
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
216216
}
@@ -235,7 +235,7 @@ pipeline {
235235
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
236236
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
237237
if (env.MULTIARCH == 'true') {
238-
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
238+
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|riscv64-' + 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
239239
} else {
240240
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
241241
}
@@ -260,7 +260,7 @@ pipeline {
260260
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
261261
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
262262
if (env.MULTIARCH == 'true') {
263-
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
263+
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|riscv64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
264264
} else {
265265
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
266266
}
@@ -783,6 +783,76 @@ pipeline {
783783
'''
784784
}
785785
}
786+
stage('Build RISCV64') {
787+
agent {
788+
label 'RISCV64'
789+
}
790+
steps {
791+
echo "Running on node: ${NODE_NAME}"
792+
sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.riscv64"
793+
sh "docker buildx build \
794+
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
795+
--label \"org.opencontainers.image.authors=linuxserver.io\" \
796+
--label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-vscodium-web/packages\" \
797+
--label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-vscodium-web\" \
798+
--label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-vscodium-web\" \
799+
--label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \
800+
--label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \
801+
--label \"org.opencontainers.image.vendor=linuxserver.io\" \
802+
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
803+
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
804+
--label \"org.opencontainers.image.title=Vscodium-web\" \
805+
--label \"org.opencontainers.image.description=[Vscodium-web](https://vscodium.com/) is a community-driven, freely-licensed binary distribution of the remote host web component of Microsoft's editor VS Code.\" \
806+
--no-cache --pull -f Dockerfile.riscv64 -t ${IMAGE}:riscv64-${META_TAG} --platform=linux/riscv64 \
807+
--provenance=true --sbom=true --builder=container --load \
808+
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
809+
sh '''#! /bin/bash
810+
set -e
811+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
812+
for i in "${CACHE[@]}"; do
813+
docker tag ${IMAGE}:riscv64-${META_TAG} ${i}:riscv64-${COMMIT_SHA}-${BUILD_NUMBER}
814+
done
815+
'''
816+
withCredentials([
817+
[
818+
$class: 'UsernamePasswordMultiBinding',
819+
credentialsId: 'Quay.io-Robot',
820+
usernameVariable: 'QUAYUSER',
821+
passwordVariable: 'QUAYPASS'
822+
]
823+
]) {
824+
retry_backoff(5,5) {
825+
sh '''#! /bin/bash
826+
set -e
827+
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
828+
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
829+
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
830+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
831+
832+
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
833+
declare -A pids
834+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
835+
for i in "${CACHE[@]}"; do
836+
docker push ${i}:riscv64-${COMMIT_SHA}-${BUILD_NUMBER} &
837+
pids[$!]="$i"
838+
done
839+
for p in "${!pids[@]}"; do
840+
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
841+
done
842+
fi
843+
'''
844+
}
845+
}
846+
sh '''#! /bin/bash
847+
containers=$(docker ps -aq)
848+
if [[ -n "${containers}" ]]; then
849+
docker stop ${containers}
850+
fi
851+
docker system prune -f --volumes || :
852+
docker image prune -af || :
853+
'''
854+
}
855+
}
786856
}
787857
}
788858
// Take the image we just built and dump package versions for comparison
@@ -896,6 +966,8 @@ pipeline {
896966
if [ "${MULTIARCH}" == "true" ]; then
897967
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
898968
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
969+
docker pull ghcr.io/linuxserver/lsiodev-buildcache:riscv64-${COMMIT_SHA}-${BUILD_NUMBER} --platform=riscv64
970+
docker tag ghcr.io/linuxserver/lsiodev-buildcache:riscv64-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:riscv64-${META_TAG}
899971
fi
900972
docker run --rm \
901973
--shm-size=1gb \
@@ -977,22 +1049,26 @@ pipeline {
9771049
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
9781050
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
9791051
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
1052+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:riscv64-${META_TAG} -t ${MANIFESTIMAGE}:riscv64-latest -t ${MANIFESTIMAGE}:riscv64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:riscv64-${COMMIT_SHA}-${BUILD_NUMBER} || \
1053+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
9801054
if [ -n "${SEMVER}" ]; then
9811055
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
9821056
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
9831057
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
9841058
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
1059+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:riscv64-${SEMVER} ${CACHEIMAGE}:riscv64-${COMMIT_SHA}-${BUILD_NUMBER} || \
1060+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
9851061
fi
9861062
done
9871063
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
988-
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest || \
1064+
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:riscv64-latest ${MANIFESTIMAGE}:arm64v8-latest || \
9891065
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
990-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} || \
1066+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:riscv64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} || \
9911067
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
992-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \
1068+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:riscv64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \
9931069
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
9941070
if [ -n "${SEMVER}" ]; then
995-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \
1071+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:riscv64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \
9961072
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
9971073
fi
9981074
done

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ The architectures supported by this image are:
5252
| Architecture | Available | Tag |
5353
| :----: | :----: | ---- |
5454
| x86-64 || amd64-\<version tag\> |
55+
| riscv64 || riscv64-\<version tag\> |
5556
| arm64 || arm64v8-\<version tag\> |
5657

5758
## Application Setup
@@ -300,4 +301,5 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
300301

301302
## Versions
302303

304+
* **28.02.26:** - Add RISCV build.
303305
* **18.12.25:** - Initial Release.

jenkins-vars.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ external_type: github_stable
66
release_type: stable
77
release_tag: latest
88
ls_branch: main
9+
build_riscv64: true
910
repo_vars:
1011
- EXT_GIT_BRANCH = 'master'
1112
- EXT_USER = 'VSCodium'

readme-vars.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,4 +90,5 @@ init_diagram: |
9090
"vscodium-web:latest" <- Base Images
9191
# changelog
9292
changelogs:
93+
- {date: "28.02.26:", desc: "Add RISCV build."}
9394
- {date: "18.12.25:", desc: "Initial Release."}

0 commit comments

Comments
 (0)