Skip to content

Commit d4cdde8

Browse files
committed
Prepare for publishing
1 parent 9ab0898 commit d4cdde8

File tree

4 files changed

+191
-6
lines changed

4 files changed

+191
-6
lines changed

.github/workflows/release.yml

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
env:
2+
# THIS GITHUB_TOKEN IS A REQUIREMENT TO BE ABLE TO WRITE TO GH RELEASES
3+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4+
# IF YOU NEED TO PUBLISH A NPM PACKAGE THEN ENSURE A NPM_TOKEN SECRET IS SET
5+
# AND PUBLISH_NPM: TRUE. IF YOU WANT TO PUBLISH TO A PRIVATE NPM REGISTRY
6+
# THEN ENSURE THE NPM_REGISTRY_URL IS CHANGED
7+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
8+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
9+
PUBLISH_NPM: true
10+
NPM_REGISTRY_URL: https://registry.npmjs.org
11+
# IF YOU NEED TO PUBLISH A NUGET PACKAGE THEN ENSURE AN NUGET_PUBLISH_KEY
12+
# SECRET IS SET AND PUBLISH_NUGET: TRUE. IF YOU WANT TO PUBLISH TO AN ALTERNATIVE
13+
# NPM REGISTRY THEN ENSURE THE NPM_REGISTRY_URL IS CHANGED
14+
NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }}
15+
NUGET_FEED_URL: https://api.nuget.org/v3/index.json
16+
PUBLISH_NUGET: true
17+
# IF YOU NEED TO PUBLISH A PYPI PACKAGE THEN ENSURE AN PYPI_API_TOKEN
18+
# SECRET IS SET AND PUBLISH_PYPI: TRUE. IF YOU WANT TO PUBLISH TO AN ALTERNATIVE
19+
# PYPI REGISTRY THEN ENSURE THE PYPI_REPOSITORY_URL IS SET. IF YOU ARE USING AN API_TOKEN THEN
20+
# YOU DO NOT NEED TO CHANGE THE PYPI_USERNAME (__token__) , IF YOU ARE USING PASSWORD AUTHENTICATION THEN YOU WILL
21+
# NEED TO CHANGE TO USE THE CORRECT PASSWORD
22+
PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
23+
PYPI_USERNAME: "pulumi"
24+
PYPI_REPOSITORY_URL: ""
25+
PUBLISH_PYPI: true
26+
jobs:
27+
publish_binary:
28+
name: Publish Provider Binary
29+
runs-on: ubuntu-latest
30+
steps:
31+
- name: Checkout Repo
32+
uses: actions/checkout@v2
33+
- name: Unshallow clone for tags
34+
run: git fetch --prune --unshallow --tags
35+
- name: Setup Go
36+
uses: actions/setup-go@v2
37+
with:
38+
go-version: 1.16.x
39+
- name: Install pulumictl
40+
uses: jaxxstorm/[email protected]
41+
with:
42+
repo: pulumi/pulumictl
43+
- name: Install Pulumi CLI
44+
uses: pulumi/[email protected]
45+
- name: Configure AWS Credentials
46+
uses: aws-actions/configure-aws-credentials@v1
47+
with:
48+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
49+
aws-region: us-east-2
50+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
51+
role-duration-seconds: 3600
52+
role-external-id: upload-pulumi-release
53+
role-session-name: uploader@githubActions
54+
role-to-assume: ${{ secrets.AWS_UPLOAD_ROLE_ARN }}
55+
- name: Run GoReleaser
56+
uses: goreleaser/goreleaser-action@v2
57+
with:
58+
args: -f .goreleaser.yml --rm-dist
59+
version: latest
60+
publish_sdk:
61+
name: Publish SDKs
62+
runs-on: ubuntu-latest
63+
needs: publish_binary
64+
steps:
65+
- name: Checkout Repo
66+
uses: actions/checkout@v2
67+
- name: Unshallow clone for tags
68+
run: git fetch --prune --unshallow --tags
69+
- name: Install Go
70+
uses: actions/setup-go@v2
71+
with:
72+
go-version: ${{ matrix.goversion }}
73+
- name: Install pulumictl
74+
uses: jaxxstorm/[email protected]
75+
with:
76+
repo: pulumi/pulumictl
77+
- name: Install Pulumi CLI
78+
uses: pulumi/[email protected]
79+
- name: Setup Node
80+
uses: actions/setup-node@v1
81+
with:
82+
node-version: ${{matrix.nodeversion}}
83+
registry-url: ${{env.NPM_REGISTRY_URL}}
84+
- name: Setup DotNet
85+
uses: actions/setup-dotnet@v1
86+
with:
87+
dotnet-version: ${{matrix.dotnetverson}}
88+
- name: Setup Python
89+
uses: actions/setup-python@v1
90+
with:
91+
python-version: ${{matrix.pythonversion}}
92+
- name: Build SDK
93+
run: make build_${{ matrix.language }}_sdk
94+
- name: Check worktree clean
95+
run: |
96+
git update-index -q --refresh
97+
if ! git diff-files --quiet; then
98+
>&2 echo "error: working tree is not clean, aborting!"
99+
git status
100+
git diff
101+
exit 1
102+
fi
103+
- if: ${{ matrix.language == 'python' && env.PUBLISH_PYPI == 'true' }}
104+
name: Publish package to PyPI
105+
uses: pypa/gh-action-pypi-publish@release/v1
106+
with:
107+
user: ${{ env.PYPI_USERNAME }}
108+
password: ${{ env.PYPI_PASSWORD }}
109+
packages_dir: ${{github.workspace}}/sdk/python/bin/dist
110+
- if: ${{ matrix.language == 'nodejs' && env.PUBLISH_NPM == 'true' }}
111+
uses: JS-DevTools/npm-publish@v1
112+
with:
113+
access: "public"
114+
token: ${{ env.NPM_TOKEN }}
115+
package: ${{github.workspace}}/sdk/nodejs/bin/package.json
116+
- if: ${{ matrix.language == 'dotnet' && env.PUBLISH_NUGET == 'true' }}
117+
name: publish nuget package
118+
run: |
119+
dotnet nuget push ${{github.workspace}}/sdk/dotnet/bin/Debug/*.nupkg -s ${{ env.NUGET_FEED_URL }} -k ${{ env.NUGET_PUBLISH_KEY }}
120+
echo "done publishing packages"
121+
strategy:
122+
fail-fast: true
123+
matrix:
124+
dotnetversion:
125+
- 3.1.301
126+
goversion:
127+
- 1.16.x
128+
language:
129+
- nodejs
130+
- python
131+
- dotnet
132+
- go
133+
nodeversion:
134+
- 14.x
135+
pythonversion:
136+
- "3.9"
137+
name: release
138+
"on":
139+
push:
140+
tags:
141+
- v*.*.*

.goreleaser.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
archives:
2+
- id: archive
3+
name_template: '{{ .Binary }}-{{ .Tag }}-{{ .Os }}-{{ .Arch }}'
4+
before:
5+
hooks:
6+
- make build_provider
7+
blobs:
8+
- bucket: get.pulumi.com
9+
folder: releases/plugins/
10+
ids:
11+
- archive
12+
provider: s3
13+
region: us-west-2
14+
builds:
15+
- binary: pulumi-resource-kubernetes-ingress-nginx
16+
dir: provider
17+
env:
18+
- CGO_ENABLED=0
19+
goarch:
20+
- amd64
21+
goos:
22+
- darwin
23+
- windows
24+
- linux
25+
ldflags:
26+
- -X github.com/pulumi/pulumi-kubernetes-ingress-nginx/provider/pkg/version.Version={{.Tag }}
27+
main: ./cmd/pulumi-resource-kubernetes-ingress-nginx/
28+
changelog:
29+
skip: true
30+
release:
31+
disable: false
32+
prerelease: auto
33+
snapshot:
34+
name_template: '{{ .Tag }}-SNAPSHOT'

Makefile

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
VERSION := 0.0.1
1+
VERSION := $(shell pulumictl get version)
22

33
PACK := kubernetes-ingress-nginx
44
PROJECT := github.com/pulumi/pulumi-${PACK}
@@ -10,7 +10,7 @@ VERSION_PATH := provider/pkg/version.Version
1010
WORKING_DIR := $(shell pwd)
1111
SCHEMA_PATH := ${WORKING_DIR}/schema.json
1212

13-
default:: generate build install
13+
GOPATH := $(shell go env GOPATH)
1414

1515
generate:: gen_go_sdk gen_dotnet_sdk gen_nodejs_sdk gen_python_sdk
1616

@@ -43,7 +43,7 @@ gen_dotnet_sdk::
4343
rm -rf sdk/dotnet
4444
cd provider/cmd/${CODEGEN} && go run . dotnet ../../../sdk/dotnet ${SCHEMA_PATH}
4545

46-
build_dotnet_sdk:: DOTNET_VERSION := ${VERSION}
46+
build_dotnet_sdk:: DOTNET_VERSION := $(shell pulumictl get version --language dotnet)
4747
build_dotnet_sdk:: gen_dotnet_sdk
4848
cd sdk/dotnet/ && \
4949
echo "${DOTNET_VERSION}" >version.txt && \
@@ -60,11 +60,12 @@ install_dotnet_sdk:: build_dotnet_sdk
6060
gen_nodejs_sdk::
6161
rm -rf sdk/nodejs
6262
cd provider/cmd/${CODEGEN} && go run . nodejs ../../../sdk/nodejs ${SCHEMA_PATH}
63-
# HACKHACK: work around https://github.com/pulumi/pulumi/issues/7979:
63+
# HACKHACK: work around https://github.com/pulumi/pulumi/issues/7979:
6464
find sdk/nodejs -name "*.ts" -exec sed -i.bak \
6565
's/pulumiKubernetes\.types\.input\.\([a-zA-Z0-9]*\)\.\([a-zA-Z0-9]*\)\.\([a-zA-Z]*\)Args/pulumiKubernetes.types.input.\1.\2.\3/g' \
6666
'{}' \;
6767

68+
build_nodejs_sdk:: VERSION := $(shell pulumictl get version --language javascript)
6869
build_nodejs_sdk:: gen_nodejs_sdk
6970
cd sdk/nodejs/ && \
7071
yarn install && \
@@ -75,6 +76,7 @@ build_nodejs_sdk:: gen_nodejs_sdk
7576
rm ./bin/package.json.bak
7677

7778
install_nodejs_sdk:: build_nodejs_sdk
79+
yarn unlink ${PACK} || true
7880
yarn link --cwd ${WORKING_DIR}/sdk/nodejs/bin
7981

8082

@@ -85,11 +87,14 @@ gen_python_sdk::
8587
cd provider/cmd/${CODEGEN} && go run . python ../../../sdk/python ${SCHEMA_PATH}
8688
cp ${WORKING_DIR}/README.md sdk/python
8789

88-
build_python_sdk:: PYPI_VERSION := ${VERSION}
90+
build_python_sdk:: PYPI_VERSION := $(shell pulumictl get version --language python)
8991
build_python_sdk:: gen_python_sdk
9092
cd sdk/python/ && \
9193
python3 setup.py clean --all 2>/dev/null && \
9294
rm -rf ./bin/ ../python.bin/ && cp -R . ../python.bin && mv ../python.bin ./bin && \
93-
sed -i.bak -e "s/\$${VERSION}/${PYPI_VERSION}/g" -e "s/\$${PLUGIN_VERSION}/${VERSION}/g" ./bin/setup.py && \
95+
sed -i.bak -e 's/^VERSION = .*/VERSION = "$(PYPI_VERSION)"/g' -e 's/^PLUGIN_VERSION = .*/PLUGIN_VERSION = "$(VERSION)"/g' ./bin/setup.py && \
9496
rm ./bin/setup.py.bak && \
9597
cd ./bin && python3 setup.py build sdist
98+
99+
## Empty build target for Go
100+
build_go_sdk::

sdk/python/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,9 @@ This component supports all of the configuration options of the [official Helm c
2525
https://github.com/kubernetes/ingress-nginx/tree/main/charts/ingress-nginx), except that these
2626
are strongly typed so you will get IDE support and static error checking.
2727

28+
The Helm deployment uses reasonable defaults, including the chart name and repo URL, however,
29+
if you need to override them, you may do so using the `helmOptions` parameter. Refer to
30+
[the API docs for the `kubernetes:helm/v3:Release` Pulumi type](
31+
https://www.pulumi.com/docs/reference/pkg/kubernetes/helm/v3/release/#inputs) for a full set of choices.
32+
2833
For complete details, refer to the Pulumi Package details within the Pulumi Registry.

0 commit comments

Comments
 (0)