Skip to content

Release to Chocolatey #4

Release to Chocolatey

Release to Chocolatey #4

Workflow file for this run

name: Release to Chocolatey
on:
workflow_dispatch: # Manual trigger only
push:
tags:
- "v[0-9]*" # Trigger on version tags like v1.0.0
jobs:
release-chocolatey:
runs-on: windows-2025
environment: chocolatey_release
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Download and extract release
id: get_version
run: |
$RELEASE_VERSION = "0.1.1"
Invoke-WebRequest -Uri "https://github.com/IvanIsCoding/celq/releases/download/v0.1.1/celq-x86_64-pc-windows-msvc.zip" -OutFile celq.zip
Expand-Archive celq.zip -DestinationPath .
echo "VERSION=$RELEASE_VERSION" >> $env:GITHUB_OUTPUT
echo "Release version: $RELEASE_VERSION"
shell: pwsh
- name: Check if version is pre-release
id: check_prerelease
run: |
$VERSION = "${{ steps.get_version.outputs.VERSION }}"
if ($VERSION -match "(alpha|beta|rc)") {
echo "IS_PRERELEASE=true" >> $env:GITHUB_OUTPUT
echo "Detected pre-release version: $VERSION"
} else {
echo "IS_PRERELEASE=false" >> $env:GITHUB_OUTPUT
echo "Detected stable version: $VERSION"
}
shell: pwsh
- name: Prepare Chocolatey package structure
if: steps.check_prerelease.outputs.IS_PRERELEASE == 'false'
run: |
mkdir tools
copy target\x86_64-pc-windows-msvc\release\celq.exe tools\
copy LICENSE-MIT tools\LICENSE.txt
shell: cmd
- name: Calculate SHA256 and template VERIFICATION.txt
if: steps.check_prerelease.outputs.IS_PRERELEASE == 'false'
run: |
$hash = (CertUtil -hashfile tools\celq.exe SHA256 | Select-Object -Index 1).Trim()
$content = Get-Content choco\VERIFICATION.txt -Raw
$content = $content -replace "CELQ_SHA256_EXE", $hash
$content | Set-Content VERIFICATION.txt -Encoding UTF8 -NoNewline
echo "SHA256: $hash"
shell: pwsh
- name: Import GPG key
if: steps.check_prerelease.outputs.IS_PRERELEASE == 'false'
uses: crazy-max/ghaction-import-gpg@v6
with:
gpg_private_key: ${{ secrets.CHOCO_GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.CHOCO_GPG_PASSPHRASE }}
- name: Clearsign VERIFICATION.txt
if: steps.check_prerelease.outputs.IS_PRERELEASE == 'false'
run: |
gpg --clearsign --armor --output VERIFICATION.txt.asc VERIFICATION.txt
Move-Item VERIFICATION.txt.asc tools\VERIFICATION.txt
shell: pwsh
- name: Upload VERIFICATION.txt artifact
if: steps.check_prerelease.outputs.IS_PRERELEASE == 'false'
uses: actions/upload-artifact@v4
with:
name: verification-file
path: tools/VERIFICATION.txt
- name: Template nuspec file
if: steps.check_prerelease.outputs.IS_PRERELEASE == 'false'
run: |
$content = Get-Content choco\celq.nuspec -Raw
$content = $content -replace "CELQ_VERSION_PLACEHOLDER", "${{ steps.get_version.outputs.VERSION }}"
$content | Set-Content celq.nuspec -Encoding UTF8
shell: pwsh
- name: Create Chocolatey package
if: steps.check_prerelease.outputs.IS_PRERELEASE == 'false'
run: choco pack celq.nuspec