name: Build and push multi-platform docker images on: push: tags: - '^v[0-9]{2}\.[0-9]{2}(\.[0-9]{1,2})?([a-zA-Z0-9]*)?$' workflow_dispatch: inputs: version: description: 'Release version' required: true repository-name: description: 'Docker repository name' default: 'elementsproject' required: false platforms-to-build: description: 'List of platforms to build' default: 'linux/amd64,linux/arm64,linux/arm/v7' required: false push-latest: description: 'Push the latest tag also?' default: 'false' required: false jobs: build: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Setup Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Set up values id: set-values run: | if [ "${{ github.event.inputs.version }}" != "" ]; then VERSION=${{ github.event.inputs.version }} elif [ "${{ github.ref_type }}" == "tag" ]; then VERSION=${{ github.ref_name }} else echo "No version provided and no tag found." exit 1 fi echo "VERSION=$VERSION" >> $GITHUB_ENV if [ "${{ github.event.inputs.repository-name }}" != "" ]; then REPONAME=${{ github.event.inputs.repository-name }} else REPONAME="elementsproject" fi echo "REPONAME=$REPONAME" >> $GITHUB_ENV if [ "${{ github.event.inputs.platforms-to-build }}" != "" ]; then PLATFORMS=${{ github.event.inputs.platforms-to-build }} else PLATFORMS="linux/amd64,linux/arm64,linux/arm/v7" fi echo "PLATFORMS=$PLATFORMS" >> $GITHUB_ENV if [ "${{ github.event.inputs.push-latest }}" == "true" || ( "${{ github.ref_type }}" == "tag" && [[ ! "${{ env.VERSION }}" =~ rc ]] ) ]; then PUSHLATEST="true" else PUSHLATEST="false" fi echo "PUSHLATEST=$PUSHLATEST" >> $GITHUB_ENV - name: Set Tags id: set-tags run: | TAGS="${{ env.REPONAME }}/lightningd:${{ env.VERSION }}" if [ "${{ env.PUSHLATEST }}" == "true" ]; then TAGS="$TAGS,${{ env.REPONAME }}/lightningd:latest" fi echo "TAGS=$TAGS" >> $GITHUB_ENV - name: Print GitHub Ref Values run: | echo "GITHUB REF TYPE: ${{ github.ref_type }}" echo "GITHUB REF NAME: ${{ github.ref_name }}" echo "EVENT INPUT VERSION: ${{ github.event.inputs.version }}" echo "EVENT INPUT REPO: ${{ github.event.inputs.repository-name }}" echo "EVENT INPUT PLATFORMS: ${{ github.event.inputs.platforms-to-build }}" echo "EVENT INPUT PUSH LATEST: ${{ github.event.inputs.push-latest }}" echo "VERSION ENV: ${{ env.VERSION }}" echo "REPO NAME: ${{ env.REPONAME }}" echo "PLATFORMS: ${{ env.PLATFORMS }}" echo "PUSH LATEST: ${{ env.PUSHLATEST }}" echo "TAGS: ${{ env.TAGS }}" - name: Build and push Docker image uses: docker/build-push-action@v5 with: context: . push: true platforms: ${{ env.PLATFORMS }} tags: ${{ env.TAGS }}