mirror of
https://github.com/linuxserver/docker-baseimage-rdesktop.git
synced 2026-02-20 08:39:58 +08:00
add Alpine rdesktop baseimage
This commit is contained in:
parent
1e4d8de94a
commit
5b1c8167c0
4
.github/workflows/external_trigger.yml
vendored
4
.github/workflows/external_trigger.yml
vendored
@ -4,13 +4,13 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
external-trigger-master:
|
||||
external-trigger-alpine:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2.3.3
|
||||
|
||||
- name: External Trigger
|
||||
if: github.ref == 'refs/heads/master'
|
||||
if: github.ref == 'refs/heads/alpine'
|
||||
run: |
|
||||
echo "**** No external release, exiting ****"
|
||||
exit 0
|
||||
|
||||
14
.github/workflows/package_trigger.yml
vendored
14
.github/workflows/package_trigger.yml
vendored
@ -4,25 +4,25 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
package-trigger-master:
|
||||
package-trigger-alpine:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2.3.3
|
||||
|
||||
- name: Package Trigger
|
||||
if: github.ref == 'refs/heads/master'
|
||||
if: github.ref == 'refs/heads/alpine'
|
||||
run: |
|
||||
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_BASEIMAGE_RDESKTOP_MASTER }}" ]; then
|
||||
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_BASEIMAGE_RDESKTOP_MASTER is set; skipping trigger. ****"
|
||||
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_BASEIMAGE_RDESKTOP_ALPINE }}" ]; then
|
||||
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_BASEIMAGE_RDESKTOP_ALPINE is set; skipping trigger. ****"
|
||||
exit 0
|
||||
fi
|
||||
if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-baseimage-rdesktop/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
|
||||
if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-baseimage-rdesktop/job/alpine/lastBuild/api/json | jq -r '.building') == "true" ]; then
|
||||
echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****"
|
||||
exit 0
|
||||
fi
|
||||
echo "**** Package trigger running off of master branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_BASEIMAGE_RDESKTOP_MASTER\". ****"
|
||||
echo "**** Package trigger running off of alpine branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_BASEIMAGE_RDESKTOP_ALPINE\". ****"
|
||||
response=$(curl -iX POST \
|
||||
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-baseimage-rdesktop/job/master/buildWithParameters?PACKAGE_CHECK=true \
|
||||
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-baseimage-rdesktop/job/alpine/buildWithParameters?PACKAGE_CHECK=true \
|
||||
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
|
||||
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
|
||||
echo "**** Sleeping 10 seconds until job starts ****"
|
||||
|
||||
150
Dockerfile
150
Dockerfile
@ -1,54 +1,63 @@
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:focal as buildstage
|
||||
FROM ghcr.io/linuxserver/baseimage-alpine:3.13 as buildstage
|
||||
|
||||
ARG XRDP_PULSE_VERSION=v0.4
|
||||
ARG ALPINE_VERSION=3.13
|
||||
ARG XRDP_PULSE_VERSION=v0.5
|
||||
|
||||
RUN \
|
||||
echo "**** install build deps ****" && \
|
||||
sed -i 's/# deb-src/deb-src/g' /etc/apt/sources.list && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
build-essential \
|
||||
devscripts \
|
||||
dpkg-dev \
|
||||
git \
|
||||
libpulse-dev \
|
||||
pulseaudio && \
|
||||
apt build-dep -y \
|
||||
pulseaudio \
|
||||
xrdp
|
||||
apk add --no-cache \
|
||||
alpine-sdk \
|
||||
autoconf \
|
||||
automake && \
|
||||
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \
|
||||
pulseaudio-dev \
|
||||
xrdp-dev \
|
||||
xorgxrdp-dev && \
|
||||
echo "**** user perms ****" && \
|
||||
useradd builder && \
|
||||
usermod -G abuild builder
|
||||
|
||||
USER builder
|
||||
|
||||
RUN \
|
||||
echo "**** build pulseaudio modules ****" && \
|
||||
mkdir -p /buildout/var/lib/xrdp-pulseaudio-installer && \
|
||||
tmp=$(mktemp -d); cd "$tmp" && \
|
||||
pulseaudio_version=$(dpkg-query -W -f='${source:Version}' pulseaudio|awk -F: '{print $2}') && \
|
||||
pulseaudio_upstream_version=$(dpkg-query -W -f='${source:Upstream-Version}' pulseaudio) && \
|
||||
set -- $(apt-cache policy pulseaudio | fgrep -A1 '***' | tail -1) && \
|
||||
mirror=$2 && \
|
||||
suite=${3#*/} && \
|
||||
dget -u "$mirror/pool/$suite/p/pulseaudio/pulseaudio_$pulseaudio_version.dsc" && \
|
||||
cd "pulseaudio-$pulseaudio_upstream_version" && \
|
||||
./configure && \
|
||||
cd - && \
|
||||
git clone https://github.com/neutrinolabs/pulseaudio-module-xrdp.git && \
|
||||
cd pulseaudio-module-xrdp && \
|
||||
git checkout ${XRDP_PULSE_VERSION} && \
|
||||
./bootstrap && \
|
||||
./configure PULSE_DIR="$tmp/pulseaudio-$pulseaudio_upstream_version" && \
|
||||
make && \
|
||||
install -t "/buildout/var/lib/xrdp-pulseaudio-installer" -D -m 644 src/.libs/*.so
|
||||
|
||||
RUN \
|
||||
echo "**** build xrdp with fuse disabled ****" && \
|
||||
echo "**** grab aports ****" && \
|
||||
wget \
|
||||
https://gitlab.alpinelinux.org/alpine/aports/-/archive/${ALPINE_VERSION}-stable/aports-${ALPINE_VERSION}-stable.tar.gz \
|
||||
-O /tmp/aports.tar.gz && \
|
||||
cd /tmp && \
|
||||
apt-get source xrdp && \
|
||||
cd xrdp-* && \
|
||||
sed -i 's/--enable-fuse/--disable-fuse/g' debian/rules && \
|
||||
debuild -b -uc -us && \
|
||||
cp -ax ../xrdp_*.deb /buildout/xrdp.deb
|
||||
tar -xf aports.tar.gz
|
||||
|
||||
RUN \
|
||||
echo "**** build pulseaudio from source ****" && \
|
||||
cd /tmp/aports-${ALPINE_VERSION}-stable/community/pulseaudio && \
|
||||
abuild fetch && \
|
||||
abuild unpack && \
|
||||
abuild deps && \
|
||||
abuild prepare && \
|
||||
VERSION=$(ls -1 /tmp/aports-${ALPINE_VERSION}-stable/community/pulseaudio/src/ | \
|
||||
awk -F '-' '/pulseaudio-/ {print $2; exit}') && \
|
||||
cd src/pulseaudio-${VERSION} && \
|
||||
./configure
|
||||
|
||||
RUN \
|
||||
echo "**** build pulseaudio xrdp module ****" && \
|
||||
VERSION=$(ls -1 /tmp/aports-${ALPINE_VERSION}-stable/community/pulseaudio/src/ | \
|
||||
awk -F '-' '/pulseaudio-/ {print $2; exit}') && \
|
||||
mkdir -p /tmp/buildout/usr/lib/pulse-${VERSION}/modules/ && \
|
||||
wget \
|
||||
https://github.com/neutrinolabs/pulseaudio-module-xrdp/archive/refs/tags/${XRDP_PULSE_VERSION}.tar.gz \
|
||||
-O /tmp/pulsemodule.tar.gz && \
|
||||
cd /tmp && \
|
||||
tar -xf pulsemodule.tar.gz && \
|
||||
cd pulseaudio-module-xrdp-* && \
|
||||
./bootstrap && \
|
||||
./configure \
|
||||
PULSE_DIR=/tmp/aports-${ALPINE_VERSION}-stable/community/pulseaudio/src/pulseaudio-${VERSION} && \
|
||||
make && \
|
||||
install -t "/tmp/buildout/usr/lib/pulse-${VERSION}/modules/" -D -m 644 src/.libs/*.so
|
||||
|
||||
# runtime stage
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:focal
|
||||
FROM ghcr.io/linuxserver/baseimage-alpine:3.13
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
@ -57,51 +66,34 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA
|
||||
LABEL maintainer="thelamer"
|
||||
|
||||
# copy over libs and installers from build stage
|
||||
COPY --from=buildstage /buildout/ /
|
||||
COPY --from=buildstage /tmp/buildout/ /
|
||||
|
||||
RUN \
|
||||
echo "**** install deps ****" && \
|
||||
ldconfig && \
|
||||
apt-get update && \
|
||||
DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get install -y --no-install-recommends \
|
||||
apt-transport-https \
|
||||
ca-certificates \
|
||||
curl \
|
||||
dbus-x11 \
|
||||
gawk \
|
||||
gnupg2 \
|
||||
libfuse2 \
|
||||
libx11-dev \
|
||||
libxfixes3 \
|
||||
libxml2 \
|
||||
libxrandr2 \
|
||||
apk add --no-cache \
|
||||
dbus \
|
||||
docker \
|
||||
libpulse \
|
||||
pavucontrol \
|
||||
pulseaudio \
|
||||
software-properties-common \
|
||||
pulseaudio-utils \
|
||||
pulsemixer \
|
||||
python2 \
|
||||
sudo \
|
||||
x11-apps \
|
||||
x11-xserver-utils \
|
||||
xfonts-base \
|
||||
xorgxrdp \
|
||||
xrdp \
|
||||
xserver-xorg-core \
|
||||
xutils \
|
||||
zlib1g && \
|
||||
dpkg -i /xrdp.deb && \
|
||||
rm /xrdp.deb && \
|
||||
echo "**** install docker ****" && \
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
|
||||
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
docker-ce-cli && \
|
||||
xterm && \
|
||||
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \
|
||||
xorg-server \
|
||||
xorgxrdp \
|
||||
xrdp && \
|
||||
VERSION=$(ls -1 /usr/lib/ | \
|
||||
awk -F '-' '/pulse-/ {print $2; exit}') && \
|
||||
ldconfig -n /usr/lib/pulse-${VERSION}/modules && \
|
||||
echo "**** cleanup and user perms ****" && \
|
||||
echo "abc:abc" | chpasswd && \
|
||||
usermod -aG sudo abc && \
|
||||
apt-get autoclean && \
|
||||
usermod -s /bin/bash abc && \
|
||||
echo '%wheel ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/wheel && \
|
||||
adduser abc wheel && \
|
||||
rm -rf \
|
||||
/var/lib/apt/lists/* \
|
||||
/var/tmp/* \
|
||||
/tmp/*
|
||||
|
||||
# add local files
|
||||
|
||||
@ -1,54 +1,63 @@
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-focal as buildstage
|
||||
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.13 as buildstage
|
||||
|
||||
ARG XRDP_PULSE_VERSION=v0.4
|
||||
ARG ALPINE_VERSION=3.13
|
||||
ARG XRDP_PULSE_VERSION=v0.5
|
||||
|
||||
RUN \
|
||||
echo "**** install build deps ****" && \
|
||||
sed -i 's/# deb-src/deb-src/g' /etc/apt/sources.list && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
build-essential \
|
||||
devscripts \
|
||||
dpkg-dev \
|
||||
git \
|
||||
libpulse-dev \
|
||||
pulseaudio && \
|
||||
apt build-dep -y \
|
||||
pulseaudio \
|
||||
xrdp
|
||||
apk add --no-cache \
|
||||
alpine-sdk \
|
||||
autoconf \
|
||||
automake && \
|
||||
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \
|
||||
pulseaudio-dev \
|
||||
xrdp-dev \
|
||||
xorgxrdp-dev && \
|
||||
echo "**** user perms ****" && \
|
||||
useradd builder && \
|
||||
usermod -G abuild builder
|
||||
|
||||
USER builder
|
||||
|
||||
RUN \
|
||||
echo "**** build pulseaudio modules ****" && \
|
||||
mkdir -p /buildout/var/lib/xrdp-pulseaudio-installer && \
|
||||
tmp=$(mktemp -d); cd "$tmp" && \
|
||||
pulseaudio_version=$(dpkg-query -W -f='${source:Version}' pulseaudio|awk -F: '{print $2}') && \
|
||||
pulseaudio_upstream_version=$(dpkg-query -W -f='${source:Upstream-Version}' pulseaudio) && \
|
||||
set -- $(apt-cache policy pulseaudio | fgrep -A1 '***' | tail -1) && \
|
||||
mirror=$2 && \
|
||||
suite=${3#*/} && \
|
||||
dget -u "$mirror/pool/$suite/p/pulseaudio/pulseaudio_$pulseaudio_version.dsc" && \
|
||||
cd "pulseaudio-$pulseaudio_upstream_version" && \
|
||||
./configure && \
|
||||
cd - && \
|
||||
git clone https://github.com/neutrinolabs/pulseaudio-module-xrdp.git && \
|
||||
cd pulseaudio-module-xrdp && \
|
||||
git checkout ${XRDP_PULSE_VERSION} && \
|
||||
./bootstrap && \
|
||||
./configure PULSE_DIR="$tmp/pulseaudio-$pulseaudio_upstream_version" && \
|
||||
make && \
|
||||
install -t "/buildout/var/lib/xrdp-pulseaudio-installer" -D -m 644 src/.libs/*.so
|
||||
|
||||
RUN \
|
||||
echo "**** build xrdp with fuse disabled ****" && \
|
||||
echo "**** grab aports ****" && \
|
||||
wget \
|
||||
https://gitlab.alpinelinux.org/alpine/aports/-/archive/${ALPINE_VERSION}-stable/aports-${ALPINE_VERSION}-stable.tar.gz \
|
||||
-O /tmp/aports.tar.gz && \
|
||||
cd /tmp && \
|
||||
apt-get source xrdp && \
|
||||
cd xrdp-* && \
|
||||
sed -i 's/--enable-fuse/--disable-fuse/g' debian/rules && \
|
||||
debuild -b -uc -us && \
|
||||
cp -ax ../xrdp_*.deb /buildout/xrdp.deb
|
||||
tar -xf aports.tar.gz
|
||||
|
||||
RUN \
|
||||
echo "**** build pulseaudio from source ****" && \
|
||||
cd /tmp/aports-${ALPINE_VERSION}-stable/community/pulseaudio && \
|
||||
abuild fetch && \
|
||||
abuild unpack && \
|
||||
abuild deps && \
|
||||
abuild prepare && \
|
||||
VERSION=$(ls -1 /tmp/aports-${ALPINE_VERSION}-stable/community/pulseaudio/src/ | \
|
||||
awk -F '-' '/pulseaudio-/ {print $2; exit}') && \
|
||||
cd src/pulseaudio-${VERSION} && \
|
||||
./configure
|
||||
|
||||
RUN \
|
||||
echo "**** build pulseaudio xrdp module ****" && \
|
||||
VERSION=$(ls -1 /tmp/aports-${ALPINE_VERSION}-stable/community/pulseaudio/src/ | \
|
||||
awk -F '-' '/pulseaudio-/ {print $2; exit}') && \
|
||||
mkdir -p /tmp/buildout/usr/lib/pulse-${VERSION}/modules/ && \
|
||||
wget \
|
||||
https://github.com/neutrinolabs/pulseaudio-module-xrdp/archive/refs/tags/${XRDP_PULSE_VERSION}.tar.gz \
|
||||
-O /tmp/pulsemodule.tar.gz && \
|
||||
cd /tmp && \
|
||||
tar -xf pulsemodule.tar.gz && \
|
||||
cd pulseaudio-module-xrdp-* && \
|
||||
./bootstrap && \
|
||||
./configure \
|
||||
PULSE_DIR=/tmp/aports-${ALPINE_VERSION}-stable/community/pulseaudio/src/pulseaudio-${VERSION} && \
|
||||
make && \
|
||||
install -t "/tmp/buildout/usr/lib/pulse-${VERSION}/modules/" -D -m 644 src/.libs/*.so
|
||||
|
||||
# runtime stage
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-focal
|
||||
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.13
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
@ -57,51 +66,34 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA
|
||||
LABEL maintainer="thelamer"
|
||||
|
||||
# copy over libs and installers from build stage
|
||||
COPY --from=buildstage /buildout/ /
|
||||
COPY --from=buildstage /tmp/buildout/ /
|
||||
|
||||
RUN \
|
||||
echo "**** install deps ****" && \
|
||||
ldconfig && \
|
||||
apt-get update && \
|
||||
DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get install -y --no-install-recommends \
|
||||
apt-transport-https \
|
||||
ca-certificates \
|
||||
curl \
|
||||
dbus-x11 \
|
||||
gawk \
|
||||
gnupg2 \
|
||||
libfuse2 \
|
||||
libx11-dev \
|
||||
libxfixes3 \
|
||||
libxml2 \
|
||||
libxrandr2 \
|
||||
apk add --no-cache \
|
||||
dbus \
|
||||
docker \
|
||||
libpulse \
|
||||
pavucontrol \
|
||||
pulseaudio \
|
||||
software-properties-common \
|
||||
pulseaudio-utils \
|
||||
pulsemixer \
|
||||
python2 \
|
||||
sudo \
|
||||
x11-apps \
|
||||
x11-xserver-utils \
|
||||
xfonts-base \
|
||||
xorgxrdp \
|
||||
xrdp \
|
||||
xserver-xorg-core \
|
||||
xutils \
|
||||
zlib1g && \
|
||||
dpkg -i /xrdp.deb && \
|
||||
rm /xrdp.deb && \
|
||||
echo "**** install docker ****" && \
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
|
||||
add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/ubuntu bionic stable" && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
docker-ce-cli && \
|
||||
xterm && \
|
||||
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \
|
||||
xorg-server \
|
||||
xorgxrdp \
|
||||
xrdp && \
|
||||
VERSION=$(ls -1 /usr/lib/ | \
|
||||
awk -F '-' '/pulse-/ {print $2; exit}') && \
|
||||
ldconfig -n /usr/lib/pulse-${VERSION}/modules && \
|
||||
echo "**** cleanup and user perms ****" && \
|
||||
echo "abc:abc" | chpasswd && \
|
||||
usermod -aG sudo abc && \
|
||||
apt-get autoclean && \
|
||||
usermod -s /bin/bash abc && \
|
||||
echo '%wheel ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/wheel && \
|
||||
adduser abc wheel && \
|
||||
rm -rf \
|
||||
/var/lib/apt/lists/* \
|
||||
/var/tmp/* \
|
||||
/tmp/*
|
||||
|
||||
# add local files
|
||||
|
||||
150
Dockerfile.armhf
150
Dockerfile.armhf
@ -1,54 +1,63 @@
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm32v7-focal as buildstage
|
||||
FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-3.13 as buildstage
|
||||
|
||||
ARG XRDP_PULSE_VERSION=v0.4
|
||||
ARG ALPINE_VERSION=3.13
|
||||
ARG XRDP_PULSE_VERSION=v0.5
|
||||
|
||||
RUN \
|
||||
echo "**** install build deps ****" && \
|
||||
sed -i 's/# deb-src/deb-src/g' /etc/apt/sources.list && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
build-essential \
|
||||
devscripts \
|
||||
dpkg-dev \
|
||||
git \
|
||||
libpulse-dev \
|
||||
pulseaudio && \
|
||||
apt build-dep -y \
|
||||
pulseaudio \
|
||||
xrdp
|
||||
apk add --no-cache \
|
||||
alpine-sdk \
|
||||
autoconf \
|
||||
automake && \
|
||||
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \
|
||||
pulseaudio-dev \
|
||||
xrdp-dev \
|
||||
xorgxrdp-dev && \
|
||||
echo "**** user perms ****" && \
|
||||
useradd builder && \
|
||||
usermod -G abuild builder
|
||||
|
||||
USER builder
|
||||
|
||||
RUN \
|
||||
echo "**** build pulseaudio modules ****" && \
|
||||
mkdir -p /buildout/var/lib/xrdp-pulseaudio-installer && \
|
||||
tmp=$(mktemp -d); cd "$tmp" && \
|
||||
pulseaudio_version=$(dpkg-query -W -f='${source:Version}' pulseaudio|awk -F: '{print $2}') && \
|
||||
pulseaudio_upstream_version=$(dpkg-query -W -f='${source:Upstream-Version}' pulseaudio) && \
|
||||
set -- $(apt-cache policy pulseaudio | fgrep -A1 '***' | tail -1) && \
|
||||
mirror=$2 && \
|
||||
suite=${3#*/} && \
|
||||
dget -u "$mirror/pool/$suite/p/pulseaudio/pulseaudio_$pulseaudio_version.dsc" && \
|
||||
cd "pulseaudio-$pulseaudio_upstream_version" && \
|
||||
./configure && \
|
||||
cd - && \
|
||||
git clone https://github.com/neutrinolabs/pulseaudio-module-xrdp.git && \
|
||||
cd pulseaudio-module-xrdp && \
|
||||
git checkout ${XRDP_PULSE_VERSION} && \
|
||||
./bootstrap && \
|
||||
./configure PULSE_DIR="$tmp/pulseaudio-$pulseaudio_upstream_version" && \
|
||||
make && \
|
||||
install -t "/buildout/var/lib/xrdp-pulseaudio-installer" -D -m 644 src/.libs/*.so
|
||||
|
||||
RUN \
|
||||
echo "**** build xrdp with fuse disabled ****" && \
|
||||
echo "**** grab aports ****" && \
|
||||
wget \
|
||||
https://gitlab.alpinelinux.org/alpine/aports/-/archive/${ALPINE_VERSION}-stable/aports-${ALPINE_VERSION}-stable.tar.gz \
|
||||
-O /tmp/aports.tar.gz && \
|
||||
cd /tmp && \
|
||||
apt-get source xrdp && \
|
||||
cd xrdp-* && \
|
||||
sed -i 's/--enable-fuse/--disable-fuse/g' debian/rules && \
|
||||
debuild -b -uc -us && \
|
||||
cp -ax ../xrdp_*.deb /buildout/xrdp.deb
|
||||
tar -xf aports.tar.gz
|
||||
|
||||
RUN \
|
||||
echo "**** build pulseaudio from source ****" && \
|
||||
cd /tmp/aports-${ALPINE_VERSION}-stable/community/pulseaudio && \
|
||||
abuild fetch && \
|
||||
abuild unpack && \
|
||||
abuild deps && \
|
||||
abuild prepare && \
|
||||
VERSION=$(ls -1 /tmp/aports-${ALPINE_VERSION}-stable/community/pulseaudio/src/ | \
|
||||
awk -F '-' '/pulseaudio-/ {print $2; exit}') && \
|
||||
cd src/pulseaudio-${VERSION} && \
|
||||
./configure
|
||||
|
||||
RUN \
|
||||
echo "**** build pulseaudio xrdp module ****" && \
|
||||
VERSION=$(ls -1 /tmp/aports-${ALPINE_VERSION}-stable/community/pulseaudio/src/ | \
|
||||
awk -F '-' '/pulseaudio-/ {print $2; exit}') && \
|
||||
mkdir -p /tmp/buildout/usr/lib/pulse-${VERSION}/modules/ && \
|
||||
wget \
|
||||
https://github.com/neutrinolabs/pulseaudio-module-xrdp/archive/refs/tags/${XRDP_PULSE_VERSION}.tar.gz \
|
||||
-O /tmp/pulsemodule.tar.gz && \
|
||||
cd /tmp && \
|
||||
tar -xf pulsemodule.tar.gz && \
|
||||
cd pulseaudio-module-xrdp-* && \
|
||||
./bootstrap && \
|
||||
./configure \
|
||||
PULSE_DIR=/tmp/aports-${ALPINE_VERSION}-stable/community/pulseaudio/src/pulseaudio-${VERSION} && \
|
||||
make && \
|
||||
install -t "/tmp/buildout/usr/lib/pulse-${VERSION}/modules/" -D -m 644 src/.libs/*.so
|
||||
|
||||
# runtime stage
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm32v7-focal
|
||||
FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-3.13
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
@ -57,51 +66,34 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA
|
||||
LABEL maintainer="thelamer"
|
||||
|
||||
# copy over libs and installers from build stage
|
||||
COPY --from=buildstage /buildout/ /
|
||||
COPY --from=buildstage /tmp/buildout/ /
|
||||
|
||||
RUN \
|
||||
echo "**** install deps ****" && \
|
||||
ldconfig && \
|
||||
apt-get update && \
|
||||
DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get install -y --no-install-recommends \
|
||||
apt-transport-https \
|
||||
ca-certificates \
|
||||
curl \
|
||||
dbus-x11 \
|
||||
gawk \
|
||||
gnupg2 \
|
||||
libfuse2 \
|
||||
libx11-dev \
|
||||
libxfixes3 \
|
||||
libxml2 \
|
||||
libxrandr2 \
|
||||
apk add --no-cache \
|
||||
dbus \
|
||||
docker \
|
||||
libpulse \
|
||||
pavucontrol \
|
||||
pulseaudio \
|
||||
software-properties-common \
|
||||
pulseaudio-utils \
|
||||
pulsemixer \
|
||||
python2 \
|
||||
sudo \
|
||||
x11-apps \
|
||||
x11-xserver-utils \
|
||||
xfonts-base \
|
||||
xorgxrdp \
|
||||
xrdp \
|
||||
xserver-xorg-core \
|
||||
xutils \
|
||||
zlib1g && \
|
||||
dpkg -i /xrdp.deb && \
|
||||
rm /xrdp.deb && \
|
||||
echo "**** install docker ****" && \
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
|
||||
add-apt-repository "deb [arch=armhf] https://download.docker.com/linux/ubuntu bionic stable" && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
docker-ce-cli && \
|
||||
xterm && \
|
||||
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \
|
||||
xorg-server \
|
||||
xorgxrdp \
|
||||
xrdp && \
|
||||
VERSION=$(ls -1 /usr/lib/ | \
|
||||
awk -F '-' '/pulse-/ {print $2; exit}') && \
|
||||
ldconfig -n /usr/lib/pulse-${VERSION}/modules && \
|
||||
echo "**** cleanup and user perms ****" && \
|
||||
echo "abc:abc" | chpasswd && \
|
||||
usermod -aG sudo abc && \
|
||||
apt-get autoclean && \
|
||||
usermod -s /bin/bash abc && \
|
||||
echo '%wheel ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/wheel && \
|
||||
adduser abc wheel && \
|
||||
rm -rf \
|
||||
/var/lib/apt/lists/* \
|
||||
/var/tmp/* \
|
||||
/tmp/*
|
||||
|
||||
# add local files
|
||||
|
||||
94
Jenkinsfile
vendored
94
Jenkinsfile
vendored
@ -23,7 +23,7 @@ pipeline {
|
||||
DOCKERHUB_IMAGE = 'lsiobase/rdesktop'
|
||||
DEV_DOCKERHUB_IMAGE = 'lsiodev/rdesktop-base'
|
||||
PR_DOCKERHUB_IMAGE = 'lspipepr/rdesktop-base'
|
||||
DIST_IMAGE = 'ubuntu'
|
||||
DIST_IMAGE = 'alpine'
|
||||
MULTIARCH='true'
|
||||
CI='true'
|
||||
CI_WEB='false'
|
||||
@ -41,7 +41,7 @@ pipeline {
|
||||
script{
|
||||
env.EXIT_STATUS = ''
|
||||
env.LS_RELEASE = sh(
|
||||
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' || : ''',
|
||||
script: '''docker run --rm ghcr.io/linuxserver/alexeiled-skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':alpine 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
|
||||
returnStdout: true).trim()
|
||||
env.LS_RELEASE_NOTES = sh(
|
||||
script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
|
||||
@ -117,10 +117,10 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
// If this is a master build use live docker endpoints
|
||||
// If this is a alpine build use live docker endpoints
|
||||
stage("Set ENV live build"){
|
||||
when {
|
||||
branch "master"
|
||||
branch "alpine"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
}
|
||||
steps {
|
||||
@ -129,20 +129,20 @@ pipeline {
|
||||
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/' + env.CONTAINER_NAME
|
||||
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
|
||||
if (env.MULTIARCH == 'true') {
|
||||
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
|
||||
env.CI_TAGS = 'amd64-alpine-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-alpine-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-alpine-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
} else {
|
||||
env.CI_TAGS = 'focal-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
env.CI_TAGS = 'alpine-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
}
|
||||
env.VERSION_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 = 'focal-version-' + env.EXT_RELEASE_CLEAN
|
||||
env.META_TAG = 'alpine-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
env.EXT_RELEASE_TAG = 'alpine-version-' + env.EXT_RELEASE_CLEAN
|
||||
}
|
||||
}
|
||||
}
|
||||
// If this is a dev build use dev docker endpoints
|
||||
stage("Set ENV dev build"){
|
||||
when {
|
||||
not {branch "master"}
|
||||
not {branch "alpine"}
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
}
|
||||
steps {
|
||||
@ -151,13 +151,13 @@ pipeline {
|
||||
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
|
||||
if (env.MULTIARCH == 'true') {
|
||||
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
|
||||
env.CI_TAGS = 'amd64-alpine-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-alpine-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-alpine-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||
} else {
|
||||
env.CI_TAGS = 'focal-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||
env.CI_TAGS = 'alpine-' + 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 = 'focal-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||
env.EXT_RELEASE_TAG = 'focal-version-' + env.EXT_RELEASE_CLEAN
|
||||
env.META_TAG = 'alpine-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||
env.EXT_RELEASE_TAG = 'alpine-version-' + env.EXT_RELEASE_CLEAN
|
||||
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
|
||||
}
|
||||
}
|
||||
@ -173,13 +173,13 @@ pipeline {
|
||||
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
|
||||
if (env.MULTIARCH == 'true') {
|
||||
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
|
||||
env.CI_TAGS = 'amd64-alpine-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-alpine-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-alpine-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
||||
} else {
|
||||
env.CI_TAGS = 'focal-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
||||
env.CI_TAGS = 'alpine-' + 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 = 'focal-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
||||
env.EXT_RELEASE_TAG = 'focal-version-' + env.EXT_RELEASE_CLEAN
|
||||
env.META_TAG = 'alpine-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
||||
env.EXT_RELEASE_TAG = 'alpine-version-' + env.EXT_RELEASE_CLEAN
|
||||
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/'
|
||||
}
|
||||
@ -217,7 +217,7 @@ pipeline {
|
||||
// Use helper containers to render templated files
|
||||
stage('Update-Templates') {
|
||||
when {
|
||||
branch "master"
|
||||
branch "alpine"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
expression {
|
||||
env.CONTAINER_NAME != null
|
||||
@ -228,13 +228,13 @@ pipeline {
|
||||
set -e
|
||||
TEMPDIR=$(mktemp -d)
|
||||
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=alpine -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
|
||||
# Stage 1 - Jenkinsfile update
|
||||
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
|
||||
mkdir -p ${TEMPDIR}/repo
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||
git checkout -f master
|
||||
git checkout -f alpine
|
||||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
|
||||
git add Jenkinsfile
|
||||
git commit -m 'Bot Updating Templated Files'
|
||||
@ -257,7 +257,7 @@ pipeline {
|
||||
mkdir -p ${TEMPDIR}/repo
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||
git checkout -f master
|
||||
git checkout -f alpine
|
||||
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
|
||||
for i in ${TEMPLATES_TO_DELETE}; do
|
||||
git rm "${i}"
|
||||
@ -279,7 +279,7 @@ pipeline {
|
||||
mkdir -p ${TEMPDIR}/repo
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||
git checkout -f master
|
||||
git checkout -f alpine
|
||||
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
|
||||
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
|
||||
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
|
||||
@ -316,7 +316,7 @@ pipeline {
|
||||
// Exit the build if the Templated files were just updated
|
||||
stage('Template-exit') {
|
||||
when {
|
||||
branch "master"
|
||||
branch "alpine"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
environment name: 'FILES_UPDATED', value: 'true'
|
||||
expression {
|
||||
@ -425,7 +425,7 @@ pipeline {
|
||||
// Take the image we just built and dump package versions for comparison
|
||||
stage('Update-packages') {
|
||||
when {
|
||||
branch "master"
|
||||
branch "alpine"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
@ -453,7 +453,7 @@ pipeline {
|
||||
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
|
||||
if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
|
||||
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f master
|
||||
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f alpine
|
||||
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
|
||||
cd ${TEMPDIR}/${LS_REPO}/
|
||||
wait
|
||||
@ -477,7 +477,7 @@ pipeline {
|
||||
// Exit the build if the package file was just updated
|
||||
stage('PACKAGE-exit') {
|
||||
when {
|
||||
branch "master"
|
||||
branch "alpine"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
environment name: 'PACKAGE_UPDATED', value: 'true'
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
@ -491,7 +491,7 @@ pipeline {
|
||||
// Exit the build if this is just a package check and there are no changes to push
|
||||
stage('PACKAGECHECK-exit') {
|
||||
when {
|
||||
branch "master"
|
||||
branch "alpine"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
environment name: 'PACKAGE_UPDATED', value: 'false'
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
@ -580,9 +580,9 @@ pipeline {
|
||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
|
||||
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
|
||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:focal
|
||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:alpine
|
||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
||||
docker push ${PUSHIMAGE}:focal
|
||||
docker push ${PUSHIMAGE}:alpine
|
||||
docker push ${PUSHIMAGE}:${META_TAG}
|
||||
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
||||
done
|
||||
@ -593,7 +593,7 @@ pipeline {
|
||||
docker rmi \
|
||||
${DELETEIMAGE}:${META_TAG} \
|
||||
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
|
||||
${DELETEIMAGE}:focal || :
|
||||
${DELETEIMAGE}:alpine || :
|
||||
done
|
||||
'''
|
||||
}
|
||||
@ -630,25 +630,25 @@ pipeline {
|
||||
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
|
||||
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
||||
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-focal
|
||||
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-focal
|
||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-focal
|
||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-alpine
|
||||
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-alpine
|
||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-alpine
|
||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
||||
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
docker push ${MANIFESTIMAGE}:amd64-focal
|
||||
docker push ${MANIFESTIMAGE}:arm32v7-focal
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-focal
|
||||
docker push ${MANIFESTIMAGE}:amd64-alpine
|
||||
docker push ${MANIFESTIMAGE}:arm32v7-alpine
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-alpine
|
||||
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||
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}:alpine || :
|
||||
docker manifest create ${MANIFESTIMAGE}:alpine ${MANIFESTIMAGE}:amd64-alpine ${MANIFESTIMAGE}:arm32v7-alpine ${MANIFESTIMAGE}:arm64v8-alpine
|
||||
docker manifest annotate ${MANIFESTIMAGE}:alpine ${MANIFESTIMAGE}:arm32v7-alpine --os linux --arch arm
|
||||
docker manifest annotate ${MANIFESTIMAGE}:alpine ${MANIFESTIMAGE}:arm64v8-alpine --os linux --arch arm64 --variant v8
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
|
||||
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm
|
||||
@ -657,7 +657,7 @@ pipeline {
|
||||
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
|
||||
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:focal
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:alpine
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
|
||||
done
|
||||
@ -667,10 +667,10 @@ pipeline {
|
||||
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
|
||||
docker rmi \
|
||||
${DELETEIMAGE}:arm32v7-${META_TAG} \
|
||||
${DELETEIMAGE}:arm32v7-focal \
|
||||
${DELETEIMAGE}:arm32v7-alpine \
|
||||
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
|
||||
${DELETEIMAGE}:arm64v8-${META_TAG} \
|
||||
${DELETEIMAGE}:arm64v8-focal \
|
||||
${DELETEIMAGE}:arm64v8-alpine \
|
||||
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
|
||||
done
|
||||
docker rmi \
|
||||
@ -683,7 +683,7 @@ pipeline {
|
||||
// If this is a public release tag it in the LS Github
|
||||
stage('Github-Tag-Push-Release') {
|
||||
when {
|
||||
branch "master"
|
||||
branch "alpine"
|
||||
expression {
|
||||
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
}
|
||||
@ -695,17 +695,17 @@ pipeline {
|
||||
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
|
||||
-d '{"tag":"'${META_TAG}'",\
|
||||
"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 alpine",\
|
||||
"type": "commit",\
|
||||
"tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
|
||||
echo "Pushing New release for Tag"
|
||||
sh '''#! /bin/bash
|
||||
echo "Updating base packages to ${PACKAGE_TAG}" > releasebody.json
|
||||
echo '{"tag_name":"'${META_TAG}'",\
|
||||
"target_commitish": "master",\
|
||||
"target_commitish": "alpine",\
|
||||
"name": "'${META_TAG}'",\
|
||||
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**OS Changes:**\\n\\n' > start
|
||||
printf '","draft": false,"prerelease": false}' >> releasebody.json
|
||||
printf '","draft": false,"prerelease": true}' >> releasebody.json
|
||||
paste -d'\\0' start releasebody.json > releasebody.json.done
|
||||
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
|
||||
}
|
||||
|
||||
@ -3,9 +3,9 @@
|
||||
# jenkins variables
|
||||
project_name: docker-baseimage-rdesktop
|
||||
external_type: os
|
||||
release_type: stable
|
||||
release_tag: focal
|
||||
ls_branch: master
|
||||
release_type: prerelease
|
||||
release_tag: alpine
|
||||
ls_branch: alpine
|
||||
repo_vars:
|
||||
- BUILD_VERSION_ARG = 'XRDP_VERSION'
|
||||
- LS_USER = 'linuxserver'
|
||||
@ -14,7 +14,7 @@ repo_vars:
|
||||
- DOCKERHUB_IMAGE = 'lsiobase/rdesktop'
|
||||
- DEV_DOCKERHUB_IMAGE = 'lsiodev/rdesktop-base'
|
||||
- PR_DOCKERHUB_IMAGE = 'lspipepr/rdesktop-base'
|
||||
- DIST_IMAGE = 'ubuntu'
|
||||
- DIST_IMAGE = 'alpine'
|
||||
- MULTIARCH='true'
|
||||
- CI='true'
|
||||
- CI_WEB='false'
|
||||
|
||||
@ -1,85 +0,0 @@
|
||||
# ~/.bashrc: executed by bash(1) for non-login shells.
|
||||
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
|
||||
# for examples
|
||||
|
||||
# If not running interactively, don't do anything
|
||||
case $- in
|
||||
*i*) ;;
|
||||
*) return;;
|
||||
esac
|
||||
|
||||
# don't put duplicate lines or lines starting with space in the history.
|
||||
# See bash(1) for more options
|
||||
HISTCONTROL=ignoreboth
|
||||
|
||||
# append to the history file, don't overwrite it
|
||||
shopt -s histappend
|
||||
|
||||
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
|
||||
HISTSIZE=1000
|
||||
HISTFILESIZE=2000
|
||||
|
||||
# check the window size after each command and, if necessary,
|
||||
# update the values of LINES and COLUMNS.
|
||||
shopt -s checkwinsize
|
||||
|
||||
# make less more friendly for non-text input files, see lesspipe(1)
|
||||
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
|
||||
|
||||
# set variable identifying the chroot you work in (used in the prompt below)
|
||||
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
|
||||
debian_chroot=$(cat /etc/debian_chroot)
|
||||
fi
|
||||
|
||||
# set a fancy prompt (non-color, unless we know we "want" color)
|
||||
case "$TERM" in
|
||||
xterm|xterm-color|*-256color) color_prompt=yes;;
|
||||
esac
|
||||
|
||||
if [ "$color_prompt" = yes ]; then
|
||||
if [[ ${EUID} == 0 ]] ; then
|
||||
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '
|
||||
else
|
||||
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w \$\[\033[00m\] '
|
||||
fi
|
||||
else
|
||||
PS1='${debian_chroot:+($debian_chroot)}\u@\h \w \$ '
|
||||
fi
|
||||
unset color_prompt force_color_prompt
|
||||
|
||||
# If this is an xterm set the title to user@host:dir
|
||||
case "$TERM" in
|
||||
xterm*|rxvt*)
|
||||
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h \w\a\]$PS1"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
# enable color support of ls and also add handy aliases
|
||||
if [ -x /usr/bin/dircolors ]; then
|
||||
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
||||
alias ls='ls --color=auto'
|
||||
alias grep='grep --color=auto'
|
||||
alias fgrep='fgrep --color=auto'
|
||||
alias egrep='egrep --color=auto'
|
||||
fi
|
||||
|
||||
# some more ls aliases
|
||||
alias ll='ls -alF'
|
||||
alias la='ls -A'
|
||||
alias l='ls -CF'
|
||||
|
||||
if [ -f ~/.bash_aliases ]; then
|
||||
. ~/.bash_aliases
|
||||
fi
|
||||
if ! shopt -oq posix; then
|
||||
if [ -f /usr/share/bash-completion/bash_completion ]; then
|
||||
. /usr/share/bash-completion/bash_completion
|
||||
elif [ -f /etc/bash_completion ]; then
|
||||
. /etc/bash_completion
|
||||
fi
|
||||
fi
|
||||
|
||||
# start term in home
|
||||
cd ~
|
||||
3
root/defaults/startwm.sh
Executable file
3
root/defaults/startwm.sh
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
/usr/bin/pulseaudio --start
|
||||
/usr/bin/xterm
|
||||
2
root/etc/X11/Xwrapper.config
Normal file
2
root/etc/X11/Xwrapper.config
Normal file
@ -0,0 +1,2 @@
|
||||
allowed_users=anybody
|
||||
needs_root_rights=no
|
||||
@ -1,9 +0,0 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
mkdir -p /var/run/xrdp || exit 1
|
||||
chown root:xrdp /var/run/xrdp || exit 1
|
||||
chmod 2775 /var/run/xrdp || exit 1
|
||||
|
||||
mkdir -p /var/run/xrdp/sockdir || exit 1
|
||||
chown root:xrdp /var/run/xrdp/sockdir || exit 1
|
||||
chmod 3777 /var/run/xrdp/sockdir || exit 1
|
||||
@ -1,20 +1,7 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
if [ ! -e /lock.file ]; then
|
||||
# give abc a sudo shell
|
||||
chsh abc -s /bin/bash
|
||||
sed -e 's/%sudo ALL=(ALL:ALL) ALL/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g' \
|
||||
-i /etc/sudoers
|
||||
sed -e 's/^wheel:\(.*\)/wheel:\1,abc/g' -i /etc/group
|
||||
fi
|
||||
|
||||
# create lock file after first run
|
||||
touch /lock.file
|
||||
|
||||
# default file copies first run
|
||||
[[ ! -d /config/.config ]] && \
|
||||
mkdir -p /config/.config && \
|
||||
cp /defaults/bashrc /config/.bashrc && \
|
||||
[[ ! -f /config/startwm ]] && \
|
||||
cp /defaults/startwm.sh /config/startwm.sh
|
||||
|
||||
# permissions
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user