ARG K6_VERSION=1.0.0
# Pin these to specific tags once validated (e.g. XK6_VERSION=v0.13.0)
ARG XK6_VERSION=latest
ARG XK6_STATSD_VERSION=latest

FROM golang:1.25-alpine AS builder

ARG K6_VERSION
ARG XK6_VERSION
ARG XK6_STATSD_VERSION
WORKDIR /build
RUN apk add --no-cache git
RUN go install go.k6.io/xk6/cmd/xk6@${XK6_VERSION} \
 && /go/bin/xk6 build --k6-version v${K6_VERSION} --with github.com/LeonAdato/xk6-output-statsd@${XK6_STATSD_VERSION}

FROM grafana/k6:${K6_VERSION}-with-browser
WORKDIR /home/k6
USER root
ARG USER_ID=1000
ARG GROUP_ID=1000
RUN apk add --no-cache yarn make bash zip \
    && addgroup -g $GROUP_ID -S k6user \
    && adduser -u $USER_ID -S -G k6user k6user

COPY --from=builder /build/k6 /usr/bin/k6

COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile

COPY .babelrc webpack.config.js ./
COPY --chown=k6user:k6user ./src src
COPY --chown=k6user:k6user Makefile Makefile
RUN chown k6user:k6user /home/k6

USER k6user
RUN yarn compile-framework
ENTRYPOINT ["/bin/bash", "-c"]
