name: docker on: push: branches: main tags: ["*"] jobs: build: runs-on: ubuntu-22.04 permissions: packages: write contents: read steps: - uses: https://devstar.cn/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: https://devstar.cn/alexios/setup-qemu-action@v3 - uses: https://devstar.cn/alexios/setup-buildx-action@v3 - uses: https://devstar.cn/alexios/login-action@v3 with: username: ${{ secrets.DOCKER_HUB_USER }} password: ${{ secrets.DOCKER_HUB_TOKEN }} - uses: alexios/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Determine docker tags id: docker_tag env: DOCKER_USER: ${{ vars.DOCKER_HUB_USERNAME }} PROJECT: ${{ vars.PROJECT_NAME }} run: | FULL_IMAGE_NAME="${DOCKER_USER}/${PROJECT}" case $GITHUB_REF in refs/tags/*) TAG_NAME=${GITHUB_REF#refs/tags/} echo "DOCKER_TAG=${FULL_IMAGE_NAME}:${TAG_NAME}" >> $GITHUB_ENV echo "ALPINE_TAG=${FULL_IMAGE_NAME}:${TAG_NAME}-alpine" >> $GITHUB_ENV ;; *) echo "DOCKER_TAG=${FULL_IMAGE_NAME}:latest" >> $GITHUB_ENV echo "ALPINE_TAG=${FULL_IMAGE_NAME}:alpine" >> $GITHUB_ENV esac - name: build/push docker image uses: https://devstar.cn/alexios/build-push-action@v6 with: context: . file: ./Dockerfile platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/s390x push: true tags: | ${{ env.DOCKER_TAG }} ghcr.io/${{ env.DOCKER_TAG }} - name: build/push docker image (alpine) uses: https://devstar.cn/alexios/build-push-action@v6 with: context: . file: ./Dockerfile.alpine platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/s390x push: true tags: | ${{ env.ALPINE_TAG }} ghcr.io/${{ env.ALPINE_TAG }}