diff --git a/.github/workflows/push-ld.yml b/.github/workflows/push-ld.yml new file mode 100644 index 00000000..58dd119d --- /dev/null +++ b/.github/workflows/push-ld.yml @@ -0,0 +1,43 @@ +name: push-ld +on: + workflow_dispatch: + +jobs: + build-push: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Prepare + id: prep + run: | + VERSION=$(grep 'VERSION' cmd/loadtester/main.go | head -1 | awk '{ print $4 }' | tr -d '"') + echo ::set-output name=BUILD_DATE::$(date -u +'%Y-%m-%dT%H:%M:%SZ') + echo ::set-output name=VERSION::${VERSION} + - name: Setup QEMU + uses: docker/setup-qemu-action@v1 + with: + platforms: all + - name: Setup Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + buildkitd-flags: "--debug" + - name: Login to GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: fluxcdbot + password: ${{ secrets.GHCR_TOKEN }} + - name: Publish image + uses: docker/build-push-action@v2 + with: + push: true + builder: ${{ steps.buildx.outputs.name }} + context: . + file: ./Dockerfile + platforms: linux/amd64 + tags: | + ghcr.io/fluxcd/flagger-loadtester:${{ steps.prep.outputs.VERSION }} + - name: Check images + run: | + docker buildx imagetools inspect ghcr.io/fluxcd/flagger-loadtester:${{ steps.prep.outputs.VERSION }} diff --git a/Dockerfile.loadtester b/Dockerfile.loadtester index b646db3e..49ef93f9 100644 --- a/Dockerfile.loadtester +++ b/Dockerfile.loadtester @@ -26,6 +26,27 @@ RUN HELM_TILLER_VERSION=0.9.3 && \ curl -sSL "https://github.com/rimusz/helm-tiller/archive/v${HELM_TILLER_VERSION}.tar.gz" | tar xz -C /tmp && \ mv /tmp/helm-tiller-${HELM_TILLER_VERSION} /tmp/helm-tiller +FROM golang:1.17-alpine as go + +ARG TARGETPLATFORM +ARG REVISON + +WORKDIR /workspace + +# copy modules manifests +COPY go.mod go.mod +COPY go.sum go.sum + +# cache modules +RUN go mod download + +# copy source code +COPY cmd/ cmd/ +COPY pkg/ pkg/ + +# build +RUN CGO_ENABLED=0 go build -o loadtester ./cmd/loadtester/* + FROM bash:5.0 RUN addgroup -S app && \ @@ -47,8 +68,6 @@ COPY --from=build /tmp/helm-tiller /tmp/helm-tiller ADD https://raw.githubusercontent.com/grpc/grpc-proto/master/grpc/health/v1/health.proto /tmp/ghz/health.proto -COPY ./bin/loadtester . - RUN chown -R app:app ./ RUN chown -R app:app /tmp/ghz @@ -61,4 +80,6 @@ RUN wrk -d 1s -c 1 -t 1 https://flagger.app > /dev/null && echo $? | grep 0 # install Helm v2 plugins RUN helm init --stable-repo-url=https://charts.helm.sh/stable --client-only && helm plugin install /tmp/helm-tiller +COPY --from=go --chown=app:app /workspace/loadtester . + ENTRYPOINT ["./loadtester"] diff --git a/Makefile b/Makefile index a1b1bf25..30dc1004 100644 --- a/Makefile +++ b/Makefile @@ -43,7 +43,6 @@ release: git push origin "v$(VERSION)" loadtester-build: - CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o ./bin/loadtester ./cmd/loadtester/* docker build -t ghcr.io/fluxcd/flagger-loadtester:$(LT_VERSION) . -f Dockerfile.loadtester loadtester-push: