name: build-mailadler-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 perl-List-MoreUtils perl-XML-Parser 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-osslsigncode 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-gcc-fortran mingw-w64-x86_64-gettext-tools mingw-w64-x86_64-harfbuzz mingw-w64-x86_64-lame mingw-w64-x86_64-libarchive mingw-w64-x86_64-libepoxy mingw-w64-x86_64-libexif mingw-w64-x86_64-libimagequant 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-openblas mingw-w64-x86_64-openssl mingw-w64-x86_64-opus mingw-w64-x86_64-potrace mingw-w64-x86_64-python-pip mingw-w64-x86_64-rubberband mingw-w64-x86_64-sox mingw-w64-x86_64-svt-av1 mingw-w64-x86_64-vid.stab mingw-w64-x86_64-x264 mingw-w64-x86_64-x265 mingw-w64-x86_64-zimg - uses: actions/checkout@v4 - 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=$VERSION pushd "$HOME" mkdir Qt cd Qt echo Downloading Qt curl -kLO --no-progress-meter https://s3.amazonaws.com/misc.meltymedia/mailadler-build/qt-6.10.1-x64-mingw.txz echo Extracting Qt tar -xJf qt-6.10.1-x64-mingw.txz rm qt-6.10.1-x64-mingw.txz cd .. echo Downloading a few prebuilt dependencies curl -kLO --no-progress-meter https://s3.amazonaws.com/misc.meltymedia/mailadler-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-mailadler.conf echo mailadler_VERSION=\"$VERSION\" >> build-mailadler.conf bash scripts/build-mailadler-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/mailadler-build/CodeSignCertificates2023.p12 ./ --no-progress aws s3 cp s3://misc.meltymedia/mailadler-build/CodeSignCertificates.pass ./ --no-progress for EXE in mailadler/*.exe; do echo Signing ${EXE} osslsigncode sign -pkcs12 CodeSignCertificates2023.p12 -readpass CodeSignCertificates.pass -n "mailadler" -i "https://www.meltytech.com" -t "http://timestamp.digicert.com" -in ${EXE} -out ${EXE}-signed mv ${EXE}-signed ${EXE} done echo Packaging the portable zip zip -gr mailadler-win64-$FILENAME_VERSION.zip mailadler echo Packaging the installer PATH="$HOME/bin:$PATH" pushd $HOME/bin curl -kLO --no-progress-meter https://s3.amazonaws.com/misc.meltymedia/mailadler-build/iscc632.txz tar -xJf iscc632.txz popd echo Extracting installer dependencies curl -kLO --no-progress-meter https://s3.amazonaws.com/misc.meltymedia/mailadler-build/innosetup-opera-1.txz tar -xJf innosetup-opera-1.txz rm innosetup-opera-1.txz echo Running Inno Setup Compiler ISCC -Q -O. mailadler.iss echo Signing the installer osslsigncode sign -pkcs12 CodeSignCertificates2023.p12 -readpass CodeSignCertificates.pass -n "mailadler Installer" -i "https://www.meltytech.com" -t "http://timestamp.digicert.com" -in mailadler-setup.exe -out mailadler-setup-signed.exe mv mailadler-setup-signed.exe mailadler-win64-$FILENAME_VERSION.exe rm mailadler-setup.exe popd echo Done - name: Upload artifact uses: actions/upload-artifact@v4 with: name: windows-portable path: ./build/mailadler-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/mailadler/ --no-progress done