diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000..ed432c3 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,82 @@ +name: Docker CI/CD + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + + outputs: + sha: ${{ steps.push.outputs.digest }} + + steps: + - uses: actions/checkout@v4 + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ghcr.io/posthog/livestream + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Build and push Docker image + id: push + if: github.ref == 'refs/heads/main' + uses: docker/build-push-action@v5 + with: + context: . + file: ./Dockerfile + push: true + platforms: linux/amd64,linux/arm64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + # deploy: + # runs-on: ubuntu-latest + # needs: build + # steps: + # - name: get deployer token + # id: deployer + # uses: getsentry/action-github-app-token@v3 + # with: + # app_id: ${{ secrets.DEPLOYER_APP_ID }} + # private_key: ${{ secrets.DEPLOYER_APP_PRIVATE_KEY }} + + # - name: Trigger livestream deployment + # uses: peter-evans/repository-dispatch@v3 + # with: + # token: ${{ steps.deployer.outputs.token }} + # repository: PostHog/charts + # event-type: commit_state_update + # client-payload: | + # { + # "values": { + # "image": { + # "sha": "${{ needs.build.outputs.sha }}" + # } + # }, + # "release": "livestream", + # "commit": ${{ toJson(github.event.head_commit) }}, + # "repository": ${{ toJson(github.repository) }} + # } diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..142808f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM golang:1.22 as builder +WORKDIR /code +COPY go.sum go.mod . +RUN go mod download -x + +COPY . ./ +RUN go get ./... +RUN go build -v -o /livestream ./... + +FROM ubuntu +COPY --from=builder /livestream /livestream +CMD ["/livestream"]