name: Docker Image CI on: push: branches: [ "main" ] repository_dispatch: types: [ lamm-updated ] jobs: build_amd64: runs-on: ubuntu-latest steps: - name: Log in to Docker Hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - uses: actions/checkout@v4 - name: Build and push the Docker image run: docker build . --file Dockerfile --tag ${{ secrets.DOCKERHUB_USERNAME }}/discord-bot:amd64 - uses: actions/checkout@v4 - name: Push the Docker image run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/discord-bot:amd64 build_arm64: runs-on: self-hosted steps: - name: Log in to Docker Hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - uses: actions/checkout@v4 - name: Build the Docker image run: docker build . --file Dockerfile --tag ${{ secrets.DOCKERHUB_USERNAME }}/discord-bot:arm64 - uses: actions/checkout@v4 - name: Push the Docker image run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/discord-bot:arm64 create_manifest: needs: [build_amd64, build_arm64] runs-on: ubuntu-latest steps: - name: Log in to Docker Hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Create and push multi-arch manifest run: | docker pull ${{ secrets.DOCKERHUB_USERNAME }}/discord-bot:amd64 docker pull ${{ secrets.DOCKERHUB_USERNAME }}/discord-bot:arm64 docker manifest create ${{ secrets.DOCKERHUB_USERNAME }}/discord-bot:latest \ --amend ${{ secrets.DOCKERHUB_USERNAME }}/discord-bot:amd64 \ --amend ${{ secrets.DOCKERHUB_USERNAME }}/discord-bot:arm64 docker manifest push ${{ secrets.DOCKERHUB_USERNAME }}/discord-bot:latest