| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- name: Build and push docker images
- concurrency:
- group: docker-build-${{ github.event_name }}-${{ github.ref }}
- cancel-in-progress: true
- on:
- workflow_call:
- inputs:
- profile:
- required: true
- type: string
- version:
- required: true
- type: string
- latest:
- required: true
- type: string
- publish:
- required: true
- type: string
- otp_vsn:
- required: true
- type: string
- elixir_vsn:
- required: true
- type: string
- builder_vsn:
- required: true
- type: string
- runner:
- required: true
- type: string
- secrets:
- DOCKER_HUB_USER:
- required: true
- DOCKER_HUB_TOKEN:
- required: true
- AWS_ACCESS_KEY_ID:
- required: true
- AWS_SECRET_ACCESS_KEY:
- required: true
- workflow_dispatch:
- inputs:
- ref:
- required: false
- profile:
- required: false
- type: string
- default: 'emqx'
- version:
- required: true
- latest:
- required: false
- type: boolean
- default: false
- publish:
- required: false
- type: boolean
- default: false
- otp_vsn:
- required: false
- type: string
- default: '25.3.2-2'
- elixir_vsn:
- required: false
- type: string
- default: '1.14.5'
- builder_vsn:
- required: false
- type: string
- default: '5.1-4'
- runner:
- required: false
- type: string
- default: 'ubuntu-22.04'
- jobs:
- docker:
- runs-on: ${{ inputs.runner }}
- strategy:
- fail-fast: false
- matrix:
- profile:
- - ${{ inputs.profile }}
- - ${{ inputs.profile }}-elixir
- registry:
- - 'docker.io'
- - 'public.ecr.aws'
- exclude:
- - profile: emqx-enterprise
- registry: 'public.ecr.aws'
- - profile: emqx-enterprise-elixir
- registry: 'public.ecr.aws'
- steps:
- - uses: actions/checkout@v3
- with:
- ref: ${{ github.event.inputs.ref }}
- fetch-depth: 0
- - uses: docker/setup-qemu-action@v2
- - uses: docker/setup-buildx-action@v2
- - name: Login to hub.docker.com
- uses: docker/login-action@v2
- if: matrix.registry == 'docker.io'
- with:
- username: ${{ secrets.DOCKER_HUB_USER }}
- password: ${{ secrets.DOCKER_HUB_TOKEN }}
- - name: Login to AWS ECR
- uses: docker/login-action@v2
- if: matrix.registry == 'public.ecr.aws'
- with:
- registry: public.ecr.aws
- username: ${{ secrets.AWS_ACCESS_KEY_ID }}
- password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- ecr: true
- - name: Build docker image
- env:
- PROFILE: ${{ matrix.profile }}
- DOCKER_REGISTRY: ${{ matrix.registry }}
- DOCKER_ORG: ${{ github.repository_owner }}
- DOCKER_LATEST: ${{ inputs.latest }}
- DOCKER_PUSH: ${{ inputs.publish == 'true' || inputs.publish || github.repository_owner != 'emqx' }}
- DOCKER_BUILD_NOCACHE: true
- DOCKER_PLATFORMS: linux/amd64,linux/arm64
- EMQX_RUNNER: 'debian:11-slim'
- EMQX_DOCKERFILE: 'deploy/docker/Dockerfile'
- PKG_VSN: ${{ inputs.version }}
- EMQX_BUILDER_VSN: ${{ inputs.builder_vsn }}
- EMQX_OTP_VSN: ${{ inputs.otp_vsn }}
- EMQX_ELIXIR_VSN: ${{ inputs.elixir_vsn }}
- run: |
- ./build ${PROFILE} docker
|