Skip to content

Use a HashSet instead of List (#1642) #866

Use a HashSet instead of List (#1642)

Use a HashSet instead of List (#1642) #866

Workflow file for this run

on:
push:
branches:
- main
pull_request:
branches:
- main
name: main
jobs:
linux:
name: 'Linux (Q8/Q16/Q16-HDRI, x64)'
container:
image: mcr.microsoft.com/dotnet/sdk:8.0
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: build/linux-x64/install.dependencies.sh
- name: Install Magick.Native
run: 'build/shared/install.Magick.Native.sh "dlemstra" "${{ secrets.GITHUB_TOKEN }}" linux x64'
- name: Build
run: build/shared/build.Magick.NET.sh
- name: Test
run: build/shared/test.Magick.NET.sh
- name: Build OpenMP
run: build/shared/build.Magick.NET.sh OpenMP
- name: Test OpenMP
run: build/shared/test.Magick.NET.sh OpenMP
linux_musl:
name: 'Linux musl (Q8/Q16/Q16-HDRI, x64)'
container:
image: mcr.microsoft.com/dotnet/sdk:8.0-alpine
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: build/linux-musl-x64/install.dependencies.sh
- name: Install Magick.Native
run: 'build/shared/install.Magick.Native.sh "dlemstra" "${{ secrets.GITHUB_TOKEN }}" linux-musl x64'
- name: Build
run: build/shared/build.Magick.NET.sh
- name: Test
run: build/shared/test.Magick.NET.sh
- name: Build OpenMP
run: build/shared/build.Magick.NET.sh OpenMP
- name: Test OpenMP
run: build/shared/test.Magick.NET.sh OpenMP
# linux_arm64:
# name: 'Linux (Q8/Q16/Q16-HDRI, arm64)'
# runs-on: ubuntu-latest
# steps:
# - name: Checkout
# uses: actions/checkout@v4
# - name: Install Magick.Native
# run: 'build/shared/install.Magick.Native.sh "dlemstra" "${{ secrets.GITHUB_TOKEN }}" linux arm64'
# - name: Set up QEMU
# uses: docker/setup-qemu-action@master
# with:
# platforms: arm64
# - name: Test
# run: |
# export path=$(pwd)
# docker run -v $path:/Magick.NET mcr.microsoft.com/dotnet/sdk:8.0-jammy-arm64v8 /Magick.NET/build/linux-arm64/github-actions.sh
macos:
name: 'MacOS (Q8/Q16/Q16-HDRI)'
runs-on: macos-12
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: build/macos-x64/install.dependencies.sh
- name: Install Magick.Native
run: 'build/shared/install.Magick.Native.sh "dlemstra" "${{ secrets.GITHUB_TOKEN }}" macos x64'
- name: Build
run: build/shared/build.Magick.NET.sh
- name: Test
run: build/shared/test.Magick.NET.sh
macos_arm64:
name: 'MacOS (Q8/Q16/Q16-HDRI, arm64)'
runs-on: macos-14
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: build/macos-arm64/install.dependencies.sh
- name: Install Magick.Native
run: 'build/shared/install.Magick.Native.sh "dlemstra" "${{ secrets.GITHUB_TOKEN }}" macos arm64'
- name: Build
run: build/shared/build.Magick.NET.sh
- name: Test
run: build/shared/test.Magick.NET.sh
windows:
name: Windows
runs-on: windows-2022
permissions:
id-token: write
contents: read
packages: read
strategy:
matrix:
quantumName: [Q8, Q8-OpenMP, Q16, Q16-OpenMP, Q16-HDRI, Q16-HDRI-OpenMP]
platformName: [x86, x64, arm64, Any CPU]
exclude:
- quantumName: Q8-OpenMP
platformName: x86
- quantumName: Q16-OpenMP
platformName: x86
- quantumName: Q16-HDRI-OpenMP
platformName: x86
- quantumName: Q8-OpenMP
platformName: Any CPU
- quantumName: Q16-OpenMP
platformName: Any CPU
- quantumName: Q16-HDRI-OpenMP
platformName: Any CPU
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-tags: true
- name: Install dependencies
run: ./install.dependencies.cmd
working-directory: build/windows
- name: Create nuget.config
run: './create-nuget-config.cmd "dlemstra" "${{ secrets.GITHUB_TOKEN }}"'
working-directory: src/Magick.Native
- name: Install Magick.Native
run: ./install.cmd
working-directory: src/Magick.Native
- name: Build Magick.NET (Test)
if: ${{ matrix.platformName != 'arm64' }}
run: './build.Magick.NET.cmd ${{ matrix.quantumName }} "${{ matrix.platformName }}" Test'
working-directory: build/windows
- name: Test Magick.NET
if: ${{ matrix.platformName != 'arm64' }}
run: './test.Magick.NET.cmd ${{ matrix.quantumName }} "${{ matrix.platformName }}"'
working-directory: build/windows
- name: Build Magick.NET (Release)
run: './build.Magick.NET.cmd ${{ matrix.quantumName }} "${{ matrix.platformName }}" Release'
working-directory: build/windows
- name: 'Azure CLI login with federated credential'
if: github.event_name != 'pull_request'
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Sign binaries
if: github.event_name != 'pull_request'
uses: azure/[email protected]
with:
endpoint: https://eus.codesigning.azure.net/
trusted-signing-account-name: ImageMagick
certificate-profile-name: ImageMagick
files-folder: 'src/Magick.NET/bin'
files-folder-filter: dll
files-folder-recurse: true
- name: Set NuGet version
run: ./set.version.ps1
working-directory: publish
- name: Create NuGet package
run: './publish.cmd ${{ matrix.quantumName }} "${{ matrix.platformName }}"'
working-directory: publish
- name: Upload library
uses: actions/upload-artifact@v3
with:
name: packages
path: publish/output
libraries:
name: Library
runs-on: windows-2022
permissions:
id-token: write
contents: read
packages: read
strategy:
matrix:
libraryName: [Core, SystemDrawing, SystemWindowsMedia]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-tags: true
- name: Install dependencies
run: ./install.dependencies.cmd
working-directory: build/windows
- name: Create nuget.config
run: './create-nuget-config.cmd "dlemstra" "${{ secrets.GITHUB_TOKEN }}"'
working-directory: src/Magick.Native
- name: Install Magick.Native
run: ./install.cmd
working-directory: src/Magick.Native
- name: 'Build Magick.NET.${{ matrix.libraryName }} (Release)'
run: './build.Magick.NET.cmd "Q8" "Any CPU" Release'
working-directory: build/windows
- name: 'Azure CLI login with federated credential'
if: github.event_name != 'pull_request'
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Sign binaries
if: github.event_name != 'pull_request'
uses: azure/[email protected]
with:
endpoint: https://eus.codesigning.azure.net/
trusted-signing-account-name: ImageMagick
certificate-profile-name: ImageMagick
files-folder: 'src/Magick.NET.${{ matrix.libraryName }}/bin'
files-folder-filter: dll
files-folder-recurse: true
- name: Set NuGet version
run: ./set.version.ps1
working-directory: publish
- name: Create NuGet package
run: './publish.library.cmd "Magick.NET.${{ matrix.libraryName }}"'
working-directory: publish
- name: Upload library
uses: actions/upload-artifact@v3
with:
name: packages
path: publish/output