From a694c825815679992e5d53b1dcdba0e8cf614765 Mon Sep 17 00:00:00 2001 From: David Zhao Date: Sat, 3 Jul 2021 12:46:56 -0700 Subject: [PATCH] publish to docker automatically on tag (#35) --- .github/workflows/docker.yaml | 81 +++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 .github/workflows/docker.yaml diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml new file mode 100644 index 000000000..73d52e0b9 --- /dev/null +++ b/.github/workflows/docker.yaml @@ -0,0 +1,81 @@ +name: Release to Docker + +# Controls when the action will run. +on: + workflow_dispatch: + push: + # only publish on version tags + tags: + - 'v*.*.*' +jobs: + docker: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/cache@v2 + with: + path: | + ~/go/pkg/mod + ~/go/bin + ~/bin/protoc + ~/.cache + key: ${{ runner.os }}-livekit-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-livekit- + - name: Docker meta + id: meta + uses: docker/metadata-action@v3 + with: + # list of Docker images to use as base name for tags + images: | + livekit/livekit-server + # generate Docker tags based on the following events/attributes + tags: | + type=semver,pattern=v{{version}} + type=semver,pattern=v{{major}}.{{minor}} + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.16 + + - name: Download Go modules + run: go mod download + + - name: Download protoc + run: curl -LO https://github.com/protocolbuffers/protobuf/releases/download/v3.15.8/protoc-3.15.8-linux-x86_64.zip + + - name: Install protoc + run: | + sudo unzip protoc-3.15.8-linux-x86_64.zip -d /usr + sudo chmod 755 /usr/bin/protoc + + - name: Install protobuf generators + run: | + go install github.com/twitchtv/twirp/protoc-gen-twirp + go install google.golang.org/protobuf/cmd/protoc-gen-go + + - name: Generate code + uses: magefile/mage-action@v1 + with: + version: latest + args: generate + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + id: docker_build + uses: docker/build-push-action@v2 + with: + context: . + push: true + platforms: linux/amd64,linux/arm64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }}