name: docker on: push: branches: main tags: ["*"] jobs: build: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Install packages run: | sudo apt-get update sudo apt-get install -y autoconf automake build-essential cmake curl file libtool - name: Cross build multi-arch binary run: | mkdir dist for arch in amd64 armv7 arm64 s390x; do env BUILD_TARGET=$arch ./scripts/cross-build.sh [ "$arch" = "armv7" ] && arch="arm" mkdir -p dist/$arch && cp build/ttyd dist/$arch/ttyd done - uses: docker/setup-qemu-action@v3 - uses: docker/setup-buildx-action@v3 - uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_HUB_USER }} password: ${{ secrets.DOCKER_HUB_TOKEN }} - name: Determine docker tags id: docker_tag run: | case $GITHUB_REF in refs/tags/*) TAG_NAME=${GITHUB_REF#refs/tags/} echo "DOCKER_TAG=tsl0922/ttyd:${TAG_NAME}" >> $GITHUB_ENV echo "ALPINE_TAG=tsl0922/ttyd:${TAG_NAME}-alpine" >> $GITHUB_ENV ;; *) echo "DOCKER_TAG=tsl0922/ttyd:latest" >> $GITHUB_ENV echo "ALPINE_TAG=tsl0922/ttyd:alpine" >> $GITHUB_ENV esac - name: build/push docker image uses: docker/build-push-action@v5 with: context: . file: ./Dockerfile platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/s390x push: true tags: ${{ env.DOCKER_TAG }} - name: build/push docker image (alpine) uses: docker/build-push-action@v5 with: context: . file: ./Dockerfile.alpine platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/s390x push: true tags: ${{ env.ALPINE_TAG }}