build-shotcut-windows #1134
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: build-shotcut-windows | |
on: | |
workflow_dispatch: | |
schedule: | |
# nightly | |
- cron: '0 8 * * *' | |
jobs: | |
build: | |
if: ${{ github.repository_owner == 'mltframework' }} | |
runs-on: windows-latest | |
steps: | |
- name: Setup MSYS2 | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: MINGW64 | |
update: true | |
install: >- | |
autotools base-devel bzip2 coreutils git gzip tar xz zip | |
mingw-w64-x86_64-toolchain | |
mingw-w64-x86_64-cmake | |
mingw-w64-x86_64-meson | |
mingw-w64-x86_64-nasm | |
mingw-w64-x86_64-ninja | |
mingw-w64-x86_64-nsis | |
mingw-w64-x86_64-osslsigncode | |
mingw-w64-x86_64-python-pip | |
mingw-w64-x86_64-yasm | |
mingw-w64-x86_64-cairo | |
mingw-w64-x86_64-eigen3 | |
mingw-w64-x86_64-dlfcn | |
mingw-w64-x86_64-fftw | |
mingw-w64-x86_64-harfbuzz | |
mingw-w64-x86_64-lame | |
mingw-w64-x86_64-libepoxy | |
mingw-w64-x86_64-libexif | |
mingw-w64-x86_64-libsamplerate | |
mingw-w64-x86_64-libtheora | |
mingw-w64-x86_64-libvorbis | |
mingw-w64-x86_64-libvpx | |
mingw-w64-x86_64-libwebp | |
mingw-w64-x86_64-libxml2 | |
mingw-w64-x86_64-onevpl | |
mingw-w64-x86_64-openssl | |
mingw-w64-x86_64-opus | |
mingw-w64-x86_64-rubberband | |
mingw-w64-x86_64-sox | |
mingw-w64-x86_64-vid.stab | |
mingw-w64-x86_64-x264 | |
mingw-w64-x86_64-x265 | |
mingw-w64-x86_64-libarchive | |
mingw-w64-x86_64-potrace | |
mingw-w64-x86_64-libimagequant | |
mingw-w64-x86_64-python3.11 | |
- name: Downgrade GCC to v12 | |
shell: msys2 {0} | |
run: | | |
curl -kLO --no-progress-meter https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-12.2.0-9-any.pkg.tar.zst | |
curl -kLO --no-progress-meter https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-ada-12.2.0-9-any.pkg.tar.zst | |
curl -kLO --no-progress-meter https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-fortran-12.2.0-9-any.pkg.tar.zst | |
curl -kLO --no-progress-meter https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-libgfortran-12.2.0-9-any.pkg.tar.zst | |
curl -kLO --no-progress-meter https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-libs-12.2.0-9-any.pkg.tar.zst | |
curl -kLO --no-progress-meter https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-objc-12.2.0-9-any.pkg.tar.zst | |
curl -kLO --no-progress-meter https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-libgccjit-12.2.0-9-any.pkg.tar.zst | |
pacman -U --noconfirm *.pkg.tar.zst | |
rm *.pkg.tar.zst | |
- uses: actions/checkout@v3 | |
- name: Build | |
shell: msys2 {0} | |
run: | | |
pacman --noconfirm -Rdd mingw-w64-x86_64-aom | |
echo Preparing version | |
echo $(date +"%y.%m.%d") > VERSION | |
VERSION=$(cat VERSION) | |
echo VERSION=$VERSION | |
FILENAME_VERSION=$(echo $VERSION | tr -d .) | |
pushd "$HOME" | |
mkdir Qt | |
cd Qt | |
echo Downloading Qt | |
curl -kLO --no-progress-meter https://s3.amazonaws.com/misc.meltymedia/shotcut-build/qt-6.4.3-x64-mingw.txz | |
echo Extracting Qt | |
tar -xJf qt-6.4.3-x64-mingw.txz | |
rm qt-6.4.3-x64-mingw.txz | |
cd .. | |
echo Downloading prebuilt SWH LADSPA plugins | |
curl -kLO --no-progress-meter https://s3.amazonaws.com/misc.meltymedia/shotcut-build/swh-plugins-win64-0.4.15.tar.xz | |
echo Downloading a few other prebuilt dependencies | |
curl -kLO --no-progress-meter https://s3.amazonaws.com/misc.meltymedia/shotcut-build/mlt-prebuilt-mingw64-v6.txz | |
echo Extracting prebuilt dependencies | |
tar -xJf mlt-prebuilt-mingw64-v6.txz | |
rm mlt-prebuilt-mingw64-v6.txz | |
CHECKOUT_DIR=$(popd) | |
popd | |
echo Running the build script | |
echo INSTALL_DIR=\"$CHECKOUT_DIR/build\" | |
echo INSTALL_DIR=\"$CHECKOUT_DIR/build\" > build-shotcut.conf | |
echo SHOTCUT_VERSION=\"$VERSION\" >> build-shotcut.conf | |
bash scripts/build-shotcut-msys2.sh | |
pushd build | |
echo Installing awscli | |
pip install awscli | |
export AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY }} | |
export AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_KEY }} | |
export AWS_DEFAULT_REGION=us-east-1 | |
echo Downloading code-signing certificates | |
aws s3 cp s3://misc.meltymedia/shotcut-build/CodeSignCertificates2023.p12 ./ --no-progress | |
aws s3 cp s3://misc.meltymedia/shotcut-build/CodeSignCertificates.pass ./ --no-progress | |
echo Signing shotcut.exe | |
osslsigncode sign -pkcs12 CodeSignCertificates2023.p12 -readpass CodeSignCertificates.pass -n "Shotcut" -i "https://www.meltytech.com" -t "http://timestamp.digicert.com" -in Shotcut/shotcut.exe -out Shotcut/shotcut-signed.exe | |
mv Shotcut/shotcut-signed.exe Shotcut/shotcut.exe | |
echo Signing glaxnimate.exe | |
osslsigncode sign -pkcs12 CodeSignCertificates2023.p12 -readpass CodeSignCertificates.pass -n "Shotcut" -i "https://www.meltytech.com" -t "http://timestamp.digicert.com" -in Shotcut/glaxnimate.exe -out Shotcut/glaxnimate-signed.exe | |
mv Shotcut/glaxnimate-signed.exe Shotcut/glaxnimate.exe | |
echo Packaging the portable zip | |
zip -gr shotcut-win64-$FILENAME_VERSION.zip Shotcut | |
echo Packaging the installer | |
makensis shotcut.nsi | |
echo Signing the installer | |
osslsigncode sign -pkcs12 CodeSignCertificates2023.p12 -readpass CodeSignCertificates.pass -n "Shotcut Installer" -i "https://www.meltytech.com" -t "http://timestamp.digicert.com" -in shotcut-setup.exe -out shotcut-setup-signed.exe | |
mv shotcut-setup-signed.exe shotcut-win64-$FILENAME_VERSION.exe | |
rm shotcut-setup.exe | |
popd | |
echo Done | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: windows-portable | |
path: ./build/shotcut-win64-*.zip | |
- name: Upload packages to S3 | |
shell: msys2 {0} | |
run: | | |
export AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY }} | |
export AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_KEY }} | |
export AWS_DEFAULT_REGION=us-east-1 | |
for file in build/*.{exe,zip}; do | |
echo Uploading "$file" to S3 | |
aws s3 cp "$file" s3://builds.us.meltytech/shotcut/ --no-progress | |
done |