Skip to content

Merge pull request #241 from id/0124-support-random-bytes-in-payload #8

Merge pull request #241 from id/0124-support-random-bytes-in-payload

Merge pull request #241 from id/0124-support-random-bytes-in-payload #8

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:
- 25.3.2-2
elixir:
- 1.15.7
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.inputs.branch_or_tag }}
fetch-depth: 0
- uses: docker/setup-qemu-action@v2
- uses: docker/setup-buildx-action@v2
- uses: docker/metadata-action@v4
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@v2
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@v3
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.2-7:${{ matrix.elixir }}-${{ matrix.otp }}-debian11
linux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
otp:
- 25.3.2-2
elixir:
- 1.15.7
quic_support:
- true
- false
os:
- ubuntu22.04
- ubuntu20.04
- ubuntu18.04
- ubuntu16.04
- debian12
- debian11
- debian10
- debian9
- el9
- el8
- el7
- amzn2
- amzn2023
container:
image: ghcr.io/emqx/emqx-builder/5.2-7:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ github.event.inputs.branch_or_tag }}
- shell: bash
run: |
[ "false" == ${{ matrix.quic_support }} ] && export BUILD_WITHOUT_QUIC=1
git config --global --add safe.directory $(pwd)
make
- if: failure()
run: cat rebar3.crashdump
- name: Verify that we have working release
run: |
set -e
mkdir test-release
cp ./emqtt-bench*.tar.gz test-release
cd test-release
tar xfz ./emqtt-bench*.tar.gz
bin/emqtt_bench
- uses: actions/upload-artifact@v3
with:
name: packages
path: ./*.tar.gz
mac:
strategy:
fail-fast: false
matrix:
macos:
- macos-12-arm64
- macos-12
- macos-13
otp:
- 25.3.2-2
runs-on: ${{ matrix.macos }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ github.event.inputs.branch_or_tag }}
- name: prepare
run: |
brew install curl zip unzip gnu-sed kerl unixodbc freetds
echo "/usr/local/bin" >> $GITHUB_PATH
git config --global credential.helper store
- uses: actions/cache@v3
id: cache
with:
path: ~/.kerl
key: otp-${{ matrix.otp }}-${{ matrix.macos }}
- name: build erlang
if: steps.cache.outputs.cache-hit != 'true'
timeout-minutes: 60
env:
OTP: ${{ matrix.otp }}
KERL_CONFIGURE_OPTIONS: '--disable-hipe --disable-jit'
run: |
set -eux
kerl delete build $OTP || true
kerl delete installation $OTP || true
rm -rf $HOME/.kerl/$OTP
kerl build git https://github.com/emqx/otp.git OTP-$OTP $OTP
kerl install $OTP $HOME/.kerl/$OTP
- name: build
env:
OTP: ${{ matrix.otp }}
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 }}
run: |
. $HOME/.kerl/$OTP/activate
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@v3
with:
name: packages
path: ./*.zip
release:
runs-on: ubuntu-latest
needs:
- linux
- mac
if: github.event_name == 'push' || inputs.publish_release_artifacts
steps:
- uses: actions/download-artifact@v3
with:
name: packages
path: packages
- name: Create Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Emqtt Bench ${{ github.ref }} Released
body: Emqtt Bench ${{ github.ref }} Released
draft: false
prerelease: false
- uses: Rory-Z/upload-release-asset@v1
with:
repo: emqtt-bench
path: "packages/emqtt-bench-*"
token: ${{ github.token }}
- uses: aws-actions/configure-aws-credentials@v1-node16
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 }}