generated from pulumi/pulumi-provider-boilerplate
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Makefile
146 lines (114 loc) · 5.16 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
PROJECT_NAME := Pulumi Service Resource Provider
PACK := pulumiservice
PACKDIR := sdk
PROJECT := github.com/pulumi/pulumi-pulumiservice
NODE_MODULE_NAME := @pulumi/pulumi-service
NUGET_PKG_NAME := Pulumi.PulumiService
PROVIDER := pulumi-resource-${PACK}
VERSION ?= $(shell pulumictl get version)
PROVIDER_PATH := provider
VERSION_PATH := ${PROVIDER_PATH}/pkg/version.Version
SCHEMA_FILE := provider/cmd/pulumi-resource-pulumiservice/schema.json
GOPATH := $(shell go env GOPATH)
WORKING_DIR := $(shell pwd)
TESTPARALLELISM := 4
# The pulumi binary to use during generation
PULUMI := .pulumi/bin/pulumi
export PULUMI_IGNORE_AMBIENT_PLUGINS = true
ensure::
cd provider && go mod tidy
cd sdk && go mod tidy
cd examples && go mod tidy
gen::
build_sdks: dotnet_sdk go_sdk nodejs_sdk python_sdk java_sdk
gen_sdk_prerequisites: $(PULUMI)
provider::
(cd provider && VERSION=${VERSION} go generate cmd/${PROVIDER}/main.go)
(cd provider && go build -o $(WORKING_DIR)/bin/${PROVIDER} -ldflags "-X ${PROJECT}/${VERSION_PATH}=${VERSION}" $(PROJECT)/${PROVIDER_PATH}/cmd/$(PROVIDER))
provider_debug::
(cd provider && go build -o $(WORKING_DIR)/bin/${PROVIDER} -gcflags="all=-N -l" -ldflags "-X ${PROJECT}/${VERSION_PATH}=${VERSION}" $(PROJECT)/${PROVIDER_PATH}/cmd/$(PROVIDER))
test_provider::
cd provider/pkg && go test -short -v -count=1 -cover -timeout 2h -parallel ${TESTPARALLELISM} ./...
dotnet_sdk: DOTNET_VERSION := $(shell pulumictl get version --language dotnet)
dotnet_sdk: gen_sdk_prerequisites
rm -rf sdk/dotnet
$(PULUMI) package gen-sdk $(SCHEMA_FILE) --language dotnet
cd ${PACKDIR}/dotnet/&& \
echo "${DOTNET_VERSION}" >version.txt && \
dotnet build /p:Version=${DOTNET_VERSION}
go_sdk: gen_sdk_prerequisites
rm -rf sdk/go
$(PULUMI) package gen-sdk $(SCHEMA_FILE) --language go
nodejs_sdk: VERSION := $(shell pulumictl get version --language javascript)
nodejs_sdk: gen_sdk_prerequisites
rm -rf sdk/nodejs
$(PULUMI) package gen-sdk $(SCHEMA_FILE) --language nodejs
cd ${PACKDIR}/nodejs/ && \
yarn install && \
yarn run tsc && \
cp ../../README.md ../../LICENSE package.json yarn.lock ./bin/ && \
sed -i.bak -e 's/\$${VERSION}/$(VERSION)/g' ./bin/package.json
python_sdk: PYPI_VERSION := $(shell pulumictl get version --language python)
python_sdk: gen_sdk_prerequisites
rm -rf sdk/python
$(PULUMI) package gen-sdk $(SCHEMA_FILE) --language python
cp README.md ${PACKDIR}/python/
cd ${PACKDIR}/python/ && \
python3 setup.py clean --all 2>/dev/null && \
rm -rf ./bin/ ../python.bin/ && cp -R . ../python.bin && mv ../python.bin ./bin && \
sed -i.bak -e 's/^VERSION = .*/VERSION = "$(PYPI_VERSION)"/g' -e 's/^PLUGIN_VERSION = .*/PLUGIN_VERSION = "$(VERSION)"/g' ./bin/setup.py && \
rm ./bin/setup.py.bak && \
cd ./bin && python3 setup.py build sdist
GRADLE_DIR := $(WORKING_DIR)/.gradle
GRADLE := $(GRADLE_DIR)/gradlew
java_sdk: RESOURCE_FOLDER := src/main/resources/com/pulumi/pulumiservice
java_sdk: gen_sdk_prerequisites
rm -rf sdk/java/{.gradle,build,src}
$(PULUMI) package gen-sdk $(SCHEMA_FILE) --language java
cp $(GRADLE_DIR)/settings.gradle sdk/java/settings.gradle
cp $(GRADLE_DIR)/build.gradle sdk/java/build.gradle
cd sdk/java && \
mkdir -p $(RESOURCE_FOLDER) && \
echo "$(VERSION)" > $(RESOURCE_FOLDER)/version.txt && \
echo '{"resource": true,"name": "pulumiservice","version": "$(VERSION)"}' > $(RESOURCE_FOLDER)/plugin.json && \
PULUMI_JAVA_SDK_VERSION=0.10.0 $(GRADLE) --console=plain build && \
PULUMI_JAVA_SDK_VERSION=0.10.0 $(GRADLE) --console=plain publishToMavenLocal
.PHONY: build
build:: gen provider dotnet_sdk go_sdk nodejs_sdk python_sdk java_sdk
# Required for the codegen action that runs in pulumi/pulumi
only_build:: build
lint::
for DIR in "provider" "sdk" "examples" ; do \
pushd $$DIR && golangci-lint run -c ../.golangci.yml --timeout 10m && popd ; \
done
install:: install_nodejs_sdk install_dotnet_sdk
cp $(WORKING_DIR)/bin/${PROVIDER} ${GOPATH}/bin
GO_TEST := go test -v -count=1 -cover -timeout 2h -parallel ${TESTPARALLELISM}
install_dotnet_sdk::
rm -rf $(WORKING_DIR)/nuget/$(NUGET_PKG_NAME).*.nupkg
mkdir -p $(WORKING_DIR)/nuget
find . -name '*.nupkg' -print -exec cp -p {} ${WORKING_DIR}/nuget \;
install_python_sdk::
#target intentionally blank
install_go_sdk::
#target intentionally blank
install_nodejs_sdk::
-yarn unlink --cwd $(WORKING_DIR)/sdk/nodejs/bin
yarn link --cwd $(WORKING_DIR)/sdk/nodejs/bin
install_java_sdk::
cd sdk/java && $(GRADLE) publishToMavenLocal
# Keep the version of the pulumi binary used for code generation in sync with the version
# of the dependency used by github.com/pulumi/pulumi-pulumiservice/provider
$(PULUMI): HOME := $(WORKING_DIR)
$(PULUMI): provider/go.mod
@ PULUMI_VERSION="$$(cd provider && go list -m github.com/pulumi/pulumi/pkg/v3 | awk '{print $$2}')"; \
if [ -x $(PULUMI) ]; then \
CURRENT_VERSION="$$($(PULUMI) version)"; \
if [ "$${CURRENT_VERSION}" != "$${PULUMI_VERSION}" ]; then \
echo "Upgrading $(PULUMI) from $${CURRENT_VERSION} to $${PULUMI_VERSION}"; \
rm $(PULUMI); \
fi; \
fi; \
if ! [ -x $(PULUMI) ]; then \
curl -fsSL https://get.pulumi.com | sh -s -- --version "$${PULUMI_VERSION#v}"; \
fi