-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 }}