From cf187d753f7256dd94a97a17a918d6112ca6e0e8 Mon Sep 17 00:00:00 2001 From: Tao Guo Date: Wed, 8 May 2024 10:02:00 +1000 Subject: [PATCH] Add GHA for building promql-to-scrape (#87) --- .github/workflows/promql-to-scrape.yaml | 59 +++++++++++++++++++ .../observability/promql-to-scrape/Dockerfile | 25 ++++++-- 2 files changed, 78 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/promql-to-scrape.yaml diff --git a/.github/workflows/promql-to-scrape.yaml b/.github/workflows/promql-to-scrape.yaml new file mode 100644 index 0000000..55cfa77 --- /dev/null +++ b/.github/workflows/promql-to-scrape.yaml @@ -0,0 +1,59 @@ +name: Test, build and publish promql-to-scrape + +on: + push: + paths: + - 'cloud/observability/promql-to-scrape/**' + branches: + - main + tags: + - v* + pull_request: + paths: + - 'cloud/observability/promql-to-scrape/**' + +env: + IMAGE_NAME: promql-to-scrape + +jobs: + push: + runs-on: ubuntu-latest + permissions: + packages: write + contents: read + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Log in to registry + # This is where you will update the personal access token to GITHUB_TOKEN + run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin + + - name: Setup Docker metadata + id: meta + uses: docker/metadata-action@v4 + with: + images: | + ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }} + tags: | + type=raw,value=latest,enable={{is_default_branch}} + type=raw,value={{branch}} + type=ref,event=branch + type=ref,event=pr + type=sha + + - name: Build and Push + uses: docker/build-push-action@v3 + with: + context: cloud/observability/promql-to-scrape + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + platforms: linux/amd64,linux/arm64 + push: true diff --git a/cloud/observability/promql-to-scrape/Dockerfile b/cloud/observability/promql-to-scrape/Dockerfile index 7930c45..6ce71db 100644 --- a/cloud/observability/promql-to-scrape/Dockerfile +++ b/cloud/observability/promql-to-scrape/Dockerfile @@ -1,11 +1,24 @@ -FROM golang:1.21-alpine +FROM --platform=${BUILDPLATFORM:-linux/amd64} golang:1.21 as builder -WORKDIR /usr/src/app +ARG TARGETPLATFORM +ARG BUILDPLATFORM +ARG TARGETOS +ARG TARGETARCH -COPY go.mod go.sum ./ -RUN go mod download && go mod verify +ARG Version +ARG GitCommit + +WORKDIR ${GOPATH:-/go}/src/promql-to-scrape COPY . . -RUN go build -v -o /usr/local/bin/promql-to-scrape ./cmd/promql-to-scrape/main.go +RUN go mod download +RUN go get -d -v ./... + +RUN CGO_ENABLED=${CGO_ENABLED:-0} GOOS=${TARGETOS} GOARCH=${TARGETARCH} \ + go build -o ${GOPATH:-/go}/bin/ ${GOPATH:-/go}/src/promql-to-scrape/cmd/promql-to-scrape + +FROM --platform=${BUILDPLATFORM:-linux/amd64} centos:latest + +COPY --from=builder ${GOPATH:-/go}/bin/promql-to-scrape / -ENTRYPOINT ["/usr/local/bin/promql-to-scrape"] \ No newline at end of file +ENTRYPOINT ["/promql-to-scrape"]