From 4c7c5d94011dd5a63ef22e28d740b88a21911d6d Mon Sep 17 00:00:00 2001 From: aptalca Date: Tue, 13 Apr 2021 22:36:21 -0400 Subject: [PATCH] rebase to ubuntu and build latest from source --- .github/workflows/external_trigger.yml | 3 +- Dockerfile | 68 ++++++++++++++++++++------ Dockerfile.aarch64 | 68 ++++++++++++++++++++------ Dockerfile.armhf | 68 ++++++++++++++++++++------ Jenkinsfile | 18 +++---- jenkins-vars.yml | 8 ++- root/defaults/autostart | 2 +- 7 files changed, 168 insertions(+), 67 deletions(-) diff --git a/.github/workflows/external_trigger.yml b/.github/workflows/external_trigger.yml index b620150..f837a95 100644 --- a/.github/workflows/external_trigger.yml +++ b/.github/workflows/external_trigger.yml @@ -18,8 +18,7 @@ jobs: fi echo "**** External trigger running off of main branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_AUDACITY_MAIN\". ****" echo "**** Retrieving external version ****" - EXT_RELEASE=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ - && awk '/^P:'"audacity"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://') + EXT_RELEASE=$(curl -sX GET https://api.github.com/repos/audacity/audacity/releases/latest | jq -r '.tag_name' | sed 's|^Audacity-||') if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then echo "**** Can't retrieve external version, exiting ****" FAILURE_REASON="Can't retrieve external version for audacity branch main" diff --git a/Dockerfile b/Dockerfile index 735cb62..4554749 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,30 +1,66 @@ -FROM ghcr.io/linuxserver/baseimage-rdesktop-web:alpine +FROM ghcr.io/linuxserver/baseimage-rdesktop-web:focal as buildstage + +ARG AUDACITY_VERSION + +RUN \ + echo "**** install build packages ****" && \ + apt-get update && \ + apt-get install -y \ + build-essential \ + cmake \ + curl \ + gcc \ + git \ + libasound2-dev \ + libavformat-dev \ + libgtk2.0-dev \ + python3-minimal \ + libjack-jackd2-dev && \ + echo "**** build audacity ****" && \ + if [ -z ${AUDACITY_VERSION+x} ]; then \ + AUDACITY_VERSION=$(curl -sX GET "https://api.github.com/repos/audacity/audacity/releases/latest" \ + | awk '/tag_name/{print $4;exit}' FS='[""]' | sed 's|^Audacity-||'); \ + fi && \ + mkdir -p /app/audacity/build && \ + curl -o \ + /tmp/audacity.tar.xz -L \ + "https://github.com/audacity/audacity/releases/download/Audacity-${AUDACITY_VERSION}/audacity-minsrc-${AUDACITY_VERSION}.tar.xz" && \ + tar xf \ + /tmp/audacity.tar.xz -C \ + /app/audacity --strip-components=1 && \ + cd /app/audacity/build && \ + cmake -DCMAKE_BUILD_TYPE=Release -Daudacity_use_wxwidgets=local -Daudacity_use_ffmpeg=loaded .. && \ + make -j6 && \ + make install + + +FROM ghcr.io/linuxserver/baseimage-rdesktop-web:focal # set version label ARG BUILD_DATE ARG VERSION -ARG AUDACITY_VERSION LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL maintainer="aptalca" RUN \ - echo "**** install packages ****" && \ - apk add --no-cache --virtual=build-dependencies \ - curl && \ - if [ -z ${AUDACITY_VERSION+x} ]; then \ - AUDACITY_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ - && awk '/^P:audacity$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://'); \ - fi && \ - apk add --no-cache \ - audacity==${AUDACITY_VERSION} && \ - echo "**** cleanup ****" && \ - apk del --purge \ - build-dependencies && \ - rm -rf \ - /tmp/* + echo "**** install packages ****" && \ + apt-get update && \ + apt-get install -y \ + libasound2 \ + libavformat58 \ + libgtk2.0-0 \ + libjack-jackd2-0 \ + python3-minimal && \ + echo "**** cleanup ****" && \ + rm -rf \ + /tmp/* # add local files COPY /root / +COPY --from=buildstage /usr/local/share/audacity /usr/local/share/audacity +COPY --from=buildstage /usr/local/lib/audacity /usr/local/lib/audacity +COPY --from=buildstage /usr/local/bin/audacity /usr/local/bin/audacity +COPY --from=buildstage /app/audacity/build/bin/Release/locale /usr/local/share/locale # ports and volumes EXPOSE 3000 diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 47c6dd8..c82668c 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -1,30 +1,66 @@ -FROM ghcr.io/linuxserver/baseimage-rdesktop-web:arm64v8-alpine +FROM ghcr.io/linuxserver/baseimage-rdesktop-web:arm64v8-focal as buildstage + +ARG AUDACITY_VERSION + +RUN \ + echo "**** install build packages ****" && \ + apt-get update && \ + apt-get install -y \ + build-essential \ + cmake \ + curl \ + gcc \ + git \ + libasound2-dev \ + libavformat-dev \ + libgtk2.0-dev \ + python3-minimal \ + libjack-jackd2-dev && \ + echo "**** build audacity ****" && \ + if [ -z ${AUDACITY_VERSION+x} ]; then \ + AUDACITY_VERSION=$(curl -sX GET "https://api.github.com/repos/audacity/audacity/releases/latest" \ + | awk '/tag_name/{print $4;exit}' FS='[""]' | sed 's|^Audacity-||'); \ + fi && \ + mkdir -p /app/audacity/build && \ + curl -o \ + /tmp/audacity.tar.xz -L \ + "https://github.com/audacity/audacity/releases/download/Audacity-${AUDACITY_VERSION}/audacity-minsrc-${AUDACITY_VERSION}.tar.xz" && \ + tar xf \ + /tmp/audacity.tar.xz -C \ + /app/audacity --strip-components=1 && \ + cd /app/audacity/build && \ + cmake -DCMAKE_BUILD_TYPE=Release -Daudacity_use_wxwidgets=local -Daudacity_use_ffmpeg=loaded .. && \ + make -j6 && \ + make install + + +FROM ghcr.io/linuxserver/baseimage-rdesktop-web:arm64v8-focal # set version label ARG BUILD_DATE ARG VERSION -ARG AUDACITY_VERSION LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL maintainer="aptalca" RUN \ - echo "**** install packages ****" && \ - apk add --no-cache --virtual=build-dependencies \ - curl && \ - if [ -z ${AUDACITY_VERSION+x} ]; then \ - AUDACITY_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ - && awk '/^P:audacity$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://'); \ - fi && \ - apk add --no-cache \ - audacity==${AUDACITY_VERSION} && \ - echo "**** cleanup ****" && \ - apk del --purge \ - build-dependencies && \ - rm -rf \ - /tmp/* + echo "**** install packages ****" && \ + apt-get update && \ + apt-get install -y \ + libasound2 \ + libavformat58 \ + libgtk2.0-0 \ + libjack-jackd2-0 \ + python3-minimal && \ + echo "**** cleanup ****" && \ + rm -rf \ + /tmp/* # add local files COPY /root / +COPY --from=buildstage /usr/local/share/audacity /usr/local/share/audacity +COPY --from=buildstage /usr/local/lib/audacity /usr/local/lib/audacity +COPY --from=buildstage /usr/local/bin/audacity /usr/local/bin/audacity +COPY --from=buildstage /app/audacity/build/bin/Release/locale /usr/local/share/locale # ports and volumes EXPOSE 3000 diff --git a/Dockerfile.armhf b/Dockerfile.armhf index 21fa32b..fc89f13 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -1,30 +1,66 @@ -FROM ghcr.io/linuxserver/baseimage-rdesktop-web:arm32v7-alpine +FROM ghcr.io/linuxserver/baseimage-rdesktop-web:arm32v7-focal as buildstage + +ARG AUDACITY_VERSION + +RUN \ + echo "**** install build packages ****" && \ + apt-get update && \ + apt-get install -y \ + build-essential \ + cmake \ + curl \ + gcc \ + git \ + libasound2-dev \ + libavformat-dev \ + libgtk2.0-dev \ + python3-minimal \ + libjack-jackd2-dev && \ + echo "**** build audacity ****" && \ + if [ -z ${AUDACITY_VERSION+x} ]; then \ + AUDACITY_VERSION=$(curl -sX GET "https://api.github.com/repos/audacity/audacity/releases/latest" \ + | awk '/tag_name/{print $4;exit}' FS='[""]' | sed 's|^Audacity-||'); \ + fi && \ + mkdir -p /app/audacity/build && \ + curl -o \ + /tmp/audacity.tar.xz -L \ + "https://github.com/audacity/audacity/releases/download/Audacity-${AUDACITY_VERSION}/audacity-minsrc-${AUDACITY_VERSION}.tar.xz" && \ + tar xf \ + /tmp/audacity.tar.xz -C \ + /app/audacity --strip-components=1 && \ + cd /app/audacity/build && \ + cmake -DCMAKE_BUILD_TYPE=Release -Daudacity_use_wxwidgets=local -Daudacity_use_ffmpeg=loaded .. && \ + make -j6 && \ + make install + + +FROM ghcr.io/linuxserver/baseimage-rdesktop-web:arm32v7-focal # set version label ARG BUILD_DATE ARG VERSION -ARG AUDACITY_VERSION LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL maintainer="aptalca" RUN \ - echo "**** install packages ****" && \ - apk add --no-cache --virtual=build-dependencies \ - curl && \ - if [ -z ${AUDACITY_VERSION+x} ]; then \ - AUDACITY_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ - && awk '/^P:audacity$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://'); \ - fi && \ - apk add --no-cache \ - audacity==${AUDACITY_VERSION} && \ - echo "**** cleanup ****" && \ - apk del --purge \ - build-dependencies && \ - rm -rf \ - /tmp/* + echo "**** install packages ****" && \ + apt-get update && \ + apt-get install -y \ + libasound2 \ + libavformat58 \ + libgtk2.0-0 \ + libjack-jackd2-0 \ + python3-minimal && \ + echo "**** cleanup ****" && \ + rm -rf \ + /tmp/* # add local files COPY /root / +COPY --from=buildstage /usr/local/share/audacity /usr/local/share/audacity +COPY --from=buildstage /usr/local/lib/audacity /usr/local/lib/audacity +COPY --from=buildstage /usr/local/bin/audacity /usr/local/bin/audacity +COPY --from=buildstage /app/audacity/build/bin/Release/locale /usr/local/share/locale # ports and volumes EXPOSE 3000 diff --git a/Jenkinsfile b/Jenkinsfile index 9a1790a..bb738a8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -23,10 +23,7 @@ pipeline { DOCKERHUB_IMAGE = 'linuxserver/audacity' DEV_DOCKERHUB_IMAGE = 'lsiodev/audacity' PR_DOCKERHUB_IMAGE = 'lspipepr/audacity' - DIST_IMAGE = 'alpine' - DIST_TAG = '3.13' - DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.13/community/' - DIST_REPO_PACKAGES = 'audacity' + DIST_IMAGE = 'ubuntu' MULTIARCH = 'true' CI = 'true' CI_WEB = 'true' @@ -101,15 +98,14 @@ pipeline { /* ######################## External Release Tagging ######################## */ - // If this is an alpine repo change for external version determine an md5 from the version string - stage("Set tag Alpine Repo"){ + // If this is a custom command to determine version use that command + stage("Set tag custom bash"){ steps{ script{ env.EXT_RELEASE = sh( - script: '''curl -sL "${DIST_REPO}x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ - && awk '/^P:'"${DIST_REPO_PACKAGES}"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://' ''', + script: ''' curl -sX GET https://api.github.com/repos/audacity/audacity/releases/latest | jq -r '.tag_name' | sed 's|^Audacity-||' ''', returnStdout: true).trim() - env.RELEASE_LINK = 'alpine_repo' + env.RELEASE_LINK = 'custom_command' } } } @@ -740,11 +736,11 @@ pipeline { "tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' ''' echo "Pushing New release for Tag" sh '''#! /bin/bash - echo "Updating external repo packages to ${EXT_RELEASE_CLEAN}" > releasebody.json + echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json echo '{"tag_name":"'${META_TAG}'",\ "target_commitish": "main",\ "name": "'${META_TAG}'",\ - "body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**Repo Changes:**\\n\\n' > start + "body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**Remote Changes:**\\n\\n' > start printf '","draft": false,"prerelease": false}' >> 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 0e34d5f..c32f9a4 100644 --- a/jenkins-vars.yml +++ b/jenkins-vars.yml @@ -2,7 +2,8 @@ # jenkins variables project_name: docker-audacity -external_type: alpine_repo +external_type: na +custom_version_command: "curl -sX GET https://api.github.com/repos/audacity/audacity/releases/latest | jq -r '.tag_name' | sed 's|^Audacity-||'" release_type: stable release_tag: latest ls_branch: main @@ -14,10 +15,7 @@ repo_vars: - DOCKERHUB_IMAGE = 'linuxserver/audacity' - DEV_DOCKERHUB_IMAGE = 'lsiodev/audacity' - PR_DOCKERHUB_IMAGE = 'lspipepr/audacity' - - DIST_IMAGE = 'alpine' - - DIST_TAG = '3.13' - - DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.13/community/' - - DIST_REPO_PACKAGES = 'audacity' + - DIST_IMAGE = 'ubuntu' - MULTIARCH = 'true' - CI = 'true' - CI_WEB = 'true' diff --git a/root/defaults/autostart b/root/defaults/autostart index 480d970..e598a38 100644 --- a/root/defaults/autostart +++ b/root/defaults/autostart @@ -1 +1 @@ -audacity +LD_LIBRARY_PATH="/usr/local/lib/audacity" audacity