Skip to content

4.1.x beta release

4.1.x beta release #36

name: "4.1.x beta release"
on:
workflow_dispatch:
inputs:
base_version:
# A base version string in the A.B.C format
type: string
description: "Base version (e.g. 4.1.0) used at build time"
required: true
default: "4.1.0"
prerelease:
type: boolean
description: Is this a pre-release? (a beta, an RC)
required: true
default: true
prerelease_kind:
type: string
description: "Preview version (e.g. beta) used at build time"
required: false
default: "beta"
prerelease_identifier:
# can be a number, a commit SHA prefix
type: string
description: "Preview version (e.g. beta) used at build time"
required: false
default: "1"
env:
# Overriden conditionally with a step for prereleases,
# set here for YAML schema validation
FULL_VERSION: ${{ inputs.base_version }}
FULL_RELEASE_VERSION: ${{ inputs.base_version }}
FULL_PRERELEASE_VERSION: ${{ inputs.base_version }}-${{ inputs.prerelease_kind }}.${{ inputs.prerelease_identifier }}
# makensis only accepts version numbers in the A.B.C.D format where every segment
# is a positive integer. This means that for previews, the version can be {base}.{identifier}
# or just {base}
WINDOWS_INSTALLER_VERSION: ${{ inputs.base_version }}.${{ inputs.prerelease_identifier }}
jobs:
source_tarball:
runs-on: ubuntu-latest
container:
image: rabbitmqdevenv/build-env-26.2
steps:
# Actions do not support conditional expressions in the env: section,
# so workaround sets FULL_VERSION
- name: Conditionall sets FULL_VERSION for a prerelease
run: |
echo "Pre-release? ${{ inputs.prerelease }}"
echo "FULL_VERSION=${{ env.FULL_PRERELEASE_VERSION }}" >> $GITHUB_ENV
if: ${{ inputs.prerelease == 'true' || inputs.prerelease == true }}
- name: Conditionally sets FULL_VERSION for a final release
run: |
echo "Pre-release? ${{ inputs.prerelease }}"
echo "FULL_VERSION=${{ env.FULL_RELEASE_VERSION }}" >> $GITHUB_ENV
if: ${{ inputs.prerelease == 'false' || inputs.prerelease == false }}
- name: Clone rabbitmq/rabbitmq-server
uses: actions/checkout@v4
with:
repository: rabbitmq/rabbitmq-server
ref: main
path: rabbitmq-server
- name: Clone rabbitmq/server-packages
uses: actions/checkout@v4
with:
repository: rabbitmq/server-packages
ref: main
path: server-packages
- name: Generate source tarball
run: |
cd rabbitmq-server
gmake source-dist PROJECT_VERSION=${{ env.FULL_VERSION }}
- name: Store source tarball
uses: actions/upload-artifact@v4
with:
name: rabbitmq-server-${{ env.FULL_VERSION }}-source-tarball
path: "rabbitmq-server/PACKAGES/*"
retention-days: 2
generic_binary_package:
needs: source_tarball
runs-on: ubuntu-latest
container:
image: rabbitmqdevenv/build-env-26.2
steps:
# Actions do not support conditional expressions in the env: section,
# so workaround sets FULL_VERSION
- name: Conditionall sets FULL_VERSION for a prerelease
run: |
echo "Pre-release? ${{ inputs.prerelease }}"
echo "FULL_VERSION=${{ env.FULL_PRERELEASE_VERSION }}" >> $GITHUB_ENV
if: ${{ inputs.prerelease == 'true' || inputs.prerelease == true }}
- name: Conditionally sets FULL_VERSION for a final release
run: |
echo "Pre-release? ${{ inputs.prerelease }}"
echo "FULL_VERSION=${{ env.FULL_RELEASE_VERSION }}" >> $GITHUB_ENV
if: ${{ inputs.prerelease == 'false' || inputs.prerelease == false }}
- name: Clone rabbitmq/rabbitmq-server
uses: actions/checkout@v4
with:
repository: rabbitmq/rabbitmq-server
ref: main
path: rabbitmq-server
- name: Fetch source tarball
uses: actions/download-artifact@v4
with:
name: rabbitmq-server-${{ env.FULL_VERSION }}-source-tarball
path: ./rabbitmq-server/PACKAGES
- name: Build generic binary package
run: |
cd rabbitmq-server
ls -lha ./PACKAGES
gmake package-generic-unix TARBALL_SUFFIX=generic-unix \
SOURCE_DIST_FILE=./PACKAGES/rabbitmq-server-${{ env.FULL_VERSION }}.tar.xz \
PROJECT_VERSION=${{ env.FULL_VERSION }}
ls -lha ./PACKAGES
- name: Store generic binary build
uses: actions/upload-artifact@v4
with:
name: rabbitmq-server-${{ env.FULL_VERSION }}-generic-unix
path: "rabbitmq-server/PACKAGES/rabbitmq-server-generic-unix-${{ env.FULL_VERSION }}.tar.xz"
retention-days: 2
debian_package:
needs: source_tarball
runs-on: ubuntu-latest
container:
image: rabbitmqdevenv/build-env-26.2
steps:
# Actions do not support conditional expressions in the env: section,
# so workaround sets FULL_VERSION
- name: Conditionall sets FULL_VERSION for a prerelease
run: |
echo "Pre-release? ${{ inputs.prerelease }}"
echo "FULL_VERSION=${{ env.FULL_PRERELEASE_VERSION }}" >> $GITHUB_ENV
if: ${{ inputs.prerelease == 'true' || inputs.prerelease == true }}
- name: Conditionally sets FULL_VERSION for a final release
run: |
echo "Pre-release? ${{ inputs.prerelease }}"
echo "FULL_VERSION=${{ env.FULL_RELEASE_VERSION }}" >> $GITHUB_ENV
if: ${{ inputs.prerelease == 'false' || inputs.prerelease == false }}
- name: Clone rabbitmq/rabbitmq-server
uses: actions/checkout@v4
with:
repository: rabbitmq/rabbitmq-server
ref: main
path: rabbitmq-server
- name: Clone rabbitmq/rabbitmq-server
uses: actions/checkout@v4
with:
repository: rabbitmq/rabbitmq-packaging
ref: main
path: rabbitmq-packaging
- name: Fetch source tarball
uses: actions/download-artifact@v4
with:
name: rabbitmq-server-${{ env.FULL_VERSION }}-source-tarball
path: ./rabbitmq-server/PACKAGES
- name: Build Debian package
run: |
cd rabbitmq-packaging
gmake package-deb PROJECT_VERSION=${{ env.FULL_VERSION }} \
SOURCE_DIST_FILE=../rabbitmq-server/PACKAGES/rabbitmq-server-${{ env.FULL_VERSION }}.tar.xz \
RABBITMQ_PACKAGING_REPO=. \
DEBIAN_VERSION="${{ env.FULL_VERSION }}" \
SAVE_CHANGELOG=yes \
INSTALL_BUILD_DEPS=no
cd ..
ls -lha PACKAGES/
- name: Store Debian package and build artifacts
uses: actions/upload-artifact@v4
with:
name: rabbitmq-server-${{ env.FULL_VERSION }}-debian-package
path: "PACKAGES/*"
retention-days: 2
rpm_package:
needs: source_tarball
runs-on: ubuntu-latest
container:
image: rabbitmqdevenv/build-env-26.2
steps:
# Actions do not support conditional expressions in the env: section,
# so workaround sets FULL_VERSION
- name: Conditionall sets FULL_VERSION for a prerelease
run: |
echo "Pre-release? ${{ inputs.prerelease }}"
echo "FULL_VERSION=${{ env.FULL_PRERELEASE_VERSION }}" >> $GITHUB_ENV
if: ${{ inputs.prerelease == 'true' || inputs.prerelease == true }}
- name: Conditionally sets FULL_VERSION for a final release
run: |
echo "Pre-release? ${{ inputs.prerelease }}"
echo "FULL_VERSION=${{ env.FULL_RELEASE_VERSION }}" >> $GITHUB_ENV
if: ${{ inputs.prerelease == 'false' || inputs.prerelease == false }}
- name: Clone rabbitmq/rabbitmq-server
uses: actions/checkout@v4
with:
repository: rabbitmq/rabbitmq-server
ref: main
path: rabbitmq-server
- name: Clone rabbitmq/rabbitmq-server
uses: actions/checkout@v4
with:
repository: rabbitmq/rabbitmq-packaging
ref: main
path: rabbitmq-packaging
- name: Fetch source tarball
uses: actions/download-artifact@v4
with:
name: rabbitmq-server-${{ env.FULL_VERSION }}-source-tarball
path: ./rabbitmq-server/PACKAGES
- name: Build RPM package
run: |
cd rabbitmq-packaging
gmake package-rpm-rhel8 RABBITMQ_VERSION=${{ env.FULL_VERSION }} \
PROJECT_VERSION=${{ env.FULL_VERSION }} \
RABBITMQ_PACKAGING_REPO=. \
RPM_VERSION="${{ github.event.inputs.base_version }}~${{ github.event.inputs.prerelease_kind }}.1" \
SOURCE_DIST_FILE=../rabbitmq-server/PACKAGES/rabbitmq-server-${{ env.FULL_VERSION }}.tar.xz
cd ..
ls -lha PACKAGES/
- name: Store RPM package and build artifacts
uses: actions/upload-artifact@v4
with:
name: rabbitmq-server-${{ env.FULL_VERSION }}-rpm-package
path: "PACKAGES/*"
retention-days: 2
windows_packages:
needs: source_tarball
runs-on: ubuntu-latest
container:
image: rabbitmqdevenv/build-env-26.2
steps:
# Actions do not support conditional expressions in the env: section,
# so workaround sets FULL_VERSION
- name: Conditionall sets FULL_VERSION for a prerelease
run: |
echo "Pre-release? ${{ inputs.prerelease }}"
echo "FULL_VERSION=${{ env.FULL_PRERELEASE_VERSION }}" >> $GITHUB_ENV
if: ${{ inputs.prerelease == 'true' || inputs.prerelease == true }}
- name: Conditionally sets FULL_VERSION for a final release
run: |
echo "Pre-release? ${{ inputs.prerelease }}"
echo "FULL_VERSION=${{ env.FULL_RELEASE_VERSION }}" >> $GITHUB_ENV
if: ${{ inputs.prerelease == 'false' || inputs.prerelease == false }}
- name: Clone rabbitmq/rabbitmq-server
uses: actions/checkout@v4
with:
repository: rabbitmq/rabbitmq-server
ref: main
path: rabbitmq-server
- name: Clone rabbitmq/rabbitmq-server
uses: actions/checkout@v4
with:
repository: rabbitmq/rabbitmq-packaging
ref: main
path: rabbitmq-packaging
- name: Fetch source tarball
uses: actions/download-artifact@v4
with:
name: rabbitmq-server-${{ env.FULL_VERSION }}-source-tarball
path: ./rabbitmq-server/PACKAGES
- name: Build Windows binary package and NSIS-based installer
run: |
cd rabbitmq-packaging
# IMPORTANT: PRODUCT_VERSION must use the A.B.C.D format where every component is a positive integer.
# This is an MSI and makensis build tooling requirement.
gmake package-windows RABBITMQ_PACKAGING_REPO="." \
SOURCE_DIST_FILE=../rabbitmq-server/PACKAGES/rabbitmq-server-${{ env.FULL_VERSION }}.tar.xz \
VERSION=${{ env.FULL_VERSION }} \
PRODUCT_VERSION=${{ env.WINDOWS_INSTALLER_VERSION }}
cd ..
ls -lha PACKAGES/
- name: Store Windows binary package and installer
uses: actions/upload-artifact@v4
with:
# singular for consistency, even though it contains two packages
name: rabbitmq-server-${{ env.FULL_VERSION }}-windows-package
path: "PACKAGES/*"
retention-days: 2
create_gh_release:
needs: [source_tarball, generic_binary_package, debian_package, rpm_package, windows_packages]
runs-on: ubuntu-latest
steps:
# Actions do not support conditional expressions in the env: section,
# so workaround sets FULL_VERSION
- name: Conditionall sets FULL_VERSION for a prerelease
run: |
echo "Pre-release? ${{ inputs.prerelease }}"
echo "FULL_VERSION=${{ env.FULL_PRERELEASE_VERSION }}" >> $GITHUB_ENV
if: ${{ inputs.prerelease == 'true' || inputs.prerelease == true }}
- name: Conditionally sets FULL_VERSION for a final release
run: |
echo "Pre-release? ${{ inputs.prerelease }}"
echo "FULL_VERSION=${{ env.FULL_RELEASE_VERSION }}" >> $GITHUB_ENV
if: ${{ inputs.prerelease == 'false' || inputs.prerelease == false }}
- name: Fetch source tarball
uses: actions/download-artifact@v4
with:
name: rabbitmq-server-${{ env.FULL_VERSION }}-source-tarball
path: ./artifacts
- name: Fetch generic binary package
uses: actions/download-artifact@v4
with:
name: rabbitmq-server-${{ env.FULL_VERSION }}-generic-unix
path: ./artifacts
- name: Fetch Debian package and build artifacts
uses: actions/download-artifact@v4
with:
name: rabbitmq-server-${{ env.FULL_VERSION }}-debian-package
path: ./artifacts
- name: Fetch RPM package
uses: actions/download-artifact@v4
with:
name: rabbitmq-server-${{ env.FULL_VERSION }}-rpm-package
path: ./artifacts
- name: Fetch Windows packages
uses: actions/download-artifact@v4
with:
name: rabbitmq-server-${{ env.FULL_VERSION }}-windows-package
path: ./artifacts
- name: List collected artifacts
run: ls -lha ./artifacts
- name: Create a GitHub release
id: create_gh_release
uses: "marvinpinto/action-automatic-releases@latest"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
automatic_release_tag: v${{ env.FULL_VERSION }}
title: RabbitMQ ${{ env.FULL_VERSION }}
draft: false
prerelease: ${{ inputs.prerelease == true || inputs.prerelease == 'true' }}
files: ./artifacts/*