name: docker on: push: branches: main tags: ["*"] jobs: build: runs-on: ubuntu-22.04 permissions: packages: write contents: read 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 ## 在dockerfile内编译的话应该不需要在这里交叉编译了 # - 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 }} - uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_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 and Push Ubuntu uses: docker/build-push-action@v6 with: context: . file: ./Dockerfile # 指向刚才修改的 Ubuntu 版文件 platforms: linux/amd64,linux/arm64 push: true tags: | ${{ env.DOCKER_TAG }} ghcr.io/${{ env.DOCKER_TAG }} - name: Build and Push Alpine uses: docker/build-push-action@v6 with: context: . file: ./Dockerfile.alpine # 指向精简版文件 platforms: linux/amd64,linux/arm64 push: true tags: | ${{ env.ALPINE_TAG }} ghcr.io/${{ env.ALPINE_TAG }}