Skip to content

Commit

Permalink
Merge pull request #32 from pulumiverse/feat/update-repo
Browse files Browse the repository at this point in the history
feat: Update documentation, workflows and provider
  • Loading branch information
tmeckel authored Jun 22, 2023
2 parents fff7777 + e906e75 commit b95264e
Show file tree
Hide file tree
Showing 9 changed files with 450 additions and 58 deletions.
8 changes: 4 additions & 4 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ RUN apt-get update && \
# Install bridged provider prerequisites
# See README.md

# Install go
ARG GO_VERSION=1.18.3
# Install go
ARG GO_VERSION=1.20.4
RUN rm -rf /usr/local/go && \
wget -O ${GO_VERSION}.tar.gz https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz && \
tar -C /usr/local -xzf ${GO_VERSION}.tar.gz && \
rm ${GO_VERSION}.tar.gz
rm ${GO_VERSION}.tar.gz

ENV GOPATH=/root/go
ENV PATH=$PATH:/usr/local/go/bin
Expand All @@ -30,7 +30,7 @@ RUN mkdir -p $GOPATH/bin && \
ENV PATH=$PATH:$GOPATH/bin

# Install pulumictl
ARG PULUMICTL_VERSION=v0.0.32
ARG PULUMICTL_VERSION=v0.0.42
RUN rm -rf /usr/local/bin/pulumictl && \
wget -O pulumictl.${PULUMICTL_VERSION}.tar.gz https://github.com/pulumi/pulumictl/releases/download/${PULUMICTL_VERSION}/pulumictl-${PULUMICTL_VERSION}-linux-amd64.tar.gz && \
tar -C /usr/local/bin -xzf pulumictl.${PULUMICTL_VERSION}.tar.gz
Expand Down
91 changes: 91 additions & 0 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: build

on:
pull_request:
paths-ignore:
- docs
- .devcontainer
- examples

jobs:
build_sdk:
name: build_sdk
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
dotnetversion:
- 6.0.x
goversion:
- 1.20.x
nodeversion:
- 16.x
pythonversion:
- "3.9"
# javaversion:
# - "11"
language:
- nodejs
- python
- dotnet
- go
# - java

steps:
- name: Checkout Repo
uses: actions/checkout@v2

- name: Unshallow clone for tags
run: git fetch --prune --unshallow --tags
- name: Install Go
uses: actions/setup-go@v3
with:
go-version: ${{matrix.goversion}}

- name: Install pulumictl
uses: jaxxstorm/[email protected]
with:
repo: pulumi/pulumictl

- name: Install pulumi
uses: pulumi/actions@v4

- if: ${{ matrix.language == 'nodejs'}}
name: Setup Node
uses: actions/setup-node@v2
with:
node-version: ${{matrix.nodeversion}}
registry-url: https://registry.npmjs.org

- if: ${{ matrix.language == 'dotnet'}}
name: Setup DotNet
uses: actions/setup-dotnet@v1
with:
dotnet-version: ${{matrix.dotnetversion}}

- if: ${{ matrix.language == 'python'}}
name: Setup Python
uses: actions/setup-python@v2
with:
python-version: ${{matrix.pythonversion}}

- if: ${{ matrix.language == 'java'}}
name: Setup Java
uses: actions/setup-java@v3
with:
cache: gradle
distribution: temurin
java-version: ${{matrix.javaversion}}

- name: Build SDK
run: make build_${{ matrix.language }}

- name: Check worktree clean
run: |
git update-index -q --refresh
if ! git diff-files --quiet; then
>&2 echo "error: working tree is not clean, aborting!"
git status
git diff
exit 1
fi
89 changes: 62 additions & 27 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
name: release

on:
push:
tags:
- v*.*.*

# New way of setting Github token permissions instead of a Personal Access Token
# Source: https://github.blog/changelog/2021-04-20-github-actions-control-permissions-for-github_token/
permissions:
contents: write
paths-ignore:
- docs
- .devcontainer
- examples

env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -31,72 +31,100 @@ env:
# NEED TO CHANGE TO USE THE CORRECT PASSWORD
PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
PYPI_USERNAME: "__token__"
PYPI_REPOSITORY_URL: ""
PUBLISH_PYPI: true

jobs:
publish_binary:
name: publish
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout Repo
uses: actions/checkout@v3
with:
# https://github.com/actions/checkout#Fetch-all-history-for-all-tags-and-branches
fetch-depth: 0

- name: Unshallow clone for tags
run: git fetch --prune --unshallow --tags

- name: Install Go
uses: actions/setup-go@v2
uses: actions/setup-go@v3
with:
go-version: ${{matrix.goversion}}

- name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.5.0
uses: jaxxstorm/action-install-gh-release@v1.10.0
with:
repo: pulumi/pulumictl

- name: Set PreRelease Version
run: echo "GORELEASER_CURRENT_TAG=v$(pulumictl get version --language generic)" >> $GITHUB_ENV
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v2
with:
args: -p 3 release --rm-dist
version: latest

strategy:
fail-fast: true
matrix:
goversion:
- 1.20.x

publish_sdk:
name: Publish SDKs
runs-on: ubuntu-latest
needs: publish_binary
steps:
- name: Checkout Repo
uses: actions/checkout@v3
with:
# https://github.com/actions/checkout#Fetch-all-history-for-all-tags-and-branches
fetch-depth: 0
uses: actions/checkout@v2

- name: Unshallow clone for tags
run: git fetch --prune --unshallow --tags

- name: Install Go
uses: actions/setup-go@v2
uses: actions/setup-go@v3
with:
go-version: ${{ matrix.goversion }}

- name: Install pulumictl
uses: jaxxstorm/action-install-gh-release@v1.5.0
uses: jaxxstorm/action-install-gh-release@v1.10.0
with:
repo: pulumi/pulumictl
- name: Install Pulumi CLI
uses: pulumi/[email protected]
- name: Setup Node

- name: Install pulumi
uses: pulumi/actions@v4

- if: ${{ matrix.language == 'nodejs'}}
name: Setup Node
uses: actions/setup-node@v1
with:
node-version: ${{matrix.nodeversion}}
registry-url: ${{env.NPM_REGISTRY_URL}}
- name: Setup DotNet

- if: ${{ matrix.language == 'dotnet'}}
name: Setup DotNet
uses: actions/setup-dotnet@v1
with:
dotnet-version: ${{matrix.dotnetverson}}
- name: Setup Python
dotnet-version: ${{matrix.dotnetversion}}

- if: ${{ matrix.language == 'java'}}
name: Setup Java
uses: actions/setup-java@v3
with:
cache: gradle
distribution: temurin
java-version: ${{matrix.javaversion}}

- if: ${{ matrix.language == 'python'}}
name: Setup Python
uses: actions/setup-python@v1
with:
python-version: ${{matrix.pythonversion}}

- name: Build SDK
run: make build_${{ matrix.language }}

- name: Check worktree clean
run: |
git update-index -q --refresh
Expand All @@ -106,37 +134,44 @@ jobs:
git diff
exit 1
fi
- if: ${{ matrix.language == 'python' && env.PUBLISH_PYPI == 'true' }}
name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: ${{ env.PYPI_USERNAME }}
password: ${{ env.PYPI_PASSWORD }}
packages_dir: ${{github.workspace}}/sdk/python/bin/dist

- if: ${{ matrix.language == 'nodejs' && env.PUBLISH_NPM == 'true' }}
uses: JS-DevTools/npm-publish@v1
with:
access: "public"
token: ${{ env.NPM_TOKEN }}
package: ${{github.workspace}}/sdk/nodejs/bin/package.json

- if: ${{ matrix.language == 'dotnet' && env.PUBLISH_NUGET == 'true' }}
name: publish nuget package
run: |
dotnet nuget push ${{github.workspace}}/sdk/dotnet/bin/Debug/*.nupkg -s ${{ env.NUGET_FEED_URL }} -k ${{ env.NUGET_PUBLISH_KEY }}
echo "done publishing packages"
strategy:
fail-fast: true
matrix:
dotnetversion:
- 3.1.301
- 6.0.x
goversion:
- 1.20.x
nodeversion:
- 16.x
pythonversion:
- "3.9"
# javaversion:
# - "11"
language:
- nodejs
- python
- dotnet
- go
nodeversion:
- 16.x
pythonversion:
- "3.9"
# - java
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ yarn.lock
**/pulumiManifest.go

ci-scripts
**/schema.go
provider/**/schema.go
provider/**/schema-embed.json
**/version.txt
**/nuget
Expand Down
25 changes: 21 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,27 @@ TESTPARALLELISM := 4

WORKING_DIR := $(shell pwd)

OS := $(shell uname)
EMPTY_TO_AVOID_SED := ""

.PHONY: development provider build_sdks build_nodejs build_dotnet build_go build_python cleanup
GO_MAJOR_VERSION := $(shell go version | cut -c 14- | cut -d' ' -f1 | cut -d'.' -f1)
GO_MINOR_VERSION := $(shell go version | cut -c 14- | cut -d' ' -f1 | cut -d'.' -f2)
####
# Defines the required Go version. This is a safeguard, because
# the (local) version must match the version specified in .github/workflows/release.yml
# otherwise publkishing the Go SDK of the provider will fail
REQUIRED_GO_MAJOR_VERSION := 1
REQUIRED_GO_MINOR_VERSION := 20
GO_VERSION_VALIDATION_ERR_MSG := Golang version $(REQUIRED_GO_MAJOR_VERSION).$(REQUIRED_GO_MINOR_VERSION) is required

.PHONY: development provider build_sdks build_nodejs build_dotnet build_go build_python cleanup validate_go_version

validate_go_version: ## Validates the installed version of go
@if [ $(GO_MAJOR_VERSION) -ne $(REQUIRED_GO_MAJOR_VERSION) ]; then \
echo '$(GO_VERSION_VALIDATION_ERR_MSG)';\
exit 1 ;\
fi
@if [ $(GO_MINOR_VERSION) -ne $(REQUIRED_GO_MINOR_VERSION) ]; then \
echo '$(GO_VERSION_VALIDATION_ERR_MSG)';\
exit 1 ;\
fi

development:: install_plugins provider lint_provider build_sdks install_sdks cleanup # Build the provider & SDKs for a development environment

Expand Down
Loading

0 comments on commit b95264e

Please sign in to comment.