From 176b1f525c5cdcbe23222dbe922d4eaae60dd33b Mon Sep 17 00:00:00 2001 From: Georg Dahmen Date: Sat, 31 Jan 2026 16:25:38 +0100 Subject: [PATCH] Create build-linux.yml --- .github/workflows/build-linux.yml | 100 ++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 .github/workflows/build-linux.yml diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml new file mode 100644 index 0000000..971b280 --- /dev/null +++ b/.github/workflows/build-linux.yml @@ -0,0 +1,100 @@ +name: build-shotcut-linux + +on: + workflow_dispatch: + schedule: + # nightly + - cron: '0 8 * * *' + +env: + IMAGE_NAME: mltframework/shotcut-build:qt6.8.3-ubuntu22.04 + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Build + run: | + echo Preparing version + echo $(date +"%y.%-m.%-d") > VERSION + VERSION=$(cat VERSION) + echo VERSION=$VERSION + FILENAME_VERSION=$VERSION + cd scripts + echo Making build script config file + echo CLEANUP=0 > build-shotcut.conf + echo SHOTCUT_VERSION=\"$VERSION\" >> build-shotcut.conf + docker run -v $PWD:/root/shotcut $IMAGE_NAME + echo Renaming build artifacts + mv shotcut.txz shotcut-linux-x86_64-$FILENAME_VERSION.txz + mv src.txz shotcut-src-$FILENAME_VERSION.txz + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: linux-portable + path: | + scripts/shotcut-linux-x86_64-*.txz + + - name: Upload portable and source archives to S3 + if: ${{ github.repository_owner == 'mltframework' }} + uses: mltframework/s3cmd-action@v0 + with: + args: >- + --access_key=${{ secrets.AWS_ACCESS_KEY }} + --secret_key=${{ secrets.AWS_SECRET_KEY }} + --acl-public + --stop-on-error + put scripts/*.txz s3://builds.us.meltytech/shotcut/ + + - name: Package AppImage + run: | + sudo apt update + sudo apt install desktop-file-utils libfuse2 imagemagick + mkdir packaging/linux/Shotcut + cp VERSION packaging/linux/Shotcut/ + cd packaging/linux + export PKG2AICOMMIT=1eceb306077e51b991e987690b364e11971b44b3 + wget https://raw.githubusercontent.com/probonopd/AppImages/${PKG2AICOMMIT}/pkg2appimage + bash -ex pkg2appimage appimage/appimage.yml + FILENAME_VERSION=$(cat Shotcut/VERSION) + mv out/*.AppImage out/shotcut-linux-x86_64-$FILENAME_VERSION.AppImage + + - name: Upload AppImage to S3 + if: ${{ github.repository_owner == 'mltframework' }} + uses: mltframework/s3cmd-action@v0 + with: + args: >- + --access_key=${{ secrets.AWS_ACCESS_KEY }} + --secret_key=${{ secrets.AWS_SECRET_KEY }} + --acl-public + --stop-on-error + put packaging/linux/out/*.AppImage s3://builds.us.meltytech/shotcut/ + + - name: Prepare snap + run: | + VERSION=$(cat VERSION) + mv scripts/shotcut-linux-x86_64-*.txz packaging/linux + cd packaging/linux + mkdir -p snap/gui + cp ../../icons/shotcut-logo-64.png snap/gui + sed 's|Icon=.*|Icon=${SNAP}/meta/gui/shotcut-logo-64.png|' org.shotcut.Shotcut.desktop > snap/gui/shotcut.desktop + FILENAME=$(ls *.txz) + sed "s/\$VERSION/${VERSION}/ ; s/\$FILENAME/${FILENAME}/" snapcraft.yaml.in > snap/snapcraft.yaml + - name: Package snap + if: ${{ github.repository_owner == 'mltframework' }} + uses: snapcore/action-build@v1 + id: snap + with: + path: packaging/linux + - name: Publish snap + if: ${{ github.repository_owner == 'mltframework' }} + uses: snapcore/action-publish@v1 + env: + SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_TOKEN }} + with: + snap: ${{ steps.snap.outputs.snap }} + release: edge