From 249475a98207ad483587c00ef1da386a5f54d94d Mon Sep 17 00:00:00 2001 From: TheSpad Date: Sat, 10 Dec 2022 17:15:47 +0000 Subject: [PATCH 1/9] Minor Dockerfile optimisations --- Dockerfile | 1 - Dockerfile.aarch64 | 1 - Dockerfile.armhf | 1 - 3 files changed, 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 883cf5f..a1fa23c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,6 @@ RUN \ curl \ git \ jq \ - tar \ tzdata \ xz diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 36bdc07..b8dfa68 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -13,7 +13,6 @@ RUN \ curl \ git \ jq \ - tar \ tzdata \ xz diff --git a/Dockerfile.armhf b/Dockerfile.armhf index e9fb915..16dcc3d 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -13,7 +13,6 @@ RUN \ curl \ git \ jq \ - tar \ tzdata \ xz From f2a0a3136f80ea97772fbc0c660a2a6e255a0216 Mon Sep 17 00:00:00 2001 From: TheSpad Date: Sat, 10 Dec 2022 17:15:57 +0000 Subject: [PATCH 2/9] Remove legacy scripts check --- .../dependencies.d/init-script-check | 0 .../dependencies.d/init-script-check | 0 .../dependencies.d/00-legacy | 0 .../s6-overlay/s6-rc.d/init-script-check/run | 23 ------------------- .../s6-overlay/s6-rc.d/init-script-check/type | 1 - .../s6-overlay/s6-rc.d/init-script-check/up | 1 - .../s6-rc.d/user/contents.d/init-script-check | 0 7 files changed, 25 deletions(-) delete mode 100644 root/etc/s6-overlay/s6-rc.d/init-adduser/dependencies.d/init-script-check delete mode 100644 root/etc/s6-overlay/s6-rc.d/init-os-end/dependencies.d/init-script-check delete mode 100644 root/etc/s6-overlay/s6-rc.d/init-script-check/dependencies.d/00-legacy delete mode 100755 root/etc/s6-overlay/s6-rc.d/init-script-check/run delete mode 100644 root/etc/s6-overlay/s6-rc.d/init-script-check/type delete mode 100644 root/etc/s6-overlay/s6-rc.d/init-script-check/up delete mode 100644 root/etc/s6-overlay/s6-rc.d/user/contents.d/init-script-check diff --git a/root/etc/s6-overlay/s6-rc.d/init-adduser/dependencies.d/init-script-check b/root/etc/s6-overlay/s6-rc.d/init-adduser/dependencies.d/init-script-check deleted file mode 100644 index e69de29..0000000 diff --git a/root/etc/s6-overlay/s6-rc.d/init-os-end/dependencies.d/init-script-check b/root/etc/s6-overlay/s6-rc.d/init-os-end/dependencies.d/init-script-check deleted file mode 100644 index e69de29..0000000 diff --git a/root/etc/s6-overlay/s6-rc.d/init-script-check/dependencies.d/00-legacy b/root/etc/s6-overlay/s6-rc.d/init-script-check/dependencies.d/00-legacy deleted file mode 100644 index e69de29..0000000 diff --git a/root/etc/s6-overlay/s6-rc.d/init-script-check/run b/root/etc/s6-overlay/s6-rc.d/init-script-check/run deleted file mode 100755 index 20c2c43..0000000 --- a/root/etc/s6-overlay/s6-rc.d/init-script-check/run +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/with-contenv bash -# shellcheck shell=bash - -if [[ -n "$(/bin/ls -A "/config/custom-cont-init.d" 2>/dev/null)" ]] || - [[ -n "$(/bin/ls -A "/config/custom-services.d" 2>/dev/null)" ]]; then - cat << EOF | tee /config/custom-cont-init.d/README.txt 2>/dev/null -******************************************************** -******************************************************** -* * -* !!!! * -* Custom scripts or services found in legacy locations * -* !!!! * -* Please move your custom scripts and services * -* to /custom-cont-init.d and /custom-services.d * -* respectively to ensure they continue working. * -* * -* Visit https://linuxserver.io/custom for more info. * -* * -******************************************************** -******************************************************** -EOF -fi -exit 0 diff --git a/root/etc/s6-overlay/s6-rc.d/init-script-check/type b/root/etc/s6-overlay/s6-rc.d/init-script-check/type deleted file mode 100644 index bdd22a1..0000000 --- a/root/etc/s6-overlay/s6-rc.d/init-script-check/type +++ /dev/null @@ -1 +0,0 @@ -oneshot diff --git a/root/etc/s6-overlay/s6-rc.d/init-script-check/up b/root/etc/s6-overlay/s6-rc.d/init-script-check/up deleted file mode 100644 index a7c155a..0000000 --- a/root/etc/s6-overlay/s6-rc.d/init-script-check/up +++ /dev/null @@ -1 +0,0 @@ -/etc/s6-overlay/s6-rc.d/init-script-check/run diff --git a/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-script-check b/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-script-check deleted file mode 100644 index e69de29..0000000 From f227a3d2adf84790918c6f2adef6b210f68a5048 Mon Sep 17 00:00:00 2001 From: TheSpad Date: Sat, 10 Dec 2022 17:20:16 +0000 Subject: [PATCH 3/9] Fedora tarball doesn't work with busybox tar --- Dockerfile | 1 + Dockerfile.aarch64 | 3 ++- Dockerfile.armhf | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index a1fa23c..883cf5f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,6 +13,7 @@ RUN \ curl \ git \ jq \ + tar \ tzdata \ xz diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index b8dfa68..b3ae94a 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -FROM alpine:3.14 as rootfs-stage +FROM alpine:3.16 as rootfs-stage # environment ENV ARCH=aarch64 @@ -13,6 +13,7 @@ RUN \ curl \ git \ jq \ + tar \ tzdata \ xz diff --git a/Dockerfile.armhf b/Dockerfile.armhf index 16dcc3d..7eac62e 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -FROM alpine:3.14 as rootfs-stage +FROM alpine:3.16 as rootfs-stage # environment ENV ARCH=armhfp @@ -13,6 +13,7 @@ RUN \ curl \ git \ jq \ + tar \ tzdata \ xz From e0a63a8ff2a278d20daf0742b04daa80e2f3aef3 Mon Sep 17 00:00:00 2001 From: TheSpad Date: Sat, 10 Dec 2022 18:00:52 +0000 Subject: [PATCH 4/9] Drop armhf support to match upstream --- Dockerfile.armhf | 67 +------------------ .../init-os/dependencies.d/legacy-services | 0 root-armhf/etc/s6-overlay/s6-rc.d/init-os/run | 14 ++++ .../etc/s6-overlay/s6-rc.d/init-os/type | 1 + root-armhf/etc/s6-overlay/s6-rc.d/init-os/up | 1 + .../s6-rc.d/user2/contents.d/init-os | 0 6 files changed, 18 insertions(+), 65 deletions(-) create mode 100644 root-armhf/etc/s6-overlay/s6-rc.d/init-os/dependencies.d/legacy-services create mode 100755 root-armhf/etc/s6-overlay/s6-rc.d/init-os/run create mode 100644 root-armhf/etc/s6-overlay/s6-rc.d/init-os/type create mode 100644 root-armhf/etc/s6-overlay/s6-rc.d/init-os/up create mode 100644 root-armhf/etc/s6-overlay/s6-rc.d/user2/contents.d/init-os diff --git a/Dockerfile.armhf b/Dockerfile.armhf index 7eac62e..4c8880a 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -2,29 +2,12 @@ FROM alpine:3.16 as rootfs-stage -# environment -ENV ARCH=armhfp -ARG FEDORA_VERSION - # install packages RUN \ apk add --no-cache \ bash \ curl \ - git \ - jq \ - tar \ - tzdata \ - xz - -# grab tarball root -RUN \ - mkdir /root-out && \ - git clone --depth 1 -b ${FEDORA_VERSION} https://github.com/fedora-cloud/docker-brew-fedora.git && \ - tar xf \ - docker-brew-fedora/${ARCH}/fedora-${FEDORA_VERSION}*.tar.xz -C \ - /root-out && \ - sed -i -e 's/^root::/root:!:/' /root-out/etc/shadow + tzdata # set version for s6 overlay ARG S6_OVERLAY_VERSION="3.1.2.1" @@ -42,53 +25,7 @@ RUN tar -C /root-out -Jxpf /tmp/s6-overlay-symlinks-noarch.tar.xz ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-arch.tar.xz /tmp RUN tar -C /root-out -Jxpf /tmp/s6-overlay-symlinks-arch.tar.xz -# Runtime stage -FROM scratch -COPY --from=rootfs-stage /root-out/ / -ARG BUILD_DATE -ARG VERSION -ARG MODS_VERSION="v3" -LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" -LABEL maintainer="TheLamer" - -ADD --chmod=744 "https://raw.githubusercontent.com/linuxserver/docker-mods/mod-scripts/docker-mods.${MODS_VERSION}" "/docker-mods" - -# environment variables -ENV PS1="$(whoami)@$(hostname):$(pwd)\\$ " \ -HOME="/root" \ -TERM="xterm" \ -S6_CMD_WAIT_FOR_SERVICES_MAXTIME="0" \ -S6_VERBOSITY=1 \ -S6_STAGE2_HOOK=/docker-mods - -RUN \ - echo "**** install base packages ****" && \ - dnf -y --forcearch armv7hl --setopt=install_weak_deps=False --best install \ - ca-certificates \ - coreutils \ - curl \ - findutils \ - hostname \ - jq \ - netcat \ - procps \ - shadow \ - tzdata \ - which && \ - echo "**** create abc user and make our folders ****" && \ - useradd -u 911 -U -d /config -s /bin/false abc && \ - usermod -G users abc && \ - mkdir -p \ - /app \ - /config \ - /defaults && \ - echo "**** cleanup ****" && \ - dnf autoremove -y && \ - dnf clean all && \ - rm -rf \ - /tmp/* - # add local files -COPY root/ / +COPY root-armhf/ / ENTRYPOINT ["/init"] diff --git a/root-armhf/etc/s6-overlay/s6-rc.d/init-os/dependencies.d/legacy-services b/root-armhf/etc/s6-overlay/s6-rc.d/init-os/dependencies.d/legacy-services new file mode 100644 index 0000000..e69de29 diff --git a/root-armhf/etc/s6-overlay/s6-rc.d/init-os/run b/root-armhf/etc/s6-overlay/s6-rc.d/init-os/run new file mode 100755 index 0000000..e8a0b84 --- /dev/null +++ b/root-armhf/etc/s6-overlay/s6-rc.d/init-os/run @@ -0,0 +1,14 @@ +#!/usr/bin/with-contenv bash + +cat <<-EOF + ******************************************************** + ******************************************************** + * * + * !!!! * + * This Fedora baseimage does not support * + * 32 bit ARM due to lack of available OS packages * + * * + * * + ******************************************************** + ******************************************************** +EOF diff --git a/root-armhf/etc/s6-overlay/s6-rc.d/init-os/type b/root-armhf/etc/s6-overlay/s6-rc.d/init-os/type new file mode 100644 index 0000000..3d92b15 --- /dev/null +++ b/root-armhf/etc/s6-overlay/s6-rc.d/init-os/type @@ -0,0 +1 @@ +oneshot \ No newline at end of file diff --git a/root-armhf/etc/s6-overlay/s6-rc.d/init-os/up b/root-armhf/etc/s6-overlay/s6-rc.d/init-os/up new file mode 100644 index 0000000..65487fb --- /dev/null +++ b/root-armhf/etc/s6-overlay/s6-rc.d/init-os/up @@ -0,0 +1 @@ +/etc/s6-overlay/s6-rc.d/init-os/run \ No newline at end of file diff --git a/root-armhf/etc/s6-overlay/s6-rc.d/user2/contents.d/init-os b/root-armhf/etc/s6-overlay/s6-rc.d/user2/contents.d/init-os new file mode 100644 index 0000000..e69de29 From f3dd375c6195a58e0c7b76d85b5f54a0ad5dd3c5 Mon Sep 17 00:00:00 2001 From: TheSpad Date: Sat, 10 Dec 2022 18:02:51 +0000 Subject: [PATCH 5/9] Fix unpack location --- Dockerfile.armhf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile.armhf b/Dockerfile.armhf index 4c8880a..28170b6 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -15,15 +15,15 @@ ARG S6_OVERLAY_ARCH="armhf" # add s6 overlay ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp -RUN tar -C /root-out -Jxpf /tmp/s6-overlay-noarch.tar.xz +RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz /tmp -RUN tar -C /root-out -Jxpf /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz +RUN tar -C / -Jxpf /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz # add s6 optional symlinks ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-noarch.tar.xz /tmp -RUN tar -C /root-out -Jxpf /tmp/s6-overlay-symlinks-noarch.tar.xz +RUN tar -C / -Jxpf /tmp/s6-overlay-symlinks-noarch.tar.xz ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-arch.tar.xz /tmp -RUN tar -C /root-out -Jxpf /tmp/s6-overlay-symlinks-arch.tar.xz +RUN tar -C / -Jxpf /tmp/s6-overlay-symlinks-arch.tar.xz # add local files COPY root-armhf/ / From d7041aa0729b1c25c3636cda8181b687325502a4 Mon Sep 17 00:00:00 2001 From: TheSpad Date: Sat, 10 Dec 2022 18:13:20 +0000 Subject: [PATCH 6/9] Restore build_version & maintainer labels --- Dockerfile.armhf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Dockerfile.armhf b/Dockerfile.armhf index 28170b6..a9f9963 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -2,6 +2,12 @@ FROM alpine:3.16 as rootfs-stage +ARG BUILD_DATE +ARG VERSION + +LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" +LABEL maintainer="TheLamer" + # install packages RUN \ apk add --no-cache \ From b9116079cf893f252d2fd14f5a61e73334a47804 Mon Sep 17 00:00:00 2001 From: TheSpad Date: Sat, 10 Dec 2022 18:23:45 +0000 Subject: [PATCH 7/9] Remove legacy custom file handlers --- .../s6-overlay/s6-rc.d/init-custom-files/run | 34 ------------------- 1 file changed, 34 deletions(-) diff --git a/root/etc/s6-overlay/s6-rc.d/init-custom-files/run b/root/etc/s6-overlay/s6-rc.d/init-custom-files/run index 86ca303..3d8a17e 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-custom-files/run +++ b/root/etc/s6-overlay/s6-rc.d/init-custom-files/run @@ -2,21 +2,8 @@ # shellcheck shell=bash # Directories -SCRIPTS_DIR_OLD="/config/custom-cont-init.d" SCRIPTS_DIR="/custom-cont-init.d" -SERVICES_DIR_OLD="/config/custom-services.d" - -# chown legacy folders if they exist -if [[ -e "${SCRIPTS_DIR_OLD}" ]]; then - chown -R 0:0 "${SCRIPTS_DIR_OLD}" -fi - -# chown legacy folders if they exist -if [[ -e "${SERVICES_DIR_OLD}" ]]; then - chown -R 0:0 "${SERVICES_DIR_OLD}" -fi - # Make sure custom init directory exists and has files in it if [[ -e "${SCRIPTS_DIR}" ]] && [[ -n "$(/bin/ls -A ${SCRIPTS_DIR} 2>/dev/null)" ]]; then echo "[custom-init] Files found, executing" @@ -30,27 +17,6 @@ if [[ -e "${SCRIPTS_DIR}" ]] && [[ -n "$(/bin/ls -A ${SCRIPTS_DIR} 2>/dev/null)" echo "[custom-init] ${NAME}: is not a file" fi done - - # Remove legacy folder if it's empty - if [[ -e "${SCRIPTS_DIR_OLD}" ]] && [[ -z "$(/bin/ls -A ${SCRIPTS_DIR_OLD} 2>/dev/null)" ]]; then - echo "[custom-init] Legacy files folder ${SCRIPTS_DIR_OLD} is empty, deleting..." - rm -rf "${SCRIPTS_DIR_OLD}" - fi -elif [[ -e "${SCRIPTS_DIR_OLD}" ]] && [[ -n "$(/bin/ls -A ${SCRIPTS_DIR_OLD} 2>/dev/null)" ]]; then - echo "[custom-init] Files found, executing" - for SCRIPT in "${SCRIPTS_DIR_OLD}"/*; do - NAME="$(basename "${SCRIPT}")" - if [[ -f "${SCRIPT}" ]]; then - echo "[custom-init] ${NAME}: executing..." - /bin/bash "${SCRIPT}" - echo "[custom-init] ${NAME}: exited $?" - elif [[ ! -f "${SCRIPT}" ]]; then - echo "[custom-init] ${NAME}: is not a file" - fi - done -elif [[ -e "${SCRIPTS_DIR_OLD}" ]] && [[ -z "$(/bin/ls -A ${SCRIPTS_DIR_OLD} 2>/dev/null)" ]]; then - echo "[custom-init] Legacy files folder ${SCRIPTS_DIR_OLD} is empty, deleting..." - rm -rf "${SCRIPTS_DIR_OLD}" else echo "[custom-init] No custom files found, skipping..." fi From 0a63822488a1173a51e5569f11282c984c40f2a0 Mon Sep 17 00:00:00 2001 From: TheSpad Date: Sun, 11 Dec 2022 18:30:37 +0000 Subject: [PATCH 8/9] Remove armhf entirely --- .github/workflows/call_invalid_helper.yml | 12 +++ Dockerfile.armhf | 37 -------- Jenkinsfile | 85 ++++--------------- jenkins-vars.yml | 1 + .../init-os/dependencies.d/legacy-services | 0 root-armhf/etc/s6-overlay/s6-rc.d/init-os/run | 14 --- .../etc/s6-overlay/s6-rc.d/init-os/type | 1 - root-armhf/etc/s6-overlay/s6-rc.d/init-os/up | 1 - .../s6-rc.d/user2/contents.d/init-os | 0 9 files changed, 28 insertions(+), 123 deletions(-) create mode 100644 .github/workflows/call_invalid_helper.yml delete mode 100644 Dockerfile.armhf delete mode 100644 root-armhf/etc/s6-overlay/s6-rc.d/init-os/dependencies.d/legacy-services delete mode 100755 root-armhf/etc/s6-overlay/s6-rc.d/init-os/run delete mode 100644 root-armhf/etc/s6-overlay/s6-rc.d/init-os/type delete mode 100644 root-armhf/etc/s6-overlay/s6-rc.d/init-os/up delete mode 100644 root-armhf/etc/s6-overlay/s6-rc.d/user2/contents.d/init-os diff --git a/.github/workflows/call_invalid_helper.yml b/.github/workflows/call_invalid_helper.yml new file mode 100644 index 0000000..773767c --- /dev/null +++ b/.github/workflows/call_invalid_helper.yml @@ -0,0 +1,12 @@ +name: Comment on invalid interaction +on: + issues: + types: + - labeled +jobs: + add-comment-on-invalid: + if: github.event.label.name == 'invalid' + permissions: + issues: write + uses: linuxserver/github-workflows/.github/workflows/invalid-interaction-helper.yml@v1 + secrets: inherit diff --git a/Dockerfile.armhf b/Dockerfile.armhf deleted file mode 100644 index a9f9963..0000000 --- a/Dockerfile.armhf +++ /dev/null @@ -1,37 +0,0 @@ -# syntax=docker/dockerfile:1 - -FROM alpine:3.16 as rootfs-stage - -ARG BUILD_DATE -ARG VERSION - -LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" -LABEL maintainer="TheLamer" - -# install packages -RUN \ - apk add --no-cache \ - bash \ - curl \ - tzdata - -# set version for s6 overlay -ARG S6_OVERLAY_VERSION="3.1.2.1" -ARG S6_OVERLAY_ARCH="armhf" - -# add s6 overlay -ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp -RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz -ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz /tmp -RUN tar -C / -Jxpf /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz - -# add s6 optional symlinks -ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-noarch.tar.xz /tmp -RUN tar -C / -Jxpf /tmp/s6-overlay-symlinks-noarch.tar.xz -ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-arch.tar.xz /tmp -RUN tar -C / -Jxpf /tmp/s6-overlay-symlinks-arch.tar.xz - -# add local files -COPY root-armhf/ / - -ENTRYPOINT ["/init"] diff --git a/Jenkinsfile b/Jenkinsfile index 48db0ab..e97428d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -66,7 +66,7 @@ pipeline { script{ env.LS_TAG_NUMBER = sh( script: '''#! /bin/bash - tagsha=$(git rev-list -n 1 ${LS_RELEASE} 2>/dev/null) + tagsha=$(git rev-list -n 1 36-${LS_RELEASE} 2>/dev/null) if [ "${tagsha}" == "${COMMIT_SHA}" ]; then echo ${LS_RELEASE_NUMBER} elif [ -z "${GIT_COMMIT}" ]; then @@ -157,7 +157,7 @@ pipeline { env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME if (env.MULTIARCH == 'true') { - env.CI_TAGS = 'amd64-36-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-36-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-36-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + env.CI_TAGS = 'amd64-36-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-36-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER } else { env.CI_TAGS = '36-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER } @@ -180,7 +180,7 @@ pipeline { env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME if (env.MULTIARCH == 'true') { - env.CI_TAGS = 'amd64-36-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-36-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-36-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + env.CI_TAGS = 'amd64-36-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-36-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA } else { env.CI_TAGS = '36-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA } @@ -203,7 +203,7 @@ pipeline { env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME if (env.MULTIARCH == 'true') { - env.CI_TAGS = 'amd64-36-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-36-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-36-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + env.CI_TAGS = 'amd64-36-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-36-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST } else { env.CI_TAGS = '36-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST } @@ -468,40 +468,6 @@ pipeline { --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." } } - stage('Build ARMHF') { - agent { - label 'ARMHF' - } - steps { - echo "Running on node: ${NODE_NAME}" - echo 'Logging into Github' - sh '''#! /bin/bash - echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin - ''' - sh "docker build \ - --label \"org.opencontainers.image.created=${GITHUB_DATE}\" \ - --label \"org.opencontainers.image.authors=linuxserver.io\" \ - --label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-baseimage-fedora/packages\" \ - --label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-baseimage-fedora\" \ - --label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-baseimage-fedora\" \ - --label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \ - --label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \ - --label \"org.opencontainers.image.vendor=linuxserver.io\" \ - --label \"org.opencontainers.image.licenses=GPL-3.0-only\" \ - --label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \ - --label \"org.opencontainers.image.title=Baseimage-fedora\" \ - --label \"org.opencontainers.image.description=baseimage-fedora image by linuxserver.io\" \ - --no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} \ - --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." - sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}" - retry(5) { - sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}" - } - sh '''docker rmi \ - ${IMAGE}:arm32v7-${META_TAG} \ - ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} || :''' - } - } stage('Build ARM64') { agent { label 'ARM64' @@ -651,9 +617,7 @@ pipeline { set -e docker pull ghcr.io/linuxserver/ci:latest if [ "${MULTIARCH}" == "true" ]; then - docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} - docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} fi docker run --rm \ @@ -769,56 +733,42 @@ pipeline { echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin if [ "${CI}" == "false" ]; then - docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} - docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} fi for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do 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-36 - docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-36 - docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-36 docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} - docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} + docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} + docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-36 docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} if [ -n "${SEMVER}" ]; then docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER} - docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER} docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER} fi docker push ${MANIFESTIMAGE}:amd64-${META_TAG} - docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG} - docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG} - docker push ${MANIFESTIMAGE}:amd64-36 - docker push ${MANIFESTIMAGE}:arm32v7-36 - docker push ${MANIFESTIMAGE}:arm64v8-36 docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} - docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} + docker push ${MANIFESTIMAGE}:amd64-36 + docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG} + docker push ${MANIFESTIMAGE}:arm64v8-36 docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} if [ -n "${SEMVER}" ]; then docker push ${MANIFESTIMAGE}:amd64-${SEMVER} - docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER} docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER} fi docker manifest push --purge ${MANIFESTIMAGE}:36 || : - docker manifest create ${MANIFESTIMAGE}:36 ${MANIFESTIMAGE}:amd64-36 ${MANIFESTIMAGE}:arm32v7-36 ${MANIFESTIMAGE}:arm64v8-36 - docker manifest annotate ${MANIFESTIMAGE}:36 ${MANIFESTIMAGE}:arm32v7-36 --os linux --arch arm + docker manifest create ${MANIFESTIMAGE}:36 ${MANIFESTIMAGE}:amd64-36 ${MANIFESTIMAGE}:arm64v8-36 docker manifest annotate ${MANIFESTIMAGE}:36 ${MANIFESTIMAGE}:arm64v8-36 --os linux --arch arm64 --variant v8 docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || : - docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} - docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm + docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8 docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || : - docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} - docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm + docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8 if [ -n "${SEMVER}" ]; then docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || : - docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} - docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm + docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8 fi docker manifest push --purge ${MANIFESTIMAGE}:36 @@ -833,20 +783,15 @@ pipeline { sh '''#! /bin/bash for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do docker rmi \ - ${DELETEIMAGE}:arm32v7-${META_TAG} \ - ${DELETEIMAGE}:arm32v7-36 \ - ${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \ ${DELETEIMAGE}:arm64v8-${META_TAG} \ ${DELETEIMAGE}:arm64v8-36 \ ${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || : if [ -n "${SEMVER}" ]; then docker rmi \ - ${DELETEIMAGE}:arm32v7-${SEMVER} \ ${DELETEIMAGE}:arm64v8-${SEMVER} || : fi done docker rmi \ - ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \ ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || : ''' } @@ -938,12 +883,12 @@ pipeline { sh 'echo "build aborted"' } else if (currentBuild.currentResult == "SUCCESS"){ - sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 1681177,\ + sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"color": 1681177,\ "description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** Success\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ "username": "Jenkins"}' ${BUILDS_DISCORD} ''' } else { - sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 16711680,\ + sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"color": 16711680,\ "description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** failure\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ "username": "Jenkins"}' ${BUILDS_DISCORD} ''' } diff --git a/jenkins-vars.yml b/jenkins-vars.yml index 9260327..317918e 100644 --- a/jenkins-vars.yml +++ b/jenkins-vars.yml @@ -7,6 +7,7 @@ custom_version_command: "echo 36" release_type: stable release_tag: "36" ls_branch: master +build_armhf: false repo_vars: - BUILD_VERSION_ARG = 'FEDORA_VERSION' - LS_USER = 'linuxserver' diff --git a/root-armhf/etc/s6-overlay/s6-rc.d/init-os/dependencies.d/legacy-services b/root-armhf/etc/s6-overlay/s6-rc.d/init-os/dependencies.d/legacy-services deleted file mode 100644 index e69de29..0000000 diff --git a/root-armhf/etc/s6-overlay/s6-rc.d/init-os/run b/root-armhf/etc/s6-overlay/s6-rc.d/init-os/run deleted file mode 100755 index e8a0b84..0000000 --- a/root-armhf/etc/s6-overlay/s6-rc.d/init-os/run +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/with-contenv bash - -cat <<-EOF - ******************************************************** - ******************************************************** - * * - * !!!! * - * This Fedora baseimage does not support * - * 32 bit ARM due to lack of available OS packages * - * * - * * - ******************************************************** - ******************************************************** -EOF diff --git a/root-armhf/etc/s6-overlay/s6-rc.d/init-os/type b/root-armhf/etc/s6-overlay/s6-rc.d/init-os/type deleted file mode 100644 index 3d92b15..0000000 --- a/root-armhf/etc/s6-overlay/s6-rc.d/init-os/type +++ /dev/null @@ -1 +0,0 @@ -oneshot \ No newline at end of file diff --git a/root-armhf/etc/s6-overlay/s6-rc.d/init-os/up b/root-armhf/etc/s6-overlay/s6-rc.d/init-os/up deleted file mode 100644 index 65487fb..0000000 --- a/root-armhf/etc/s6-overlay/s6-rc.d/init-os/up +++ /dev/null @@ -1 +0,0 @@ -/etc/s6-overlay/s6-rc.d/init-os/run \ No newline at end of file diff --git a/root-armhf/etc/s6-overlay/s6-rc.d/user2/contents.d/init-os b/root-armhf/etc/s6-overlay/s6-rc.d/user2/contents.d/init-os deleted file mode 100644 index e69de29..0000000 From fbcc1588f180f84f51f10f7597a1fcacf743124b Mon Sep 17 00:00:00 2001 From: TheSpad Date: Fri, 10 Feb 2023 19:19:52 +0000 Subject: [PATCH 9/9] Run builder --- .editorconfig | 2 +- .github/workflows/greetings.yml | 2 +- .github/workflows/permissions.yml | 9 +++++++++ Jenkinsfile | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/permissions.yml diff --git a/.editorconfig b/.editorconfig index a92f7df..5f150f3 100644 --- a/.editorconfig +++ b/.editorconfig @@ -15,6 +15,6 @@ trim_trailing_whitespace = false indent_style = space indent_size = 2 -[{**.sh,root/etc/cont-init.d/**,root/etc/services.d/**}] +[{**.sh,root/etc/s6-overlay/s6-rc.d/**,root/etc/cont-init.d/**,root/etc/services.d/**}] indent_style = space indent_size = 4 diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index c17958b..d4c4e18 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -8,6 +8,6 @@ jobs: steps: - uses: actions/first-interaction@v1 with: - issue-message: 'Thanks for opening your first issue here! Be sure to follow the [bug](https://github.com/linuxserver/docker-baseimage-fedora/blob/master/.github/ISSUE_TEMPLATE/issue.bug.yml) or [feature](https://github.com/linuxserver/docker-baseimage-fedora/blob/master/.github/ISSUE_TEMPLATE/issue.feature.yml) issue templates!' + issue-message: 'Thanks for opening your first issue here! Be sure to follow the relevant issue templates, or risk having this issue marked as invalid.' pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-baseimage-fedora/blob/master/.github/PULL_REQUEST_TEMPLATE.md)!' repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/permissions.yml b/.github/workflows/permissions.yml new file mode 100644 index 0000000..2df6b61 --- /dev/null +++ b/.github/workflows/permissions.yml @@ -0,0 +1,9 @@ +name: Permission check +on: + pull_request: + paths: + - '**/run' + - '**/finish' +jobs: + permission_check: + uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1 diff --git a/Jenkinsfile b/Jenkinsfile index e97428d..a26b379 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -56,7 +56,7 @@ pipeline { env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/' env.PULL_REQUEST = env.CHANGE_ID - env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/stale.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml' + env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/stale.yml ./.github/workflows/call_invalid_helper.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml' } script{ env.LS_RELEASE_NUMBER = sh(