Skip to content

main

main #761

Workflow file for this run

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 dependencies
run: ./install.dependencies.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 libraries
run: ../../../build/shared/build.Libraries.sh ../../../build/libraries linux x64
working-directory: src/ImageMagick/libraries
- name: Build ImageMagick
run: ../../../build/shared/build.ImageMagick.sh linux x64
working-directory: src/ImageMagick/libraries
- 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/libraries
- 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@v3
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 dependencies
run: ./install.dependencies.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 libraries
run: ../../../build/shared/build.Libraries.sh ../../../build/libraries linux-musl x64
working-directory: src/ImageMagick/libraries
- name: Build ImageMagick
run: ../../../build/shared/build.ImageMagick.sh linux-musl x64
working-directory: src/ImageMagick/libraries
- 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/libraries
- 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@v3
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 dependencies
run: ./install.dependencies.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 libraries
run: ../../../build/shared/build.Libraries.sh ../../../build/libraries linux arm64
working-directory: src/ImageMagick/libraries
- name: Build ImageMagick
run: ../../../build/shared/build.ImageMagick.sh linux arm64
working-directory: src/ImageMagick/libraries
- 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/libraries
- 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@v3
with:
name: linux-arm64
path: artifacts
macos-x64:
name: 'MacOS (x64)'
runs-on: macos-12
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: ./install.dependencies.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 libraries
run: ../../../build/shared/build.Libraries.sh ../../../build/libraries macos x64
working-directory: src/ImageMagick/libraries
- name: Build ImageMagick
run: ../../../build/shared/build.ImageMagick.sh macos x64
working-directory: src/ImageMagick/libraries
- 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@v3
with:
name: macos-x64
path: artifacts
macos-arm64:
name: 'MacOS (arm64)'
runs-on: macos-12
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: ./install.dependencies.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 libraries
run: ../../../build/shared/build.Libraries.sh ../../../build/libraries macos arm64
working-directory: src/ImageMagick/libraries
- name: Build ImageMagick
run: ../../../build/shared/build.ImageMagick.sh macos arm64
working-directory: src/ImageMagick/libraries
- 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@v3
with:
name: macos-arm64
path: artifacts
windows:
name: 'Windows'
runs-on: windows-2022
strategy:
matrix:
quantumName: [Q8, Q8-OpenMP, Q16, Q16-OpenMP, Q16-HDRI, Q16-HDRI-OpenMP]
platformName: [x86, x64, arm64]
exclude:
- quantumName: Q8-OpenMP
platformName: x86
- quantumName: Q16-OpenMP
platformName: x86
- quantumName: Q16-HDRI-OpenMP
platformName: x86
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: ./install.dependencies.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 ImageMagick
run: ./build.ImageMagick.cmd ${{ matrix.quantumName }} ${{ matrix.platformName }}
working-directory: build/windows
- name: Update resource files
run: ./update.resourcefiles.ps1
working-directory: build/windows
- name: Build Native
run: ./build.Native.cmd ${{ matrix.quantumName }} ${{ matrix.platformName }}
working-directory: build/windows
- name: Copy Native
run: ./copy.Native.ps1 -quantumName ${{ matrix.quantumName }} -platformName ${{ matrix.platformName }} -destination ../../artifacts
working-directory: build/windows
- name: Sign binaries
if: github.event_name != 'pull_request'
uses: azure/azure-code-signing-action@v0.3.0
with:
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
endpoint: https://eus.codesigning.azure.net/
code-signing-account-name: ImageMagick
certificate-profile-name: ImageMagick
files-folder: 'artifacts\windows\Release${{ matrix.quantumName }}\${{ matrix.platformName }}'
files-folder-filter: dll
file-digest: SHA256
timestamp-rfc3161: http://timestamp.acs.microsoft.com
timestamp-digest: SHA256
- name: Upload library
uses: actions/upload-artifact@v3
with:
name: windows
path: artifacts/windows
- name: Upload resources
uses: actions/upload-artifact@v3
with:
name: 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 dependencies
run: ./install.dependencies.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 libraries
run: ../../../build/shared/build.Libraries.sh ../../../build/libraries wasm x86
working-directory: src/ImageMagick/libraries
- name: Build ImageMagick
run: ../../../build/shared/build.ImageMagick.sh wasm x86
working-directory: src/ImageMagick/libraries
- 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@v3
with:
name: wasm-x86
path: artifacts
verify-linux-x64:
name: 'Verify Linux (x64)'
needs:
- linux-x64
runs-on: ubuntu-latest
strategy:
matrix:
image:
- 'ubuntu:18.04'
- 'ubuntu:20.04'
- 'ubuntu:latest'
- 'tgagor/centos:stream8'
- 'tgagor/centos:stream9'
- 'mcr.microsoft.com/dotnet/aspnet:latest'
- 'mcr.microsoft.com/dotnet/runtime:6.0'
- 'mcr.microsoft.com/dotnet/runtime:latest'
- 'amazon/aws-lambda-dotnet:6'
- 'public.ecr.aws/lambda/dotnet:6-x86_64'
container:
image: ${{ matrix.image }}
steps:
- name: Install dependencies
run: |
if [ -f "/bin/yum" ]; then
yum install -y gzip tar
fi
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 1
- name: Download linux library
uses: actions/download-artifact@v3
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:
matrix:
image:
- 'alpine:latest'
- 'mcr.microsoft.com/dotnet/aspnet:8.0-alpine'
- 'mcr.microsoft.com/dotnet/runtime:6.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@v3
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:
matrix:
image:
- 'mcr.microsoft.com/dotnet/runtime:6.0-focal-arm64v8'
- 'public.ecr.aws/lambda/dotnet:6-arm64'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download linux-arm64 library
uses: actions/download-artifact@v3
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 mcr.microsoft.com/dotnet/sdk:6.0-focal-arm64v8 Magick.Native/build/shared/verify.Native.sh /Magick.Native linux arm64
docker run -v $path:/Magick.Native mcr.microsoft.com/dotnet/sdk:6.0-focal-arm64v8 Magick.Native/build/shared/verify.Native.sh /Magick.Native linux arm64 OpenMP
verify-macos:
name: 'Verify MacOS'
needs:
- macos-x64
- macos-arm64
strategy:
matrix:
os: [macos-11, macos-12]
arch: [x64, arm64]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download macos library
uses: actions/download-artifact@v3
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
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: ./install.dependencies.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@v3
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 dependencies
run: ./install.dependencies.ps1
working-directory: build/windows
- name: Download linux-x64 library
uses: actions/download-artifact@v3
with:
name: linux-x64
path: publish\dotnet\files\linux
- name: Download linux-arm64 library
uses: actions/download-artifact@v3
with:
name: linux-arm64
path: publish\dotnet\files\linux
- name: Download linux-musl-x64 library
uses: actions/download-artifact@v3
with:
name: linux-musl-x64
path: publish\dotnet\files\linux-musl
- name: Download macos-x64 library
uses: actions/download-artifact@v3
with:
name: macos-x64
path: publish\dotnet\files\macos
- name: Download macos-arm64 library
uses: actions/download-artifact@v3
with:
name: macos-arm64
path: publish\dotnet\files\macos
- name: Download windows libraries
uses: actions/download-artifact@v3
with:
name: windows
path: publish\dotnet\files\windows
- name: Download resources
uses: actions/download-artifact@v3
with:
name: resources
path: publish\dotnet\files\resources
- name: Download metadata
uses: actions/download-artifact@v3
with:
name: metadata
path: publish\dotnet\files\metadata
- name: Create NuGet package
run: ./publish.ps1 -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 dependencies
run: ./install.dependencies.ps1
working-directory: build/windows
- name: Download wasm library
uses: actions/download-artifact@v3
with:
name: wasm-x86
path: publish\wasm\files
- uses: actions/setup-node@v4
with:
node-version: 16
registry-url: https://npm.pkg.github.com
scope: '@dlemstra'
- name: Create NPM package
run: ./publish.ps1 -destination artifacts
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 }}