name: Docker permissions: contents: read on: workflow_call: secrets: DOCKERHUB_USERNAME: required: true DOCKERHUB_TOKEN: required: true inputs: chain-network: description: "The network to use, can either be testnet, stagenet or mainnet" default: testnet required: false type: string jobs: build: runs-on: ${{ matrix.runner }} env: LTHN_TAG: ${{ inputs.chain-network == 'testnet' && 'testnet' || 'latest' }} strategy: matrix: include: - arch: amd64 runner: ubuntu-latest tag: ${{ env.LTHN_TAG }}-amd64 platform: linux/amd64 - arch: arm64 runner: ubuntu-arm tag: ${{ env.LTHN_TAG }}-arm64 platform: linux/arm64 steps: - uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to DockerHub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push image uses: docker/build-push-action@v6 with: context: . file: utils/docker/images/lthn-chain/Dockerfile push: true platforms: ${{ matrix.platform }} tags: lthn/chain:${{ matrix.tag }} manifest: needs: build runs-on: ubuntu-latest env: LTHN_TAG: ${{ inputs.chain-network == 'testnet' && 'testnet' || 'latest' }} steps: - name: Log in to DockerHub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Create and push manifest run: | docker manifest create lthn/chain:${{ env.LTHN_TAG }} \ lthn/chain:${{ env.LTHN_TAG }}-amd64 \ lthn/chain:${{ env.LTHN_TAG }}-arm64 docker manifest push lthn/chain:${{ env.LTHN_TAG }} # build: # name: "lthn/chain:${{ inputs.chain-network == 'testnet' && 'testnet' || 'latest' }}" # runs-on: ubuntu-24.04 # steps: # - name: Checkout Project # uses: actions/checkout@v4.2.2 # with: # fetch-depth: 0 # submodules: recursive # # - name: Set up Docker Buildx # uses: docker/setup-buildx-action@v3 # # - name: Login to DockerHub # uses: docker/login-action@v3 # with: # username: ${{ secrets.DOCKERHUB_USERNAME }} # password: ${{ secrets.DOCKERHUB_TOKEN }} # # # - name: Build and push # id: docker_build # uses: docker/build-push-action@v6 # with: # file: utils/docker/images/lthn-chain/Dockerfile # context: ${{ github.workspace }} # push: true # build-args: | # BUILD_TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} # THREADS=2 # BUILD_LOCAL=1 # tags: lthn/chain:${{ inputs.chain-network == 'testnet' && 'testnet' || 'latest' }} #