generated from pulumi/pulumi-component-provider-ts-boilerplate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
149 lines (114 loc) · 5.87 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
147
148
149
VERSION := 0.2.3
PACK := azure-justrun
PROJECT := github.com/pulumi/pulumi-${PACK}
PROVIDER := pulumi-resource-${PACK}
CODEGEN := pulumi-gen-${PACK}
VERSION_PATH := provider/pkg/version.Version
WORKING_DIR := $(shell pwd)
SCHEMA_PATH := ${WORKING_DIR}/schema.json
TESTPARALLELISM := 10
generate:: schema gen_go_sdk gen_dotnet_sdk gen_nodejs_sdk gen_python_sdk
build:: build_provider build_dotnet_sdk build_nodejs_sdk build_python_sdk
build_sdks:: build_dotnet_sdk build_nodejs_sdk build_python_sdk
install:: install_provider install_dotnet_sdk install_nodejs_sdk
# Ensure all dependencies are installed
ensure::
yarn install
# Provider
build_provider:: ensure
cp ${SCHEMA_PATH} provider/cmd/${PROVIDER}/
cd provider/cmd/${PROVIDER}/ && \
yarn install && \
yarn tsc && \
cp package.json schema.json ./bin && \
sed -i.bak -e "s/\$${VERSION}/$(VERSION)/g" bin/package.json
install_provider:: PKG_ARGS := --no-bytecode --public-packages "*" --public
install_provider:: build_provider
cd provider/cmd/${PROVIDER}/ && \
yarn run pkg . ${PKG_ARGS} --target node16 --output ../../../bin/${PROVIDER}
# builds all providers required for publishing
dist:: PKG_ARGS := --no-bytecode --public-packages "*" --public
dist:: build_provider
cd provider/cmd/${PROVIDER}/ && \
yarn run pkg . ${PKG_ARGS} --target node16-macos-x64 --output ../../../bin/darwin-amd64/${PROVIDER} && \
yarn run pkg . ${PKG_ARGS} --target node16-macos-arm64 --output ../../../bin/darwin-arm64/${PROVIDER} && \
yarn run pkg . ${PKG_ARGS} --target node16-linux-x64 --output ../../../bin/linux-amd64/${PROVIDER} && \
yarn run pkg . ${PKG_ARGS} --target node16-linux-arm64 --output ../../../bin/linux-arm64/${PROVIDER} && \
yarn run pkg . ${PKG_ARGS} --target node16-win-x64 --output ../../../bin/windows-amd64/${PROVIDER}.exe
mkdir -p dist
tar --gzip -cf ./dist/pulumi-resource-${PACK}-v${VERSION}-linux-amd64.tar.gz README.md LICENSE -C bin/linux-amd64/ .
tar --gzip -cf ./dist/pulumi-resource-${PACK}-v${VERSION}-linux-arm64.tar.gz README.md LICENSE -C bin/linux-arm64/ .
tar --gzip -cf ./dist/pulumi-resource-${PACK}-v${VERSION}-darwin-amd64.tar.gz README.md LICENSE -C bin/darwin-amd64/ .
tar --gzip -cf ./dist/pulumi-resource-${PACK}-v${VERSION}-darwin-arm64.tar.gz README.md LICENSE -C bin/darwin-arm64/ .
tar --gzip -cf ./dist/pulumi-resource-${PACK}-v${VERSION}-windows-amd64.tar.gz README.md LICENSE -C bin/windows-amd64/ .
# Go SDK
gen_go_sdk::
rm -rf sdk/go
cd provider/cmd/${CODEGEN} && go run . go ../../../sdk/go ${SCHEMA_PATH}
install_go_sdk:: build_go_sdk
## Empty build target for Go
build_go_sdk:: gen_go_sdk
# .NET SDK
gen_dotnet_sdk::
rm -rf sdk/dotnet
cd provider/cmd/${CODEGEN} && go run . dotnet ../../../sdk/dotnet ${SCHEMA_PATH}
build_dotnet_sdk:: DOTNET_VERSION := ${VERSION}
build_dotnet_sdk:: gen_dotnet_sdk
cd sdk/dotnet/ && \
echo "${DOTNET_VERSION}" >version.txt && \
dotnet build /p:Version=${DOTNET_VERSION}
install_dotnet_sdk:: build_dotnet_sdk
rm -rf ${WORKING_DIR}/nuget
mkdir -p ${WORKING_DIR}/nuget
find . -name '*.nupkg' -print -exec cp -p {} ${WORKING_DIR}/nuget \;
dotnet nuget add source ${WORKING_DIR}/nuget
# Node.js SDK
gen_nodejs_sdk::
rm -rf sdk/nodejs
cd provider/cmd/${CODEGEN} && go run . nodejs ../../../sdk/nodejs ${SCHEMA_PATH}
build_nodejs_sdk:: gen_nodejs_sdk
cd sdk/nodejs/ && \
yarn install && \
NODE_OPTIONS=--max-old-space-size=8192 yarn run tsc --diagnostics && \
cp -R scripts/ bin && \
cp ../../README.md ../../LICENSE package.json yarn.lock ./bin/ && \
sed -i.bak -e "s/\$${VERSION}/$(VERSION)/g" ./bin/package.json && \
rm ./bin/package.json.bak
install_nodejs_sdk:: build_nodejs_sdk
yarn link --cwd ${WORKING_DIR}/sdk/nodejs/bin
# Python SDK
gen_python_sdk::
rm -rf sdk/python
cd provider/cmd/${CODEGEN} && go run . python ../../../sdk/python ${SCHEMA_PATH}
cp ${WORKING_DIR}/README.md sdk/python
install_python_sdk:: build_python_sdk
build_python_sdk:: PYPI_VERSION := ${VERSION}
build_python_sdk:: gen_python_sdk
cd sdk/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}/${PYPI_VERSION}/g" -e "s/\$${PLUGIN_VERSION}/${VERSION}/g" ./bin/setup.py && \
rm ./bin/setup.py.bak && \
cd ./bin && python3 setup.py build sdist
test_nodejs:: PATH := $(WORKING_DIR)/bin:$(PATH)
test_nodejs:: ./examples
@export PATH
cd examples && go test -tags=nodejs -v -json -count=1 -cover -timeout 3h -parallel ${TESTPARALLELISM} . 2>&1 | tee /tmp/gotest.log | gotestfmt
test_python:: PATH := $(WORKING_DIR)/bin:$(PATH)
test_python:: ./examples
@export PATH
cd examples && go test -tags=python -v -json -count=1 -cover -timeout 3h -parallel ${TESTPARALLELISM} . 2>&1 | tee /tmp/gotest.log | gotestfmt
test_go:: PATH := $(WORKING_DIR)/bin:$(PATH)
test_go:: ./examples
@export PATH
cd examples/golangcontainerapp && go mod edit -replace github.com/pulumi/pulumi-azure-justrun/sdk=${WORKING_DIR}/sdk && go mod tidy
cd examples/golangwebapp && go mod edit -replace github.com/pulumi/pulumi-azure-justrun/sdk=${WORKING_DIR}/sdk && go mod tidy
cd examples && go test -tags=go -v -json -count=1 -cover -timeout 3h -parallel ${TESTPARALLELISM} . 2>&1 | tee /tmp/gotest.log | gotestfmt
test_dotnet:: PATH := $(WORKING_DIR)/bin:$(PATH)
test_dotnet:: ./examples
@export PATH
cd examples && go test -tags=dotnet -v -json -count=1 -cover -timeout 3h -parallel ${TESTPARALLELISM} . 2>&1 | tee /tmp/gotest.log | gotestfmt
bin/${CODEGEN}: ${CODEGEN_SRC}
cd provider && go build -o $(WORKING_DIR)/bin/${CODEGEN} $(WORKING_DIR)/provider/cmd/$(CODEGEN)
schema: bin/${CODEGEN}
cd provider/cmd/$(CODEGEN) && go run . schema ../../.. ${SCHEMA_PATH}