feat: add OTP 24, OTP 27, bump elixir to 1.17.3 #147
Workflow file for this run
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 docker images | ||
Check failure on line 1 in .github/workflows/test.yaml GitHub Actions / Build docker imagesInvalid workflow file
|
||
concurrency: | ||
group: test-${{ github.ref }} | ||
cancel-in-progress: true | ||
on: | ||
pull_request: | ||
jobs: | ||
sanity-checks: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 | ||
- name: Check workflow files | ||
env: | ||
ACTIONLINT_VSN: 1.6.25 | ||
run: | | ||
wget https://github.com/rhysd/actionlint/releases/download/v${ACTIONLINT_VSN}/actionlint_${ACTIONLINT_VSN}_linux_amd64.tar.gz | ||
tar zxf actionlint_${ACTIONLINT_VSN}_linux_amd64.tar.gz actionlint | ||
# TODO: enable shellcheck when all the current issues are fixed | ||
./actionlint -color -shellcheck= | ||
prepare: | ||
runs-on: ubuntu-latest | ||
needs: | ||
- sanity-checks | ||
outputs: | ||
matrix: ${{ steps.versions.outputs.matrix }} | ||
steps: | ||
- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 | ||
- name: get release versions | ||
id: versions | ||
run: | | ||
#!/bin/bash | ||
versions="$(grep -E "^\+\sOTP-.*" ./RELEASE.md | \ | ||
sed -E 's/\+\sOTP-([0-9.-]*),Elixir-([0-9.]*).*/{"otp":"\1","elixir":"\2"}/g' | \ | ||
jq -sc .)" | ||
platforms='[ | ||
{"os": "ubuntu24.04", "arch": "linux/amd64", "runner": ["self-hosted", "linux", "x64", "ephemeral"]}, | ||
{"os": "ubuntu24.04", "arch": "linux/arm64", "runner": ["self-hosted", "linux", "arm64", "ephemeral"]}, | ||
{"os": "ubuntu22.04", "arch": "linux/amd64", "runner": ["self-hosted", "linux", "x64", "ephemeral"]}, | ||
{"os": "ubuntu22.04", "arch": "linux/arm64", "runner": ["self-hosted", "linux", "arm64", "ephemeral"]}, | ||
{"os": "ubuntu20.04", "arch": "linux/amd64", "runner": ["self-hosted", "linux", "x64", "ephemeral"]}, | ||
{"os": "ubuntu20.04", "arch": "linux/arm64", "runner": ["self-hosted", "linux", "arm64", "ephemeral"]}, | ||
{"os": "ubuntu18.04", "arch": "linux/amd64", "runner": ["self-hosted", "linux", "x64", "ephemeral"]}, | ||
{"os": "ubuntu18.04", "arch": "linux/arm64", "runner": ["self-hosted", "linux", "arm64", "ephemeral"]}, | ||
{"os": "debian12", "arch": "linux/amd64", "runner": ["self-hosted", "linux", "x64", "ephemeral"]}, | ||
{"os": "debian12", "arch": "linux/arm64", "runner": ["self-hosted", "linux", "arm64", "ephemeral"]}, | ||
{"os": "debian11", "arch": "linux/amd64", "runner": ["self-hosted", "linux", "x64", "ephemeral"]}, | ||
{"os": "debian11", "arch": "linux/arm64", "runner": ["self-hosted", "linux", "arm64", "ephemeral"]}, | ||
{"os": "debian10", "arch": "linux/amd64", "runner": ["self-hosted", "linux", "x64", "ephemeral"]}, | ||
{"os": "debian10", "arch": "linux/arm64", "runner": ["self-hosted", "linux", "arm64", "ephemeral"]}, | ||
{"os": "el9", "arch": "linux/amd64", "runner": ["self-hosted", "linux", "x64", "ephemeral"]}, | ||
{"os": "el9", "arch": "linux/arm64", "runner": ["self-hosted", "linux", "arm64", "ephemeral"]}, | ||
{"os": "el8", "arch": "linux/amd64", "runner": ["self-hosted", "linux", "x64", "ephemeral"]}, | ||
{"os": "el8", "arch": "linux/arm64", "runner": ["self-hosted", "linux", "arm64", "ephemeral"]}, | ||
{"os": "el7", "arch": "linux/amd64", "runner": ["self-hosted", "linux", "x64", "ephemeral"]}, | ||
{"os": "el7", "arch": "linux/arm64", "runner": ["self-hosted", "linux", "arm64", "ephemeral"]}, | ||
{"os": "amzn2", "arch": "linux/amd64", "runner": ["self-hosted", "linux", "x64", "ephemeral"]}, | ||
{"os": "amzn2", "arch": "linux/arm64", "runner": ["self-hosted", "linux", "arm64", "ephemeral"]}, | ||
{"os": "amzn2023", "arch": "linux/amd64", "runner": ["self-hosted", "linux", "x64", "ephemeral"]}, | ||
{"os": "amzn2023", "arch": "linux/arm64", "runner": ["self-hosted", "linux", "arm64", "ephemeral"]}, | ||
{"os": "alpine3.15.1", "arch": "linux/amd64", "runner": ["self-hosted", "linux", "x64", "ephemeral"]}, | ||
{"os": "alpine3.15.1", "arch": "linux/arm64", "runner": ["self-hosted", "linux", "arm64", "ephemeral"]} | ||
]' | ||
matrix="$(jq -cn \ | ||
--argjson versions "$versions" \ | ||
--argjson platforms "$platforms" \ | ||
'[ | ||
$versions[] as $version | | ||
$platforms[] as $platform | | ||
{ | ||
base_image_vsn: "5.0", | ||
otp: $version.otp, | ||
elixir: $version.elixir, | ||
platform: $platform | ||
} | ||
]')" | ||
echo "matrix=$matrix" | tee -a $GITHUB_OUTPUT | ||
build: | ||
name: ${{ matrix.platform.os }} ${{ matrix.platform.arch }} OTP-${{ matrix.otp }} Elixir-${{ matrix.elixir }} | ||
runs-on: ${{ github.repository_owner == 'emqx' && matrix.platform.runner || 'ubuntu-latest' }} | ||
needs: | ||
- prepare | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
include: ${{ fromJSON(needs.prepare.outputs.matrix) }} | ||
steps: | ||
- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 | ||
- uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 # v4.0.2 | ||
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 }} | ||
- uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 | ||
with: | ||
registry: ghcr.io | ||
username: ${{ github.actor }} | ||
password: ${{ github.token }} | ||
- name: define base tag | ||
id: base_tag | ||
run: | | ||
PLATFORM=${{ matrix.platform.arch }} | ||
ARCH="${PLATFORM#linux/}" | ||
TAG="${{ matrix.platform.os }}-${ARCH}" | ||
echo "tag=${TAG}" | tee -a $GITHUB_OUTPUT | ||
echo "image=ghcr.io/${{ github.repository }}/base-${{ matrix.base_image_vsn }}:${TAG}" | tee -a $GITHUB_OUTPUT | ||
- name: Get cache | ||
run: aws s3 sync s3://docker-buildx-cache/emqx-builder/${{ steps.base_tag.outputs.tag }} /tmp/.docker-buildx-cache | ||
- uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0 | ||
- uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0 | ||
with: | ||
driver-opts: network=host | ||
- uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 | ||
if: startsWith('${{ matrix.otp }}', 'OTP-24') | ||
with: | ||
platforms: ${{ matrix.platform.arch }} | ||
cache-from: type=local,src=/tmp/.docker-buildx-cache,mode=max | ||
build-args: | | ||
BUILD_FROM=${{ steps.base_tag.outputs.image }} | ||
OTP_VERSION=${{ matrix.otp }} | ||
ELIXIR_VERSION=${{ matrix.elixir }} | ||
BUILD_WITHOUT_QUIC=1 | ||
EMQTT_BENCH_VERSION=0.4.5 | ||
LUX_VERSION=lux-2.6 | ||
file: ./Dockerfile | ||
context: . | ||
- uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 | ||
if: ! startsWith('${{ matrix.otp }}', 'OTP-24') | ||
with: | ||
platforms: ${{ matrix.platform.arch }} | ||
cache-from: type=local,src=/tmp/.docker-buildx-cache,mode=max | ||
build-args: | | ||
BUILD_FROM=${{ steps.base_tag.outputs.image }} | ||
OTP_VERSION=${{ matrix.otp }} | ||
ELIXIR_VERSION=${{ matrix.elixir }} | ||
file: ./Dockerfile | ||
context: . |