96 lines
4.8 KiB
Plaintext
96 lines
4.8 KiB
Plaintext
VERSION 0.8
|
|
|
|
# tfgen builds the tfgen binary and nodejs TypeScript SDK
|
|
tfgen:
|
|
FROM golang:1.25.4
|
|
WORKDIR /go/src/git.kalinow.ski/kiterun/pulumi-incus/provider
|
|
ENV WORKING_DIR=/go/src/git.kalinow.ski/kiterun/pulumi-incus
|
|
# ENV PULUMI_HOME=$(WORKING_DIR)/.pulumi
|
|
# ENV PATH=$(WORKING_DIR)/.pulumi/bin:$(PATH)
|
|
RUN mkdir -p ../.pulumi/examples-cache cmd/pulumi-resource-incus
|
|
COPY --dir provider/go.mod provider/go.sum provider/shim .
|
|
RUN go list -f "{{slice .Version 1}}" -m github.com/pulumi/pulumi/pkg/v3 > ../.pulumi/version
|
|
ENV PULUMI_HOME=${WORKING_DIR}/.pulumi
|
|
ENV PATH=${WORKING_DIR}/.pulumi/bin:$PATH
|
|
RUN curl -fsSL https://get.pulumi.com | HOME=${WORKING_DIR} sh -s -- --version "$(cat .pulumi/version)"
|
|
RUN pulumi plugin install converter terraform 1.2.4
|
|
RUN go mod download
|
|
ARG PROVIDER_VERSION=1.0.0-alpha.0+dev
|
|
ENV PROVIDER_VERSION=${PROVIDER_VERSION}
|
|
ENV LDFLAGS_STRIP_SYMBOLS="-s -w"
|
|
ENV LDFLAGS_PROJ_VERSION="-X git.kalinow.ski/kiterun/pulumi-incus/provider/pkg/version.Version=${PROVIDER_VERSION}"
|
|
ENV LDFLAGS_UPSTREAM_VERSION=""
|
|
ENV LDFLAGS_EXTRAS=""
|
|
ENV LDFLAGS="${LDFLAGS_PROJ_VERSION} ${LDFLAGS_UPSTREAM_VERSION} ${LDFLAGS_EXTRAS} ${LDFLAGS_STRIP_SYMBOLS}"
|
|
ENV PULUMI_CONVERT=1
|
|
ENV PULUMI_CONVERT_EXAMPLES_CACHE_DIR=/go/src/git.kalinow.ski/kiterun/pulumi-incus/.pulumi/examples-cache
|
|
ENV PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION=1
|
|
ENV PULUMI_MISSING_DOCS_ERROR=false
|
|
|
|
COPY --dir provider/resources.go provider/pkg .
|
|
COPY provider/cmd/pulumi-tfgen-incus cmd/pulumi-tfgen-incus
|
|
COPY provider/cmd/pulumi-resource-incus/main.go cmd/pulumi-resource-incus/main.go
|
|
RUN echo '{}' > cmd/pulumi-resource-incus/bridge-metadata.json
|
|
RUN go build -o /bin/pulumi-tfgen-incus -ldflags "${LDFLAGS_PROJ_VERSION} ${LDFLAGS_EXTRAS}" git.kalinow.ski/kiterun/pulumi-incus/provider/cmd/pulumi-tfgen-incus
|
|
RUN /bin/pulumi-tfgen-incus schema --out cmd/pulumi-resource-incus
|
|
RUN VERSION=${PROVIDER_VERSION} go generate cmd/pulumi-resource-incus/main.go
|
|
RUN sed -i -e 's/souce/source/g' cmd/pulumi-resource-incus/schema.json
|
|
WORKDIR /go/src/git.kalinow.ski/kiterun/pulumi-incus
|
|
# Now that the schema.json is generated, we can generate sdks
|
|
RUN /bin/pulumi-tfgen-incus nodejs --out sdk/nodejs/
|
|
RUN printf "module fake_nodejs_module // Exclude this directory from Go tools\n\ngo 1.17\n" > sdk/nodejs/go.mod
|
|
SAVE ARTIFACT sdk/nodejs
|
|
|
|
# nodejs builds the nodejs SDK using the generated tfgen file
|
|
nodejs:
|
|
FROM node:24-bookworm
|
|
WORKDIR /root/sdk/nodejs
|
|
RUN corepack enable pnpm
|
|
COPY scripts/clean-package-json.js /bin
|
|
COPY +tfgen/nodejs .
|
|
RUN pnpm install && pnpm tsc && cp package.json pnpm-lock.yaml ./bin/
|
|
COPY README.md LICENSE bin
|
|
SAVE ARTIFACT bin AS LOCAL sdk/nodejs/bin
|
|
WORKDIR /root/sdk/nodejs/bin
|
|
RUN node /bin/clean-package-json.js
|
|
# push the nodejs SDK and delete the secret file
|
|
RUN --push --secret TOKEN pnpm config set @kiterun:registry=https://git.kalinow.ski/api/packages/kiterun/npm/ && \
|
|
pnpm config set -g -- '//git.kalinow.ski/api/packages/kiterun/npm/:_authToken' "$TOKEN" && \
|
|
pnpm publish . && \
|
|
rm /root/.npmrc
|
|
|
|
# provider builds and publishes the provider binaries
|
|
provider:
|
|
FROM +tfgen
|
|
ARG PROVIDER_VERSION=1.0.0-alpha.0+dev
|
|
ENV PROVIDER_VERSION=${PROVIDER_VERSION}
|
|
ENV LDFLAGS_STRIP_SYMBOLS="-s -w"
|
|
ENV LDFLAGS_PROJ_VERSION="-X git.kalinow.ski/kiterun/pulumi-incus/provider/pkg/version.Version=${PROVIDER_VERSION}"
|
|
ENV LDFLAGS_UPSTREAM_VERSION=""
|
|
ENV LDFLAGS_EXTRAS=""
|
|
ENV LDFLAGS="${LDFLAGS_PROJ_VERSION} ${LDFLAGS_UPSTREAM_VERSION} ${LDFLAGS_EXTRAS} ${LDFLAGS_STRIP_SYMBOLS}"
|
|
WORKDIR /go/src/git.kalinow.ski/kiterun/pulumi-incus/provider
|
|
RUN mkdir -p /root/dist
|
|
COPY README.md LICENSE ..
|
|
DO +BINARY --GOOS=linux --GOARCH=amd64
|
|
DO +BINARY --GOOS=linux --GOARCH=arm64
|
|
DO +BINARY --GOOS=darwin --GOARCH=amd64
|
|
DO +BINARY --GOOS=darwin --GOARCH=arm64
|
|
SAVE ARTIFACT /root/dist AS LOCAL dist
|
|
RUN --push --secret TOKEN \
|
|
sh -c 'for FILENAME in /root/dist/*; do \
|
|
curl --user kiterun:$TOKEN --upload-file "$FILENAME" \
|
|
https://git.kalinow.ski/api/packages/kiterun/generic/pulumi-incus/$PROVIDER_VERSION/$(basename "$FILENAME"); \
|
|
done'
|
|
|
|
BINARY:
|
|
FUNCTION
|
|
ARG GOOS
|
|
ARG GOARCH
|
|
ARG WORKING_DIR=/go/src/git.kalinow.ski/kiterun/pulumi-incus
|
|
RUN cd ${WORKING_DIR}/provider && GOOS=${GOOS} GOARCH=${GOARCH} CGO_ENABLED=0 go build \
|
|
-o ../bin/${GOOS}-${GOARCH}/pulumi-resource-incus -ldflags "${LDFLAGS}" \
|
|
git.kalinow.ski/kiterun/pulumi-incus/provider/cmd/pulumi-resource-incus
|
|
RUN cd ${WORKING_DIR} && tar --gzip -cf /root/dist/pulumi-resource-incus-v${PROVIDER_VERSION}-${GOOS}-${GOARCH}.tar.gz \
|
|
README.md LICENSE -C bin/${GOOS}-${GOARCH} .
|