Skip to content

Bump actions/checkout from 3 to 4 #502

Bump actions/checkout from 3 to 4

Bump actions/checkout from 3 to 4 #502

Workflow file for this run

on:
push:
branches:
- main
pull_request:
branches:
- main
name: main
jobs:
linux:
name: 'Linux (x64)'
container:
image: ubuntu:18.04
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install dependencies
run: ./install.dependencies.sh
working-directory: build/linux-x64
- 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
path: artifacts
linux_musl:
name: 'Linux musl (x64)'
container:
image: alpine:3.12
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install dependencies
run: ./install.dependencies.sh
working-directory: build/linux-musl-x64
- 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
path: artifacts
linux_arm64:
name: 'Linux (arm64)'
container:
image: ubuntu:18.04
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install dependencies
run: ./install.dependencies.sh
working-directory: build/linux-arm64
- 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:
name: 'MacOS (x64)'
runs-on: macos-11
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install dependencies
run: ./install.dependencies.sh
working-directory: build/macos-x64
- 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-11
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install dependencies
run: ./install.dependencies.sh
working-directory: build/macos-arm64
- 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
with:
fetch-depth: 1
- name: Install dependencies
run: ./install.dependencies.ps1
working-directory: build/windows
- 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 library
uses: dlemstra/code-sign-action@v1
with:
certificate: '${{ secrets.CERTIFICATE }}'
password: '${{ secrets.CERTIFICATE_PASSWORD }}'
folder: 'artifacts\windows\Release${{ matrix.quantumName }}\${{ matrix.platformName }}'
- 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:
name: 'WASM (x86)'
container:
image: emscripten/emsdk:3.1.42
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install dependencies
run: ./install.dependencies.sh
working-directory: build/wasm-x86
- 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 type definition
run: npm install && npm run publish
working-directory: src/create-type-definition
- 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
path: artifacts
verify_linux:
name: 'Verify Linux (x64)'
needs:
- linux
runs-on: ubuntu-latest
strategy:
matrix:
image:
- 'ubuntu:16.04'
- '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:3.1'
- '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@v4
with:
fetch-depth: 1
- name: Download linux library
uses: actions/download-artifact@v3
with:
name: linux
- name: Verify Native
run: build/shared/verify.Native.sh . linux x64
verify_linux_openmp:
name: 'Verify Linux (x64) OpenMP'
needs:
- linux
runs-on: ubuntu-latest
strategy:
matrix:
image:
- 'ubuntu:16.04'
- '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:3.1'
- '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@v4
with:
fetch-depth: 1
- name: Download linux library
uses: actions/download-artifact@v3
with:
name: linux
- name: Verify Native
run: build/shared/verify.Native.sh . linux x64 OpenMP
verify_linux_musl:
name: 'Verify Linux musl (x64)'
needs:
- linux_musl
runs-on: ubuntu-latest
strategy:
matrix:
image:
- 'alpine:latest'
- 'mcr.microsoft.com/dotnet/aspnet:5.0-alpine'
- 'mcr.microsoft.com/dotnet/runtime:3.1-alpine'
- 'mcr.microsoft.com/dotnet/runtime:5.0-alpine'
container:
image: ${{ matrix.image }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Download linux-musl library
uses: actions/download-artifact@v3
with:
name: linux-musl
- name: Verify Native
run: |
apk update
apk add bash
build/shared/verify.Native.sh . linux-musl x64
verify_linux_musl_openmp:
name: 'Verify Linux musl (x64) OpenMP'
needs:
- linux_musl
runs-on: ubuntu-latest
strategy:
matrix:
image:
- 'alpine:latest'
- 'mcr.microsoft.com/dotnet/aspnet:5.0-alpine'
- 'mcr.microsoft.com/dotnet/runtime:3.1-alpine'
- 'mcr.microsoft.com/dotnet/runtime:5.0-alpine'
container:
image: ${{ matrix.image }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Download linux-musl library
uses: actions/download-artifact@v3
with:
name: linux-musl
- name: Verify Native
run: |
apk update
apk add bash
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
with:
fetch-depth: 1
- 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
verify_linux_arm64_openmp:
name: 'Verify Linux (arm64) OpenMP'
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
with:
fetch-depth: 1
- 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 OpenMP
verify_macos:
name: 'Verify MacOS'
needs:
- macos
- macos_arm64
strategy:
matrix:
os: [macos-11, macos-12]
arch: [x64, arm64]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- 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
- verify_linux_openmp
- verify_linux_musl
- verify_linux_musl_openmp
- verify_linux_arm64
- verify_linux_arm64_openmp
- verify_macos
- windows
- wasm
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install dependencies
run: ./install.dependencies.ps1
working-directory: build/windows
- 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'
needs:
- metadata
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install dependencies
run: ./install.dependencies.ps1
working-directory: build/windows
- name: Download linux library
uses: actions/download-artifact@v3
with:
name: linux
path: publish\dotnet\files\linux
- name: Download linux musl library
uses: actions/download-artifact@v3
with:
name: linux-musl
path: publish\dotnet\files\linux-musl
- name: Download linux arm64 library
uses: actions/download-artifact@v3
with:
name: linux-arm64
path: publish\dotnet\files\linux
- name: Download macos 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 library
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:
name: 'Publish WASM library'
needs:
- metadata
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install dependencies
run: ./install.dependencies.ps1
working-directory: build/windows
- name: Download wasm library
uses: actions/download-artifact@v3
with:
name: wasm
path: publish\wasm\files
- uses: actions/setup-node@v3
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 }}