Skip to content

beta release

beta release #103

on:
workflow_dispatch:
push:
branches:
- main
paths:
- 'configure'
- 'm4/version.m4'
- '.github/build/windows/download-configure.sh'
- '.github/build/windows/download-dependencies.sh'
- '.github/workflows/windows-release.yml'
pull_request:
branches:
- main
paths:
- '.github/workflows/windows-release.yml'
name: windows release
jobs:
change_log:
name: Create ChangeLog.md
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Install dependencies
run: npm install -g auto-changelog
- name: Create ChangeLog.md
run: |
export NEXT_VERSION=$(grep -oP "PACKAGE_VERSION='\K[0-9\.-]*" configure)
git tag $NEXT_VERSION
auto-changelog --sort-commits date
mkdir artifacts
mv ChangeLog.md artifacts/ChangeLog.md
- name: Upload ChangeLog.md
uses: actions/upload-artifact@v4
with:
name: ChangeLog
path: artifacts
release_windows_installer:
name: Windows ${{matrix.quantum}}${{matrix.hdri_flag}}-${{matrix.architecture}} (${{matrix.typeName}})
needs:
- change_log
runs-on: windows-2022
permissions:
id-token: write
contents: read
strategy:
fail-fast: false
matrix:
architecture: [ x64, x86 ]
buildType: [ dynamic, static ]
quantum: [ Q8, Q16 ]
hdri: [ hdri, noHdri ]
exclude:
- quantum: Q8
hdri: hdri
include:
- architecture: x64
bit: 64
- architecture: x86
bit: 32
- buildType: dynamic
typeName: dll
- buildType: static
typeName: static
- hdri: hdri
hdri_flag: '-HDRI'
steps:
- name: Clone ImageMagick6
uses: actions/checkout@v5
with:
path: ImageMagick
- name: Download configure
shell: cmd
run: |
ImageMagick\.github\build\windows\download-configure.cmd
- name: Download dependencies
shell: cmd
run: |
ImageMagick\.github\build\windows\download-dependencies.cmd windows-${{matrix.architecture}}-${{matrix.buildType}}-openMP.zip
- name: Download ChangeLog.md
uses: actions/download-artifact@v5
with:
name: ChangeLog
path: ImageMagick
- name: Install Strawberry Perl
if: ${{matrix.buildType == 'dynamic'}}
shell: cmd
run: |
powershell Invoke-WebRequest -Uri https://github.com/ImageMagick/ImageMagick-Windows/releases/download/20200615/strawberry-perl-5.30.2.1-${{matrix.bit}}bit.msi -OutFile strawberry-perl-5.30.2.1-${{matrix.bit}}bit.msi
msiexec /i strawberry-perl-5.30.2.1-${{matrix.bit}}bit.msi /qn INSTALLDIR="C:\Strawberry${{matrix.bit}}"
mv "C:\Strawberry" "C:\Strawberry64"
- name: Install Inno Setup
shell: cmd
run: |
powershell Invoke-WebRequest -Uri https://github.com/ImageMagick/ImageMagick-Windows/releases/download/20200615/innosetup-6.2.0.exe -OutFile innosetup-6.2.0.exe
innosetup-6.2.0.exe /SILENT /SUPPRESSMSGBOXES /NORESTART /SP-
- name: Configure ImageMagick
shell: cmd
working-directory: Configure
run: |
Configure.Release.x64.exe /noWizard /VS2022 /installedSupport /deprecated /${{matrix.hdri}} /${{matrix.quantum}} /${{matrix.architecture}} /${{matrix.buildType}}
- name: Build ImageMagick
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat"
msbuild /m /t:Rebuild /p:Configuration=Release,Platform=${{matrix.architecture}}
- name: Build PerlMagick
if: ${{matrix.buildType == 'dynamic'}}
shell: cmd
run: |
set PATH=
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat"
cd ImageMagick\PerlMagick
set PATH=%PATH%;C:\Strawberry${{matrix.bit}}\c\bin;C:\Strawberry${{matrix.bit}}\perl\site\bin;C:\Strawberry${{matrix.bit}}\perl\bin;C:\WINDOWS\System32\WindowsPowerShell\v1.0
perl "Makefile.PL" "MAKE=nmake"
nmake
nmake release
- 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: Install sign cli
if: github.event_name != 'pull_request'
run: dotnet tool install --global sign --prerelease
- name: Sign executables and libraries
if: github.event_name != 'pull_request'
run: sign code trusted-signing `
--trusted-signing-account ImageMagick `
--trusted-signing-certificate-profile ImageMagick `
--trusted-signing-endpoint https://eus.codesigning.azure.net `
--azure-credential-type azure-cli `
--verbosity information `
*.exe *.dll
working-directory: Artifacts/bin
- name: Create installer
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat"
"C:\Program Files (x86)\Inno Setup 6\iscc.exe" Configure\Installer\Inno\ImageMagick.iss
- name: Sign installer
if: github.event_name != 'pull_request'
run: sign code trusted-signing `
--trusted-signing-account ImageMagick `
--trusted-signing-certificate-profile ImageMagick `
--trusted-signing-endpoint https://eus.codesigning.azure.net `
--azure-credential-type azure-cli `
--verbosity information `
*.exe
working-directory: Configure/Installer/Inno/Artifacts
- name: Get version
id: version
shell: pwsh
run: |
$version = (cat "Configure\Installer\Inno\config.isx" | Select-String "MagickPackageFullVersionText") | Out-String
$version = ($version | Select-String '".*"' -AllMatches | Select -Expand Matches | Select -Expand Value | Out-String)
$version = $version -Replace "`n|`r|""",""
$version = $version -Replace " ","-"
echo "version=$version" >> $env:GITHUB_OUTPUT
- uses: actions/upload-artifact@v4
with:
name: 'ImageMagick-${{steps.version.outputs.version}}-${{matrix.quantum}}${{matrix.hdri_flag}}-${{matrix.typeName}}-${{matrix.architecture}}'
path: 'Configure\Installer\Inno\Artifacts'
release_windows_source:
name: Windows source
needs:
- change_log
runs-on: windows-2022
steps:
- name: Clone ImageMagick/Windows
uses: actions/checkout@v5
with:
repository: ImageMagick/Windows
ref: refs/heads/main
- name: Clone repositories
shell: cmd
run: |
clone-repositories-im6.cmd
- name: Download ChangeLog.md
uses: actions/download-artifact@v5
with:
name: ChangeLog
path: ImageMagick
- name: Create source archive
shell: cmd
run: |
mkdir Source
move Configure Source
move Dependencies Source
move ImageMagick Source
7z a ImageMagick6-Windows.7z .\Source\*
- uses: actions/upload-artifact@v4
with:
name: ImageMagick6-Windows
path: ImageMagick6-Windows.7z
release_windows_portable:
name: Windows portable ${{matrix.quantum}}${{matrix.hdri_flag}}-${{matrix.architecture}}
needs:
- change_log
runs-on: windows-2022
permissions:
id-token: write
contents: read
strategy:
fail-fast: false
matrix:
architecture: [ x64, x86 ]
quantum: [ Q8, Q16 ]
hdri: [ hdri, noHdri ]
exclude:
- quantum: Q8
hdri: hdri
include:
- architecture: x64
bit: 64
- architecture: arm64
bit: 64
- architecture: x86
bit: 32
- hdri: hdri
hdri_flag: '-HDRI'
steps:
- name: Clone ImageMagick6
uses: actions/checkout@v5
with:
path: ImageMagick
- name: Download configure
shell: cmd
run: |
ImageMagick\.github\build\windows\download-configure.cmd
- name: Download dependencies
shell: cmd
run: |
ImageMagick\.github\build\windows\download-dependencies.cmd windows-${{matrix.architecture}}-static-openMP.zip
- name: Download ChangeLog.md
uses: actions/download-artifact@v5
with:
name: ChangeLog
path: ImageMagick
- name: Configure ImageMagick
shell: cmd
working-directory: Configure
run: |
Configure.Release.x64.exe /noWizard /VS2022 /${{matrix.hdri}} /${{matrix.quantum}} /${{matrix.architecture}} /static
- name: Build ImageMagick
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat"
msbuild /m /t:Rebuild /p:Configuration=Release,Platform=${{matrix.architecture}}
- 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: Install sign cli
if: github.event_name != 'pull_request'
run: dotnet tool install --global sign --prerelease
- name: Sign executables
if: github.event_name != 'pull_request'
run: sign code trusted-signing `
--trusted-signing-account ImageMagick `
--trusted-signing-certificate-profile ImageMagick `
--trusted-signing-endpoint https://eus.codesigning.azure.net `
--azure-credential-type azure-cli `
--verbosity information `
*.exe
working-directory: Artifacts/bin
- name: Copy Files
id: package
shell: pwsh
run: |
[void](New-Item -Name "portable" -ItemType directory)
Copy-Item "Artifacts\bin\*.exe" "portable"
Copy-Item "Artifacts\bin\*.xml" "portable"
Copy-Item "Artifacts\bin\sRGB.icc" "portable"
Copy-Item "Artifacts\NOTICE.txt" "portable"
Copy-Item "ImageMagick\ChangeLog.md" "portable"
Copy-Item "ImageMagick\README.txt" "portable"
Copy-Item "ImageMagick\LICENSE" "portable\LICENSE.txt"
$version = (cat "Configure\Installer\Inno\config.isx" | Select-String "MagickPackageFullVersionText") | Out-String
$version = ($version | Select-String '".*"' -AllMatches | Select -Expand Matches | Select -Expand Value | Out-String)
$version = $version -Replace "`n|`r|""",""
$version = $version -Replace " ","-"
echo "version=$version" >> $env:GITHUB_OUTPUT
- uses: actions/upload-artifact@v4
with:
name: 'ImageMagick-${{steps.package.outputs.version}}-portable-${{matrix.quantum}}${{matrix.hdri_flag}}-${{matrix.architecture}}'
path: portable