Skip to content

Release

Release #42

Workflow file for this run

name: Release
on:
push:
tags:
- "*"
workflow_dispatch:
inputs:
build_from:
description: |
Branch or tag to build release artifacts from.
required: false
release_as:
description: |
Publish release under this tag, or update release assets if such release exists.
If empty, release publishing will be skipped.
required: false
default: ""
jobs:
mac:
name: macOS (${{ matrix.os }} ${{ matrix.otp }})
strategy:
fail-fast: false
matrix:
os:
- macos-13
- macos-14
- macos-15
otp:
- "26.2.5.14-1"
- "27.3.4.2-1"
rebar3:
- "3.22.0"
runs-on: ${{ matrix.os }}
steps:
- uses: emqx/macos-erlang@f744c98139c0db83a10619587d4bae4fc49765a8 # v1.0.0
with:
otp-version: ${{ matrix.otp }}
rebar3-version: ${{ matrix.rebar3 }}
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
submodules: recursive
fetch-depth: 0
ref: ${{ github.event.inputs.build_from }} # when input is not given, the event tag is used
- name: build release
env:
BUILD_RELEASE: 1
CI_RELEASE_VERSION: ${{ github.event.inputs.release_as }}
run: ./build.sh
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: packages-${{ matrix.os }}-${{ matrix.otp }}
path: |
_packages/*.tar.gz
_packages/*.tar.gz.sha256
linux:
name: linux (${{ matrix.os }} ${{ matrix.arch }} ${{ matrix.builder.otp }})
strategy:
fail-fast: false
matrix:
os:
- ubuntu24.04
- ubuntu22.04
- ubuntu20.04
- debian12
- debian11
- debian10
- amzn2023
- el8
- el9
- alpine3.15.1
arch:
- amd64
- arm64
builder:
- vsn: "5.5-5:1.15.7-26.2.5.14-1"
otp: "26.2.5.14-1"
- vsn: "5.5-5:1.18.3-27.3.4.2-1"
otp: "27.3.4.2-1"
runs-on: ubuntu-24.04${{ matrix.arch == 'arm64' && '-arm' || '' }}
container: ghcr.io/emqx/emqx-builder/${{ matrix.builder.vsn }}-${{ matrix.os }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
submodules: recursive
fetch-depth: 0
ref: ${{ github.event.inputs.build_from }} # when input is not given, the event tag is used
- run: git config --global --add safe.directory $GITHUB_WORKSPACE
- name: build release
env:
BUILD_RELEASE: 1
CI_RELEASE_VERSION: ${{ github.event.inputs.release_as }}
run: ./build.sh
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: packages-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.builder.otp }}
path: |
_packages/*.tar.gz
_packages/*.tar.gz.sha256
linux-old:
# el7 does not work when using 'container' due to old nodejs version
# same with amzn2, plus it needs even more handholding
name: linux (${{ matrix.os }} ${{ matrix.arch }} ${{ matrix.builder.otp }})
strategy:
fail-fast: false
matrix:
os:
- amzn2
- el7
arch:
- amd64
- arm64
builder:
- vsn: "5.5-5:1.15.7-26.2.5.14-1"
otp: "26.2.5.14-1"
- vsn: "5.5-5:1.18.3-27.3.4.2-1"
otp: "27.3.4.2-1"
runs-on: ubuntu-24.04${{ matrix.arch == 'arm64' && '-arm' || '' }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
submodules: recursive
fetch-depth: 0
ref: ${{ github.event.inputs.build_from }} # when input is not given, the event tag is used
- name: build release
if: matrix.os == 'amzn2'
env:
CI_RELEASE_VERSION: ${{ github.event.inputs.release_as }}
CONTAINER: ghcr.io/emqx/emqx-builder/${{ matrix.builder.vsn }}-${{ matrix.os }}
run: |
docker build --build-arg FROM=$CONTAINER -t emqx-builder:amzn2 -f .ci/Dockerfile.amzn2 .
docker run -t --rm --user 1001 \
-v $(pwd):/wd \
--workdir /wd \
-e BUILD_RELEASE=1 \
-e CI_RELEASE_VERSION=$CI_RELEASE_VERSION \
emqx-builder:amzn2 bash -euc './build.sh'
- name: build release
if: matrix.os != 'amzn2'
env:
CI_RELEASE_VERSION: ${{ github.event.inputs.release_as }}
CONTAINER: ghcr.io/emqx/emqx-builder/${{ matrix.builder.vsn }}-${{ matrix.os }}
run: |
docker run -t --rm --user 1001 \
-v $(pwd):/wd \
--workdir /wd \
-e BUILD_RELEASE=1 \
-e CI_RELEASE_VERSION=$CI_RELEASE_VERSION \
$CONTAINER bash -euc './build.sh'
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: packages-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.builder.otp }}
path: |
_packages/*.tar.gz
_packages/*.tar.gz.sha256
release:
runs-on: ubuntu-latest
needs:
- mac
- linux
- linux-old
if: startsWith(github.ref, 'refs/tags/') || inputs.release_as
steps:
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
pattern: 'packages-*'
path: packages
merge-multiple: true
- name: Create Release
uses: softprops/action-gh-release@72f2c25fcb47643c292f7107632f7a47c1df5cd8 # v2.3.2
with:
name: Erlang jq NIF ${{ github.event.inputs.release_as || github.ref_name }} Released
tag_name: ${{ github.event.inputs.release_as || github.ref_name }}
files: "packages/*"