Skip to content

Build Release

Build Release #15

Workflow file for this run

name: Build Release
on:
workflow_call:
inputs:
build_number:
required: false
default: "1"
type: string
channel:
required: true
type: string
publish:
required: false
type: boolean
default: false
workflow_dispatch:
inputs:
build_number:
description: "Build number for nightly releases"
required: false
default: "1"
channel:
description: "Release channel (e.g., 3.8, nightly)"
required: true
default: "nightly"
publish:
description: "Whether to publish the packages"
required: false
default: false
type: boolean
jobs:
set-version:
runs-on: ubuntu-24.04
outputs:
semver_version: ${{ steps.set-vars.outputs.semver_version }}
deb_version: ${{ steps.set-vars.outputs.deb_version }}
gem_version: ${{ steps.set-vars.outputs.gem_version }}
maven_version: ${{ steps.set-vars.outputs.maven_version }}
pypi_version: ${{ steps.set-vars.outputs.pypi_version }}
rpm_version: ${{ steps.set-vars.outputs.rpm_version }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set version variables
id: set-vars
run: |
if [[ "${{ inputs.channel }}" == "nightly" ]]; then
DATE=$(date +%Y%m%d)
BUILD=${{ inputs.build_number }}
VERSION=3.8.0
# Set version variables for nightly packages according to platform conventions:
# e.g. 3.8.0-nightly.20250625.1
echo "semver_version=${VERSION}-nightly.${DATE}.${BUILD}" >> $GITHUB_OUTPUT
# e.g. 3.8.0~0.nightly20250625.1-1
echo "deb_version=${VERSION}~0.nightly${DATE}.${BUILD}-1" >> $GITHUB_OUTPUT
# e.g. 3.8.0.pre.20250625.1
echo "gem_version=${VERSION}.pre.${DATE}.${BUILD}" >> $GITHUB_OUTPUT
# e.g. 3.8.0-nightly-20250625.1-SNAPSHOT
echo "maven_version=${VERSION}-nightly-${DATE}.${BUILD}-SNAPSHOT" >> $GITHUB_OUTPUT
# e.g. 3.8.0.dev202506251
echo "pypi_version=${VERSION}.dev${DATE}${BUILD}" >> $GITHUB_OUTPUT
# e.g. 3.8.0~0.nightly20250625.1
echo "rpm_version=${VERSION}~0.nightly${DATE}.${BUILD}" >> $GITHUB_OUTPUT
else
# Define version variables as empty for stable channels to use the version from the repository
echo "semver_version=" >> $GITHUB_OUTPUT
echo "deb_version=" >> $GITHUB_OUTPUT
echo "gem_version=" >> $GITHUB_OUTPUT
echo "maven_version=" >> $GITHUB_OUTPUT
echo "pypi_version=" >> $GITHUB_OUTPUT
echo "rpm_version=" >> $GITHUB_OUTPUT
fi
build-deb-packages:
name: Build DEB Packages
uses: ./.github/workflows/build-deb-packages.yml
needs: set-version
with:
ice_version: ${{ needs.set-version.outputs.deb_version }}
secrets: inherit
build-dotnet-packages:
name: Build .NET Packages
uses: ./.github/workflows/build-dotnet-packages.yml
needs: set-version
with:
ice_version: ${{ needs.set-version.outputs.semver_version }}
secrets: inherit
build-gem-packages:
name: Build GEM Packages
uses: ./.github/workflows/build-gem-packages.yml
needs: set-version
with:
ice_version: ${{ needs.set-version.outputs.gem_version }}
build-macos-packages:
name: Build macOS Packages
uses: ./.github/workflows/build-macos-packages.yml
needs: set-version
with:
ice_version: ${{ needs.set-version.outputs.semver_version }}
channel: ${{ inputs.channel }}
secrets: inherit
build-matlab-packages:
name: Build MATLAB Packages
uses: ./.github/workflows/build-matlab-packages.yml
needs: set-version
with:
ice_version: ${{ needs.set-version.outputs.semver_version }}
secrets: inherit
build-maven-packages:
name: Build Maven Packages
uses: ./.github/workflows/build-maven-packages.yml
needs: set-version
with:
ice_version: ${{ needs.set-version.outputs.maven_version }}
secrets: inherit
build-npm-packages:
name: Build NPM Packages
uses: ./.github/workflows/build-npm-packages.yml
needs: set-version
with:
ice_version: ${{ needs.set-version.outputs.semver_version }}
secrets: inherit
build-pip-packages:
name: Build PIP Packages
uses: ./.github/workflows/build-pip-packages.yml
needs: set-version
with:
ice_version: ${{ needs.set-version.outputs.pypi_version }}
secrets: inherit
build-rpm-packages:
name: Build RPM Packages
uses: ./.github/workflows/build-rpm-packages.yml
needs: set-version
with:
ice_version: ${{ needs.set-version.outputs.rpm_version }}
secrets: inherit
build-windows-packages:
name: Build C++ NuGet Package
uses: ./.github/workflows/build-windows-packages.yml
needs: set-version
with:
ice_version: ${{ needs.set-version.outputs.semver_version }}
secrets: inherit
publish-release:
name: Publish Release
if: ${{ inputs.publish == true }}
needs:
- build-deb-packages
- build-dotnet-packages
- build-gem-packages
- build-macos-packages
- build-matlab-packages
- build-maven-packages
- build-npm-packages
- build-pip-packages
- build-rpm-packages
- build-windows-packages
uses: ./.github/workflows/publish-release.yml
with:
channel: ${{ inputs.channel }}
run_id: ${{ github.run_id }}
secrets: inherit