Skip to content

release

release #50

Workflow file for this run

name: release
on:
push:
tags:
- "*"
- "!v*"
workflow_dispatch:
inputs:
branch_or_tag:
required: false
publish_release_artifacts:
type: boolean
required: true
default: false
jobs:
# docker:
# runs-on: ubuntu-latest
# strategy:
# fail-fast: false
# matrix:
# otp:
# - 27.2-3
# elixir:
# - 1.18.3
# steps:
# - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
# with:
# ref: ${{ github.event.inputs.branch_or_tag }}
# fetch-depth: 0
# - uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0
# - uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0
# - uses: docker/metadata-action@dbef88086f6cef02e264edb7dbf63250c17cef6c # v5.5.0
# id: meta
# with:
# images: ${{ github.repository }}
# tags: |
# type=ref,event=branch
# type=ref,event=tag
# type=semver,pattern={{version}}
# type=semver,pattern={{major}}.{{minor}}
# - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
# if: github.event_name == 'push' || inputs.publish_release_artifacts
# with:
# username: ${{ secrets.DOCKER_HUB_USER }}
# password: ${{ secrets.DOCKER_HUB_TOKEN }}
# - uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 # v5.1.0
# with:
# context: .
# platforms: linux/amd64,linux/arm64
# push: ${{ github.event_name == 'push' || inputs.publish_release_artifacts == true }}
# tags: ${{ steps.meta.outputs.tags }}
# labels: ${{ steps.meta.outputs.labels }}
# build-args: |
# FROM=ghcr.io/emqx/emqx-builder/5.5-2:${{ matrix.elixir }}-${{ matrix.otp }}-debian12
# linux:
# strategy:
# fail-fast: false
# matrix:
# otp:
# - 27.2-3
# elixir:
# - 1.18.3
# quic_support:
# - true
# - false
# os:
# - ubuntu24.04
# - ubuntu22.04
# - ubuntu20.04
# - debian12
# - debian11
# - el9
# - el8
# - el7
# - amzn2
# - amzn2023
# arch:
# - amd64
# - arm64
# runs-on: ${{ matrix.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }}
# env:
# IMAGE: ghcr.io/emqx/emqx-builder/5.5-2:1.18.3-${{ matrix.otp }}-${{ matrix.os }}
# steps:
# - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
# with:
# fetch-depth: 0
# ref: ${{ github.event.inputs.branch_or_tag }}
# - name: build
# run: >-
# if [ "false" == ${{ matrix.quic_support }} ]; then
# docker run --rm -v ${PWD}:/wd -w /wd -e BUILD_WITHOUT_QUIC=1 ${IMAGE} bash -euc "git config --global --add safe.directory '*' && make"
# else
# docker run --rm -v ${PWD}:/wd -w /wd ${IMAGE} bash -euc "git config --global --add safe.directory '*' && make"
# fi
# - if: failure()
# run: cat rebar3.crashdump
# - name: Verify that we have working release
# run: |
# mkdir test-package
# cp *.tar.gz test-package/
# pushd test-package
# tar xfz ./emqtt-bench*.tar.gz
# docker network create emqtt-bench
# docker run -d --name emqx --network emqtt-bench -p 18083:18083 emqx/emqx:latest
# attempts=10
# url="http://localhost:18083/status"
# while ! curl "$url" >/dev/null 2>&1; do
# if [ $attempts -eq 0 ]; then
# echo "emqx is not responding on $url"
# exit 1
# fi
# sleep 5
# attempts=$((attempts-1))
# done
# docker run -t --rm -v $(pwd):/emqtt-bench -w /emqtt-bench --network emqtt-bench $IMAGE bash -c 'bin/emqtt_bench pub -c 1 -t bench/%i -s 256 -h emqx --limit 5'
# popd
# - uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
# with:
# name: "emqtt-bench-${{ matrix.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-${{ matrix.quic_support }}-${{ matrix.arch }}"
# path: ./*.tar.gz
mac:
strategy:
fail-fast: false
matrix:
os:
- macos-14
- macos-15
otp:
- 27
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
fetch-depth: 0
ref: ${{ github.event.inputs.branch_or_tag }}
- name: prepare
env:
OTP: ${{ matrix.otp }}
run: |
brew install curl zip unzip gnu-sed freetds erlang@$OTP
echo "/usr/local/bin" >> $GITHUB_PATH
echo "$(brew --prefix erlang@$OTP)/bin" >> $GITHUB_PATH
git config --global credential.helper store
- name: build macos-14
if: matrix.os == 'macos-14'
env:
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
APPLE_DEVELOPER_IDENTITY: ${{ secrets.APPLE_DEVELOPER_IDENTITY }}
APPLE_DEVELOPER_ID_BUNDLE: ${{ secrets.APPLE_DEVELOPER_ID_BUNDLE }}
APPLE_DEVELOPER_ID_BUNDLE_PASSWORD: ${{ secrets.APPLE_DEVELOPER_ID_BUNDLE_PASSWORD }}
BUILD_WITHOUT_QUIC: 1
run: |
erl -eval 'erlang:display(erlang:system_info(system_version)),halt()'
make
- name: build macos-15+
if: matrix.os != 'macos-14'
env:
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
APPLE_DEVELOPER_IDENTITY: ${{ secrets.APPLE_DEVELOPER_IDENTITY }}
APPLE_DEVELOPER_ID_BUNDLE: ${{ secrets.APPLE_DEVELOPER_ID_BUNDLE_NEW }}
APPLE_DEVELOPER_ID_BUNDLE_PASSWORD: ${{ secrets.APPLE_DEVELOPER_ID_BUNDLE_PASSWORD_NEW }}
BUILD_WITHOUT_QUIC: 1
run: |
erl -eval 'erlang:display(erlang:system_info(system_version)),halt()'
make
- if: failure()
run: cat rebar3.crashdump
- name: test release
run: |
set -e
mkdir test-release
cp ./emqtt-bench*.zip test-release
cd test-release
unzip -q ./emqtt-bench*.zip
bin/emqtt_bench
- uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
with:
name: "emqtt-bench-${{ matrix.otp }}-${{ matrix.os }}"
path: ./*.zip
# release:
# runs-on: ubuntu-latest
# needs:
# - linux
# - mac
# if: github.event_name == 'push' || inputs.publish_release_artifacts
# steps:
# - uses: actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935 # v4.1.1
# with:
# pattern: "emqtt-bench-*"
# path: packages
# merge-multiple: true
# - name: Create Release
# uses: softprops/action-gh-release@69320dbe05506a9a39fc8ae11030b214ec2d1f87 # v2.0.5
# with:
# name: Emqtt Bench ${{ github.ref_name }} Released
# body: Emqtt Bench ${{ github.ref_name }} Released
# files: packages/*
# draft: false
# prerelease: false
# - uses: aws-actions/configure-aws-credentials@010d0da01d0b5a38af31e9c3470dbfdabdecca3a # v4.0.1
# with:
# aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
# aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
# - name: upload to aws s3
# run: |
# set -euo pipefail
# aws s3 cp --recursive packages s3://${{ secrets.AWS_S3_BUCKET }}/emqtt-bench/${{ github.ref_name }}
# aws cloudfront create-invalidation --distribution-id ${{ secrets.AWS_CLOUDFRONT_ID }} --paths "/emqtt-bench/${{ github.ref_name }}/*"
# - name: update to emqx.io
# run: |
# set -eux
# curl -w %{http_code} \
# --insecure \
# -H "Content-Type: application/json" \
# -H "token: ${{ secrets.EMQX_IO_TOKEN }}" \
# -X POST \
# -d "{\"repo\":\"emqx/emqtt-bench\", \"tag\": \"${{ github.ref_name }}\" }" \
# ${{ secrets.EMQX_IO_RELEASE_API }}