Build Release #43
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build Release | |
on: | |
workflow_dispatch: | |
inputs: | |
erlang_version: | |
description: Erlang Version | |
required: true | |
rabbitmq_version: | |
description: RabbitMQ Version | |
required: true | |
build_windows: | |
description: Build Windows Release | |
required: false | |
default: true | |
type: boolean | |
build_linux: | |
description: Build Linux Release | |
required: false | |
default: true | |
type: boolean | |
permissions: | |
contents: write | |
jobs: | |
build-linux-release: | |
if: inputs.build_linux | |
runs-on: ubuntu-latest | |
env: | |
ERLANG_VERSION: ${{ github.event.inputs.erlang_version }} | |
ERLANG_TAR_URL: https://github.com/erlang/otp/releases/download/OTP-${{ github.event.inputs.erlang_version }}/otp_src_${{ github.event.inputs.erlang_version }}.tar.gz | |
ERLANG_SOURCE_DIR: otp_src_${{ github.event.inputs.erlang_version }} | |
RABBITMQ_VERSION: ${{ github.event.inputs.rabbitmq_version }} | |
RABBITMQ_TAR_URL: https://github.com/rabbitmq/rabbitmq-server/releases/download/v${{ github.event.inputs.rabbitmq_version }}/rabbitmq-server-generic-unix-${{ github.event.inputs.rabbitmq_version }}.tar.xz | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.11 | |
- name: Install Poetry | |
run: | | |
pip install poetry | |
- name: Install Erlang Dependencies | |
run: | | |
sudo apt update | |
sudo apt upgrade -y | |
# Github's runner environment already has tar, make, and gcc installed | |
# Install perl | |
sudo apt install -y perl | |
# Instal ncurses headers | |
sudo apt-get install -y ncurses-dev | |
# Install OpenSSL and Development Headers | |
sudo apt install -y openssl libssl-dev | |
- name: Install Poetry Dependencies | |
run: | | |
poetry install | |
- name: Verify Dependencies | |
run: | | |
tar --version | |
make --version | |
gcc --version | |
perl --version | |
openssl version | |
- name: Download Erlang Source | |
run: | | |
curl -L -o otp.tar.gz $ERLANG_TAR_URL | |
tar -zxf otp.tar.gz | |
rm -f otp.tar.gz | |
- name: Compile Erlang | |
run: | | |
cd $ERLANG_SOURCE_DIR | |
export ERL_TOP=`pwd` | |
./configure --prefix=$(readlink -f "../erlang") | |
make | |
- name: Install Erlang in folder | |
run: | | |
cd $ERLANG_SOURCE_DIR | |
export ERL_TOP=`pwd` | |
make install | |
cd .. | |
rm -rf $ERLANG_SOURCE_DIR | |
- name: Download RabbitMQ Binaries | |
run: | | |
curl -L -o rabbitmq.tar.xz $RABBITMQ_TAR_URL | |
tar -xvf rabbitmq.tar.xz | |
rm -f rabbitmq.tar.xz | |
- name: Move Binaries into External | |
run: | | |
mkdir -p external/rabbitmq_server | |
mv erlang external/ | |
mv rabbitmq_server-$RABBITMQ_VERSION/* external/rabbitmq_server | |
rm -rf rabbitmq_server-$RABBITMQ_VERSION | |
- name: Build and Package Release | |
run: | | |
poetry run pyinstaller rabbitmq.spec | |
mv dist/rabbitmq ./rabbitmq | |
tar -czf rabbitmq-linux.tar.gz ./rabbitmq | |
rm -rf ./rabbitmq | |
rm -rf dist | |
- name: Check and Create Tag | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
if ! curl -s -H "Authorization: token $GITHUB_TOKEN" "https://api.github.com/repos/${{ github.repository }}/git/matching-refs/tags/$RABBITMQ_VERSION" | grep -q "$RABBITMQ_VERSION"; then | |
git tag "$RABBITMQ_VERSION" | |
git push origin "$RABBITMQ_VERSION" | |
fi | |
- name: Upload Release | |
uses: softprops/action-gh-release@v2 | |
with: | |
tag_name: ${{ env.RABBITMQ_VERSION }} | |
files: | | |
rabbitmq-linux.tar.gz | |
build-windows-release: | |
if: inputs.build_windows | |
env: | |
ERLANG_VERSION: ${{ github.event.inputs.erlang_version }} | |
ERLANG_TAR_URL: https://github.com/erlang/otp/releases/download/OTP-${{ github.event.inputs.erlang_version }}/otp_src_${{ github.event.inputs.erlang_version }}.tar.gz | |
ERLANG_SOURCE_DIR: otp_src_${{ github.event.inputs.erlang_version }} | |
RABBITMQ_VERSION: ${{ github.event.inputs.rabbitmq_version }} | |
RABBITMQ_ZIP_URL: https://github.com/rabbitmq/rabbitmq-server/releases/download/v${{ github.event.inputs.rabbitmq_version }}/rabbitmq-server-windows-${{ github.event.inputs.rabbitmq_version }}.zip | |
WSLENV: ERLANG_VERSION:ERLANG_TAR_URL:ERLANG_SOURCE_DIR:RABBITMQ_VERSION:RABBITMQ_ZIP_URL | |
defaults: | |
run: | |
shell: wsl-bash {0} | |
runs-on: windows-2022 | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.11 | |
- name: Install Poetry | |
shell: pwsh | |
run: | | |
python -m pip install poetry | |
- uses: Vampire/[email protected] | |
with: | |
distribution: Ubuntu-18.04 | |
- name: Install WSL dependencies | |
run: apt update && apt install -y g++-mingw-w64 gcc-mingw-w64 make autoconf unzip | |
- name: Install Poetry Dependencies | |
shell: pwsh | |
run: | | |
poetry install | |
- name: Install openssl | |
shell: cmd | |
run: | | |
choco install openssl --version=3.1.1 | |
IF EXIST "c:\\Program Files\\OpenSSL-Win64" (move "c:\\Program Files\\OpenSSL-Win64" "c:\\OpenSSL-Win64") ELSE (move "c:\\Program Files\\OpenSSL" "c:\\OpenSSL-Win64") | |
- name: Download Erlang Source | |
run: | | |
curl -L -o otp.tar.gz $ERLANG_TAR_URL | |
tar -zxf otp.tar.gz | |
rm -f otp.tar.gz | |
- name: Compile Erlang | |
run: | | |
cd $ERLANG_SOURCE_DIR | |
export ERL_TOP=`pwd` | |
export MAKEFLAGS=-j$(($(nproc) + 2)) | |
export ERLC_USE_SERVER=true | |
export ERTS_SKIP_DEPEND=true | |
eval `./otp_build env_win32 x64` | |
./otp_build configure | |
./otp_build boot -a | |
./otp_build release -a | |
cp -r bin release/win32/ | |
- name: Verify Erlang Build | |
run: | | |
cd $ERLANG_SOURCE_DIR | |
cd release | |
ls -lA | |
cd win32 | |
ls -lA | |
- name: Download RabbitMQ Binaries | |
run: | | |
curl -L -o rabbitmq.zip $RABBITMQ_ZIP_URL | |
unzip rabbitmq.zip | |
rm -f rabbitmq.zip | |
- name: Move Binaries into External | |
run: | | |
mkdir -p external/rabbitmq_server | |
mkdir -p external/erlang | |
mv $ERLANG_SOURCE_DIR/release/win32/* external/erlang | |
mv rabbitmq_server-$RABBITMQ_VERSION/* external/rabbitmq_server | |
cd external/erlang | |
rm -f Install.exe | |
rm -f Install.ini | |
- name: Build and Package Release | |
shell: pwsh | |
run: | | |
poetry run pyinstaller rabbitmq.spec | |
Move-Item -Path 'dist\rabbitmq' -Destination 'rabbitmq' | |
Compress-Archive -Path 'rabbitmq' -DestinationPath 'rabbitmq-windows.zip' | |
Remove-Item -Recurse -Force 'rabbitmq' | |
Remove-Item -Recurse -Force 'dist' | |
- name: Check and Create Tag | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
if ! curl -s -H "Authorization: token $GITHUB_TOKEN" "https://api.github.com/repos/${{ github.repository }}/git/matching-refs/tags/$RABBITMQ_VERSION" | grep -q "$RABBITMQ_VERSION"; then | |
git tag "$RABBITMQ_VERSION" | |
git push origin "$RABBITMQ_VERSION" | |
fi | |
- name: Upload Release | |
uses: softprops/action-gh-release@v2 | |
with: | |
tag_name: ${{ env.RABBITMQ_VERSION }} | |
files: | | |
rabbitmq-windows.zip |