main #1137
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
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
workflow_dispatch: | |
schedule: | |
- cron: '0 2 * * *' | |
name: main | |
jobs: | |
linux-x64: | |
name: 'Linux (x64)' | |
container: | |
image: ubuntu:20.04 | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install build tools | |
run: ./install.build-tools.sh | |
working-directory: build/linux-x64 | |
- name: Update ImageMagick.commit to latest commit | |
run: ./update.imagemagick.sh | |
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' | |
working-directory: src/ImageMagick | |
- name: Clone ImageMagick libraries | |
run: ./checkout.sh linux ../../artifacts | |
working-directory: src/ImageMagick | |
- name: Build dependencies | |
run: ../../../../build/shared/build.dependencies.sh ../../../../build/dependencies linux x64 | |
working-directory: src/ImageMagick/imagemagick-windows/Dependencies | |
- name: Build ImageMagick | |
run: ../../../../build/shared/build.imagemagick.sh linux x64 | |
working-directory: src/ImageMagick/imagemagick-windows/ImageMagick | |
- name: Build Native | |
run: ../../build/shared/build.native.sh linux x64 | |
working-directory: src/Magick.Native | |
- name: Copy Native | |
run: ../../build/shared/copy.native.sh ../../artifacts linux x64 | |
working-directory: src/Magick.Native | |
- name: Build ImageMagick | |
run: ../../../../build/shared/build.imagemagick.sh linux x64 OpenMP | |
working-directory: src/ImageMagick/imagemagick-windows/ImageMagick | |
- name: Build Native | |
run: ../../build/shared/build.native.sh linux x64 OpenMP | |
working-directory: src/Magick.Native | |
- name: Copy Native | |
run: ../../build/shared/copy.native.sh ../../artifacts linux x64 OpenMP | |
working-directory: src/Magick.Native | |
- name: Upload library | |
uses: actions/upload-artifact@v4 | |
with: | |
name: linux-x64 | |
path: artifacts | |
linux-musl-x64: | |
name: 'Linux musl (x64)' | |
container: | |
image: alpine:3.12 | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install build tools | |
run: ./install.build-tools.sh | |
working-directory: build/linux-musl-x64 | |
- name: Update ImageMagick.commit to latest commit | |
run: ./update.imagemagick.sh | |
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' | |
working-directory: src/ImageMagick | |
- name: Clone ImageMagick libraries | |
run: ./checkout.sh linux ../../artifacts | |
working-directory: src/ImageMagick | |
- name: Build dependencies | |
run: ../../../../build/shared/build.dependencies.sh ../../../../build/dependencies linux-musl x64 | |
working-directory: src/ImageMagick/imagemagick-windows/Dependencies | |
- name: Build ImageMagick | |
run: ../../../../build/shared/build.imagemagick.sh linux-musl x64 | |
working-directory: src/ImageMagick/imagemagick-windows/ImageMagick | |
- name: Build Native | |
run: ../../build/shared/build.native.sh linux-musl x64 | |
working-directory: src/Magick.Native | |
- name: Copy Native | |
run: ../../build/shared/copy.native.sh ../../artifacts linux-musl x64 | |
working-directory: src/Magick.Native | |
- name: Build ImageMagick | |
run: ../../../../build/shared/build.imagemagick.sh linux-musl x64 OpenMP | |
working-directory: src/ImageMagick/imagemagick-windows/ImageMagick | |
- name: Build Native | |
run: ../../build/shared/build.native.sh linux-musl x64 OpenMP | |
working-directory: src/Magick.Native | |
- name: Copy Native | |
run: ../../build/shared/copy.native.sh ../../artifacts linux-musl x64 OpenMP | |
working-directory: src/Magick.Native | |
- name: Upload library | |
uses: actions/upload-artifact@v4 | |
with: | |
name: linux-musl-x64 | |
path: artifacts | |
linux-arm64: | |
name: 'Linux (arm64)' | |
container: | |
image: ubuntu:20.04 | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install build tools | |
run: ./install.build-tools.sh | |
working-directory: build/linux-arm64 | |
- name: Update ImageMagick.commit to latest commit | |
run: ./update.imagemagick.sh | |
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' | |
working-directory: src/ImageMagick | |
- name: Clone ImageMagick libraries | |
run: ./checkout.sh linux ../../artifacts | |
working-directory: src/ImageMagick | |
- name: Build dependencies | |
run: ../../../../build/shared/build.dependencies.sh ../../../../build/dependencies linux arm64 | |
working-directory: src/ImageMagick/imagemagick-windows/Dependencies | |
- name: Build ImageMagick | |
run: ../../../../build/shared/build.imagemagick.sh linux arm64 | |
working-directory: src/ImageMagick/imagemagick-windows/ImageMagick | |
- name: Build Native | |
run: ../../build/shared/build.native.sh linux arm64 | |
working-directory: src/Magick.Native | |
- name: Copy Native | |
run: ../../build/shared/copy.native.sh ../../artifacts linux arm64 | |
working-directory: src/Magick.Native | |
- name: Build ImageMagick | |
run: ../../../../build/shared/build.imagemagick.sh linux arm64 OpenMP | |
working-directory: src/ImageMagick/imagemagick-windows/ImageMagick | |
- name: Build Native | |
run: ../../build/shared/build.native.sh linux arm64 OpenMP | |
working-directory: src/Magick.Native | |
- name: Copy Native | |
run: ../../build/shared/copy.native.sh ../../artifacts linux arm64 OpenMP | |
working-directory: src/Magick.Native | |
- name: Upload library | |
uses: actions/upload-artifact@v4 | |
with: | |
name: linux-arm64 | |
path: artifacts | |
macos-x64: | |
name: 'MacOS (x64)' | |
runs-on: macos-13 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install build tools | |
run: ./install.build-tools.sh | |
working-directory: build/macos-x64 | |
- name: Update ImageMagick.commit to latest commit | |
run: ./update.imagemagick.sh | |
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' | |
working-directory: src/ImageMagick | |
- name: Clone ImageMagick libraries | |
run: ./checkout.sh macos ../../artifacts | |
working-directory: src/ImageMagick | |
- name: Build dependencies | |
run: ../../../../build/shared/build.dependencies.sh ../../../../build/dependencies macos x64 | |
working-directory: src/ImageMagick/imagemagick-windows/Dependencies | |
- name: Build ImageMagick | |
run: ../../../../build/shared/build.imagemagick.sh macos x64 | |
working-directory: src/ImageMagick/imagemagick-windows/ImageMagick | |
- name: Build Native | |
run: ../../build/shared/build.native.sh macos x64 | |
working-directory: src/Magick.Native | |
- name: Copy Native | |
run: ../../build/shared/copy.native.sh ../../artifacts macos x64 | |
working-directory: src/Magick.Native | |
- name: Upload library | |
uses: actions/upload-artifact@v4 | |
with: | |
name: macos-x64 | |
path: artifacts | |
macos-arm64: | |
name: 'MacOS (arm64)' | |
runs-on: macos-13 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install build tools | |
run: ./install.build-tools.sh | |
working-directory: build/macos-arm64 | |
- name: Update ImageMagick.commit to latest commit | |
run: ./update.imagemagick.sh | |
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' | |
working-directory: src/ImageMagick | |
- name: Clone ImageMagick libraries | |
run: ./checkout.sh macos ../../artifacts | |
working-directory: src/ImageMagick | |
- name: Build dependencies | |
run: ../../../../build/shared/build.dependencies.sh ../../../../build/dependencies macos arm64 | |
working-directory: src/ImageMagick/imagemagick-windows/Dependencies | |
- name: Build ImageMagick | |
run: ../../../../build/shared/build.imagemagick.sh macos arm64 | |
working-directory: src/ImageMagick/imagemagick-windows/ImageMagick | |
- name: Build Native | |
run: ../../build/shared/build.native.sh macos arm64 | |
working-directory: src/Magick.Native | |
- name: Copy Native | |
run: ../../build/shared/copy.native.sh ../../artifacts macos arm64 | |
working-directory: src/Magick.Native | |
- name: Upload library | |
uses: actions/upload-artifact@v4 | |
with: | |
name: macos-arm64 | |
path: artifacts | |
windows: | |
name: 'Windows (${{ matrix.platformName }})' | |
runs-on: windows-2022 | |
permissions: | |
id-token: write | |
contents: read | |
strategy: | |
matrix: | |
platformName: [x86, x64, arm64] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install build tools | |
run: ./install.build-tools.ps1 | |
working-directory: build/windows | |
- name: Update ImageMagick.commit to latest commit | |
run: ./update.imagemagick.cmd | |
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' | |
working-directory: src/ImageMagick | |
- name: Clone ImageMagick libraries | |
run: ./checkout.cmd ../../artifacts/windows | |
working-directory: src/ImageMagick | |
- name: Build configure | |
run: ./build.configure.cmd | |
working-directory: build/windows | |
- name: Build Q8 | |
uses: ./.github/actions/build-windows | |
with: | |
platformName: ${{ matrix.platformName }} | |
quantumName: Q8 | |
- name: Build Q16 | |
uses: ./.github/actions/build-windows | |
with: | |
platformName: ${{ matrix.platformName }} | |
quantumName: Q16 | |
- name: Build Q16-HDRI | |
uses: ./.github/actions/build-windows | |
with: | |
platformName: ${{ matrix.platformName }} | |
quantumName: Q16-HDRI | |
- name: Build Q8-OpenMP | |
if: matrix.platformName != 'x86' | |
uses: ./.github/actions/build-windows | |
with: | |
platformName: ${{ matrix.platformName }} | |
quantumName: Q8-OpenMP | |
- name: Build Q16-OpenMP | |
if: matrix.platformName != 'x86' | |
uses: ./.github/actions/build-windows | |
with: | |
platformName: ${{ matrix.platformName }} | |
quantumName: Q16-OpenMP | |
- name: Build Q16-HDRI-OpenMP | |
if: matrix.platformName != 'x86' | |
uses: ./.github/actions/build-windows | |
with: | |
platformName: ${{ matrix.platformName }} | |
quantumName: Q16-HDRI-OpenMP | |
- name: Upload library | |
uses: actions/upload-artifact@v4 | |
with: | |
name: windows-${{ matrix.platformName }} | |
path: artifacts/windows | |
- name: Upload resources | |
uses: actions/upload-artifact@v4 | |
with: | |
name: windows-${{ matrix.platformName }}-resources | |
path: artifacts/resources | |
wasm-x86: | |
name: 'WASM (x86)' | |
container: | |
image: emscripten/emsdk:3.1.42 | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install build tools | |
run: ./install.build-tools.sh | |
working-directory: build/wasm-x86 | |
- name: Update ImageMagick.commit to latest commit | |
run: ./update.imagemagick.sh | |
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' | |
working-directory: src/ImageMagick | |
- name: Clone ImageMagick libraries | |
run: ./checkout.sh wasm ../../artifacts | |
working-directory: src/ImageMagick | |
- name: Build dependencies | |
run: ../../../../build/shared/build.dependencies.sh ../../../../build/dependencies wasm x86 | |
working-directory: src/ImageMagick/imagemagick-windows/Dependencies | |
- name: Build ImageMagick | |
run: ../../../../build/shared/build.imagemagick.sh wasm x86 | |
working-directory: src/ImageMagick/imagemagick-windows/ImageMagick | |
- name: Build Native | |
run: ../../build/shared/build.native.sh wasm x86 | |
working-directory: src/Magick.Native | |
- name: Create wasm files | |
run: npm install && npm run publish | |
working-directory: src/wasm-file-creator | |
- name: Copy Native | |
run: ../../build/wasm-x86/copy.native.sh ../../artifacts | |
working-directory: src/Magick.Native | |
- name: Upload library | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wasm-x86 | |
path: artifacts | |
verify-linux-x64: | |
name: 'Verify Linux (x64)' | |
needs: | |
- linux-x64 | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
image: | |
- 'ubuntu:20.04' | |
- 'ubuntu:22.04' | |
- 'ubuntu:24.04' | |
- 'tgagor/centos:stream9' | |
- 'mcr.microsoft.com/dotnet/aspnet:latest' | |
- 'mcr.microsoft.com/dotnet/runtime:8.0' | |
- 'amazon/aws-lambda-dotnet:8' | |
- 'public.ecr.aws/lambda/dotnet:8-x86_64' | |
container: | |
image: ${{ matrix.image }} | |
steps: | |
- name: Install dependencies | |
run: | | |
if [ -f "/bin/yum" ]; then | |
yum install -y gzip tar | |
fi | |
if [ -f "/bin/dnf" ]; then | |
dnf install -y gzip tar | |
fi | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- name: Download linux library | |
uses: actions/download-artifact@v4 | |
with: | |
name: linux-x64 | |
- name: Verify Native | |
run: | | |
build/shared/verify.native.sh . linux x64 | |
build/shared/verify.native.sh . linux x64 OpenMP | |
verify-linux-musl-x64: | |
name: 'Verify Linux musl (x64)' | |
needs: | |
- linux-musl-x64 | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
image: | |
- 'alpine:latest' | |
- 'mcr.microsoft.com/dotnet/aspnet:8.0-alpine' | |
- 'mcr.microsoft.com/dotnet/runtime:8.0-alpine' | |
container: | |
image: ${{ matrix.image }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download linux-musl library | |
uses: actions/download-artifact@v4 | |
with: | |
name: linux-musl-x64 | |
- name: Verify Native | |
run: | | |
apk update | |
apk add bash | |
build/shared/verify.native.sh . linux-musl x64 | |
build/shared/verify.native.sh . linux-musl x64 OpenMP | |
verify-linux-arm64: | |
name: 'Verify Linux (arm64)' | |
needs: | |
- linux-arm64 | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
image: | |
- 'mcr.microsoft.com/dotnet/sdk:8.0-jammy-arm64v8' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download linux-arm64 library | |
uses: actions/download-artifact@v4 | |
with: | |
name: linux-arm64 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@master | |
with: | |
platforms: arm64 | |
- name: Verify Native | |
run: | | |
export path=$(pwd) | |
docker run -v $path:/Magick.Native ${{ matrix.image }} Magick.Native/build/shared/verify.native.sh /Magick.Native linux arm64 | |
docker run -v $path:/Magick.Native ${{ matrix.image }} Magick.Native/build/shared/verify.native.sh /Magick.Native linux arm64 OpenMP | |
verify-macos: | |
name: 'Verify MacOS' | |
needs: | |
- macos-x64 | |
- macos-arm64 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-13, macos-14] | |
arch: [x64, arm64] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download macos library | |
uses: actions/download-artifact@v4 | |
with: | |
name: macos-${{ matrix.arch }} | |
- name: Verify MacOS | |
run: build/shared/verify.native.macos.sh . macos ${{ matrix.arch }} | |
metadata: | |
name: 'Metadata' | |
needs: | |
- verify-linux-x64 | |
- verify-linux-musl-x64 | |
- verify-linux-arm64 | |
- verify-macos | |
- wasm-x86 | |
- windows | |
runs-on: windows-latest | |
outputs: | |
version: ${{ steps.set-version.outputs.version }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set version | |
id: set-version | |
run: | | |
$version = Get-Date -Format "yyyy.Mdd.HHmm" | |
echo "version=$version" >> $env:GITHUB_OUTPUT | |
shell: pwsh | |
- name: Install build tools | |
run: ./install.build-tools.ps1 | |
working-directory: build/windows | |
- name: Update ImageMagick.commit to latest commit | |
run: ./update.imagemagick.cmd | |
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' | |
working-directory: src/ImageMagick | |
- name: Clone ImageMagick libraries | |
run: ./checkout.cmd | |
working-directory: src/ImageMagick | |
- name: Create metadata | |
run: ./create.metadata.ps1 -destination ../../artifacts | |
working-directory: build/metadata | |
- name: Upload metadata | |
uses: actions/upload-artifact@v4 | |
with: | |
name: metadata | |
path: artifacts | |
publish-dotnet: | |
name: 'Publish .NET library' | |
if: github.event_name != 'schedule' | |
needs: | |
- metadata | |
runs-on: windows-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install build tools | |
run: ./install.build-tools.ps1 | |
working-directory: build/windows | |
- name: Download linux-x64 library | |
uses: actions/download-artifact@v4 | |
with: | |
name: linux-x64 | |
path: publish\dotnet\files\linux | |
- name: Download linux-arm64 library | |
uses: actions/download-artifact@v4 | |
with: | |
name: linux-arm64 | |
path: publish\dotnet\files\linux | |
- name: Download linux-musl-x64 library | |
uses: actions/download-artifact@v4 | |
with: | |
name: linux-musl-x64 | |
path: publish\dotnet\files\linux-musl | |
- name: Download macos-x64 library | |
uses: actions/download-artifact@v4 | |
with: | |
name: macos-x64 | |
path: publish\dotnet\files\macos | |
- name: Download macos-arm64 library | |
uses: actions/download-artifact@v4 | |
with: | |
name: macos-arm64 | |
path: publish\dotnet\files\macos | |
- name: Download windows-x64 libraries | |
uses: actions/download-artifact@v4 | |
with: | |
name: windows-x64 | |
path: publish\dotnet\files\windows | |
- name: Download windows-x64 resources | |
uses: actions/download-artifact@v4 | |
with: | |
name: windows-x64-resources | |
path: publish\dotnet\files\resources | |
- name: Download windows-arm64 libraries | |
uses: actions/download-artifact@v4 | |
with: | |
name: windows-arm64 | |
path: publish\dotnet\files\windows | |
- name: Download windows-arm64 resources | |
uses: actions/download-artifact@v4 | |
with: | |
name: windows-arm64-resources | |
path: publish\dotnet\files\resources | |
- name: Download windows-x86 libraries | |
uses: actions/download-artifact@v4 | |
with: | |
name: windows-x86 | |
path: publish\dotnet\files\windows | |
- name: Download windows-x86 resources | |
uses: actions/download-artifact@v4 | |
with: | |
name: windows-x86-resources | |
path: publish\dotnet\files\resources | |
- name: Download metadata | |
uses: actions/download-artifact@v4 | |
with: | |
name: metadata | |
path: publish\dotnet\files\metadata | |
- name: Create NuGet package | |
run: ./publish.ps1 -version ${{ needs.metadata.outputs.version }} -destination ../../artifacts | |
working-directory: publish/dotnet | |
- name: Upload NuGet package | |
if: github.event_name != 'pull_request' | |
working-directory: publish/dotnet | |
run: | | |
dotnet nuget add source --name github "https://nuget.pkg.github.com/dlemstra/index.json" | |
$file = Get-ChildItem -Path . -Recurse -Filter *.nupkg | Select -First 1 | |
dotnet nuget push $file.FullName --api-key ${{ secrets.PUBLISH_PACKAGE_PAT }} --source "github" | |
publish-wasm-x86: | |
name: 'Publish WASM library' | |
if: github.event_name != 'schedule' | |
needs: | |
- metadata | |
runs-on: windows-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install build tools | |
run: ./install.build-tools.ps1 | |
working-directory: build/windows | |
- name: Download wasm library | |
uses: actions/download-artifact@v4 | |
with: | |
name: wasm-x86 | |
path: publish\wasm\files | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
registry-url: https://npm.pkg.github.com | |
scope: '@dlemstra' | |
- name: Create NPM package | |
run: ./publish.ps1 -version ${{ needs.metadata.outputs.version }} | |
working-directory: publish/wasm | |
- name: Publish NPM package | |
if: github.event_name != 'pull_request' | |
run: npm publish | |
working-directory: publish/wasm/files | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.PUBLISH_PACKAGE_PAT }} |