From 5b1c8167c00e2c4f982de4576f68d782ea08587d Mon Sep 17 00:00:00 2001 From: thelamer Date: Sat, 3 Apr 2021 13:11:33 -0700 Subject: [PATCH] add Alpine rdesktop baseimage --- .github/workflows/external_trigger.yml | 4 +- .github/workflows/package_trigger.yml | 14 +-- Dockerfile | 150 ++++++++++++------------- Dockerfile.aarch64 | 150 ++++++++++++------------- Dockerfile.armhf | 150 ++++++++++++------------- Jenkinsfile | 94 ++++++++-------- jenkins-vars.yml | 8 +- root/defaults/bashrc | 85 -------------- root/defaults/startwm.sh | 3 + root/etc/X11/Xwrapper.config | 2 + root/etc/cont-init.d/12-prep_xrdp | 9 -- root/etc/cont-init.d/30-config | 15 +-- 12 files changed, 279 insertions(+), 405 deletions(-) delete mode 100644 root/defaults/bashrc create mode 100755 root/defaults/startwm.sh create mode 100644 root/etc/X11/Xwrapper.config delete mode 100755 root/etc/cont-init.d/12-prep_xrdp diff --git a/.github/workflows/external_trigger.yml b/.github/workflows/external_trigger.yml index 451a0fd..e3b1f1d 100644 --- a/.github/workflows/external_trigger.yml +++ b/.github/workflows/external_trigger.yml @@ -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 diff --git a/.github/workflows/package_trigger.yml b/.github/workflows/package_trigger.yml index 73a8a26..1f3de55 100644 --- a/.github/workflows/package_trigger.yml +++ b/.github/workflows/package_trigger.yml @@ -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 ****" diff --git a/Dockerfile b/Dockerfile index 89da2bb..969ecfd 100644 --- a/Dockerfile +++ b/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 diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 74716a6..bd6ab5b 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -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 diff --git a/Dockerfile.armhf b/Dockerfile.armhf index c38b415..578fbd2 100644 --- a/Dockerfile.armhf +++ b/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 diff --git a/Jenkinsfile b/Jenkinsfile index 655e4cc..82ef178 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -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''' } diff --git a/jenkins-vars.yml b/jenkins-vars.yml index 4d417b1..eae2221 100644 --- a/jenkins-vars.yml +++ b/jenkins-vars.yml @@ -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' diff --git a/root/defaults/bashrc b/root/defaults/bashrc deleted file mode 100644 index aca4a92..0000000 --- a/root/defaults/bashrc +++ /dev/null @@ -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 ~ diff --git a/root/defaults/startwm.sh b/root/defaults/startwm.sh new file mode 100755 index 0000000..c082e60 --- /dev/null +++ b/root/defaults/startwm.sh @@ -0,0 +1,3 @@ +#!/bin/bash +/usr/bin/pulseaudio --start +/usr/bin/xterm diff --git a/root/etc/X11/Xwrapper.config b/root/etc/X11/Xwrapper.config new file mode 100644 index 0000000..3601fee --- /dev/null +++ b/root/etc/X11/Xwrapper.config @@ -0,0 +1,2 @@ +allowed_users=anybody +needs_root_rights=no diff --git a/root/etc/cont-init.d/12-prep_xrdp b/root/etc/cont-init.d/12-prep_xrdp deleted file mode 100755 index 92e32e1..0000000 --- a/root/etc/cont-init.d/12-prep_xrdp +++ /dev/null @@ -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 diff --git a/root/etc/cont-init.d/30-config b/root/etc/cont-init.d/30-config index 1a2f4d6..d1b42c5 100644 --- a/root/etc/cont-init.d/30-config +++ b/root/etc/cont-init.d/30-config @@ -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