mirror of https://github.com/pulumi/pulumi.git
303 lines
9.9 KiB
YAML
303 lines
9.9 KiB
YAML
on:
|
|
workflow_dispatch: {}
|
|
push:
|
|
branches: ["master", "feature/**", "feature-**"]
|
|
paths-ignore:
|
|
- "CHANGELOG.md"
|
|
- "CHANGELOG_PENDING.md"
|
|
- "README.md"
|
|
|
|
env:
|
|
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_PROD_ACCESS_TOKEN }}
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
PULUMI_TEST_OWNER: "moolumi"
|
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }}
|
|
PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
|
|
TRAVIS_PUBLISH_PACKAGES: true
|
|
PYTHON: python
|
|
DOTNET_CLI_TELEMETRY_OPTOUT: "true"
|
|
|
|
jobs:
|
|
publish-sdks:
|
|
name: Publish SDKs
|
|
runs-on: ubuntu-latest
|
|
needs: publish-binaries
|
|
strategy:
|
|
matrix:
|
|
go-version: [1.17.x]
|
|
python-version: [3.9.x]
|
|
dotnet-version: [3.1.x]
|
|
node-version: [14.x]
|
|
language: ["nodejs", "python", "dotnet"]
|
|
steps:
|
|
- name: Checkout Repo
|
|
uses: actions/checkout@v2
|
|
- name: Set up Go ${{ matrix.go-version }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
check-latest: true
|
|
- id: go-cache-paths
|
|
run: |
|
|
echo "::set-output name=go-build::$(go env GOCACHE)"
|
|
echo "::set-output name=go-mod::$(go env GOMODCACHE)"
|
|
- name: Go Cache
|
|
uses: actions/cache@v2
|
|
id: go-cache
|
|
if: ${{ runner.os != 'Windows' }} # Note [Windows Go Cache] in build.yml
|
|
with:
|
|
path: |
|
|
${{ steps.go-cache-paths.outputs.go-build }}
|
|
${{ steps.go-cache-paths.outputs.go-mod }}
|
|
key: ${{ runner.os }}-go-cache-${{ hashFiles('*/go.sum') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-go-
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: actions/setup-python@v3
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
cache: pip
|
|
cache-dependency-path: sdk/python/requirements.txt
|
|
- name: Set up DotNet ${{ matrix.dotnet-version }}
|
|
uses: actions/setup-dotnet@v1
|
|
with:
|
|
dotnet-version: ${{ matrix.dotnet-version }}
|
|
- name: Set up Node ${{ matrix.node-version }}
|
|
uses: actions/setup-node@v2
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
cache: yarn
|
|
cache-dependency-path: sdk/nodejs/package.json
|
|
registry-url: https://registry.npmjs.org
|
|
always-auth: true
|
|
- name: Install Python deps
|
|
run: |
|
|
python -m pip install --upgrade pip requests wheel urllib3 chardet twine
|
|
- name: Install pulumictl
|
|
uses: jaxxstorm/action-install-gh-release@v1.7.1
|
|
with:
|
|
repo: pulumi/pulumictl
|
|
tag: v0.0.31
|
|
cache: enable
|
|
- name: Fetch Tags
|
|
run: |
|
|
git fetch --quiet --prune --unshallow --tags
|
|
- name: Update path
|
|
run: |
|
|
echo "${{ runner.temp }}/opt/pulumi/bin" >> $GITHUB_PATH
|
|
- name: Set Go Dep path
|
|
run: |
|
|
echo "PULUMI_GO_DEP_ROOT=$(dirname $(pwd))" >> $GITHUB_ENV
|
|
- name: Ensure
|
|
run: |
|
|
make ensure
|
|
- run: git status
|
|
- name: Publish Packages
|
|
env:
|
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
run: |
|
|
make -C sdk/${{ matrix.language}} publish
|
|
|
|
publish-binaries:
|
|
name: Publish Binaries
|
|
uses: ./.github/workflows/publish-binaries.yml
|
|
needs: [lint, language-sdk-lint, build, test-linux, test-windows, test-macos, versions]
|
|
with:
|
|
goreleaser-config: .goreleaser.prerelease.yml
|
|
goreleaser-flags: -p 3 --skip-validate
|
|
secrets:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
AWS_UPLOAD_ROLE_ARN: ${{ secrets.AWS_UPLOAD_ROLE_ARN }}
|
|
INPUT_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
|
|
|
|
# examples_smoke_test:
|
|
# name: Trigger Examples Smoke Test
|
|
# runs-on: ubuntu-latest
|
|
# needs: publish-sdks
|
|
# steps:
|
|
# - name: Checkout Repo
|
|
# uses: actions/checkout@v2
|
|
# - name: Install pulumictl
|
|
# uses: jaxxstorm/action-install-gh-release@v1.7.1
|
|
# with:
|
|
# repo: pulumi/pulumictl
|
|
# tag: v0.0.31
|
|
# cache: enable
|
|
# - name: Repository Dispatch
|
|
# run: |
|
|
# pulumictl dispatch -r pulumi/examples -c smoke-test-cli $(pulumictl get version --language generic -o)
|
|
# env:
|
|
# GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN}}
|
|
lint:
|
|
# See https://github.com/pulumi/pulumi/issues/9280 for why this is set to v1.44
|
|
container: golangci/golangci-lint:v1.44
|
|
name: Lint ${{ matrix.directory }}
|
|
strategy:
|
|
matrix:
|
|
directory: [sdk, pkg, tests]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Repo
|
|
uses: actions/checkout@v2
|
|
- name: Lint ${{ matrix.directory }}
|
|
run: |
|
|
cd ${{ matrix.directory }} && golangci-lint run -c ../.golangci.yml
|
|
language-sdk-lint:
|
|
name: Lint Language SDKs
|
|
strategy:
|
|
matrix:
|
|
go-version: [1.17.x]
|
|
python-version: [3.9.x]
|
|
dotnet-version: [3.1.x]
|
|
node-version: [14.x]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Repo
|
|
uses: actions/checkout@v2
|
|
- name: Set up Go ${{ matrix.go-version }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
check-latest: true
|
|
- id: go-cache-paths
|
|
run: |
|
|
echo "::set-output name=go-build::$(go env GOCACHE)"
|
|
echo "::set-output name=go-mod::$(go env GOMODCACHE)"
|
|
- name: Go Cache
|
|
uses: actions/cache@v2
|
|
id: go-cache
|
|
if: ${{ runner.os != 'Windows' }} # Note [Windows Go Cache] in build.yml
|
|
with:
|
|
path: |
|
|
${{ steps.go-cache-paths.outputs.go-build }}
|
|
${{ steps.go-cache-paths.outputs.go-mod }}
|
|
key: ${{ runner.os }}-go-cache-${{ hashFiles('*/go.sum') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-go-
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: actions/setup-python@v3
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
cache: pip
|
|
cache-dependency-path: sdk/python/requirements.txt
|
|
- name: Set up DotNet ${{ matrix.dotnet-version }}
|
|
uses: actions/setup-dotnet@v1
|
|
with:
|
|
dotnet-version: ${{ matrix.dotnet-version }}
|
|
- run: mkdir -p ${{ runner.temp }}/opt/pulumi/nuget
|
|
- name: Add NuGet packages as a local NuGet source
|
|
run: |
|
|
echo $(which dotnet)
|
|
echo $(dotnet --version)
|
|
dotnet nuget add source ${{ runner.temp }}/opt/pulumi/nuget
|
|
- name: Set up Node ${{ matrix.node-version }}
|
|
uses: actions/setup-node@v2
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
cache: yarn
|
|
cache-dependency-path: sdk/nodejs/package.json
|
|
- name: Install Python deps
|
|
run: |
|
|
python -m pip install --upgrade pip requests wheel urllib3 chardet
|
|
- name: Setup git
|
|
run: |
|
|
git config --global user.email "you@example.com"
|
|
git config --global user.name "Your Name"
|
|
- name: Update path
|
|
run: |
|
|
echo "${{ runner.temp }}/opt/pulumi/bin" >> $GITHUB_PATH
|
|
- name: Fetch Tags
|
|
run: |
|
|
git fetch --quiet --prune --unshallow --tags
|
|
- name: Set Go Dep path
|
|
run: |
|
|
echo "PULUMI_GO_DEP_ROOT=$(dirname $(pwd))" >> $GITHUB_ENV
|
|
- name: Install pulumictl
|
|
uses: jaxxstorm/action-install-gh-release@v1.7.1
|
|
with:
|
|
repo: pulumi/pulumictl
|
|
tag: v0.0.31
|
|
cache: enable
|
|
- name: Ensure
|
|
run: |
|
|
make ensure
|
|
- name: Lint Node
|
|
run: |
|
|
cd sdk/nodejs && make lint
|
|
- name: Lint Python
|
|
run: |
|
|
cd sdk/python && make lint
|
|
- name: Lint .NET
|
|
run: |
|
|
cd sdk/dotnet && make lint
|
|
versions:
|
|
name: Versions
|
|
uses: ./.github/workflows/versions.yml
|
|
build:
|
|
name: Build
|
|
uses: ./.github/workflows/build.yml
|
|
needs: versions
|
|
with:
|
|
enable-coverage: true
|
|
goreleaser-flags: -p 3 --skip-validate
|
|
test-linux:
|
|
name: Test Linux
|
|
needs: build
|
|
uses: ./.github/workflows/test.yml
|
|
with:
|
|
enable-coverage: true
|
|
platform: ubuntu-latest
|
|
secrets:
|
|
pulumi-access-token: ${{ secrets.PULUMI_PROD_ACCESS_TOKEN }}
|
|
test-macos:
|
|
name: Test MacOS
|
|
needs: build
|
|
uses: ./.github/workflows/test-fast.yml
|
|
with:
|
|
enable-coverage: true
|
|
platform: macos-latest
|
|
secrets:
|
|
pulumi-access-token: ${{ secrets.PULUMI_PROD_ACCESS_TOKEN }}
|
|
test-windows:
|
|
name: Test Windows
|
|
needs: build
|
|
uses: ./.github/workflows/test-fast.yml
|
|
with:
|
|
enable-coverage: true
|
|
platform: windows-latest
|
|
secrets:
|
|
pulumi-access-token: ${{ secrets.PULUMI_PROD_ACCESS_TOKEN }}
|
|
dispatch-docker-containers-ci-build:
|
|
name: Trigger Docker containers CI build
|
|
needs: [publish-binaries, publish-sdks, versions]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Install pulumictl
|
|
uses: jaxxstorm/action-install-gh-release@v1.7.1
|
|
with:
|
|
repo: pulumi/pulumictl
|
|
tag: v0.0.31
|
|
cache: enable
|
|
- name: Checkout Repo
|
|
uses: actions/checkout@v2
|
|
- name: Fetch Tags
|
|
run: |
|
|
git fetch --quiet --prune --unshallow --tags
|
|
- name: Download versions.txt
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: versions.txt
|
|
path: versions
|
|
- name: Setup versioning env vars
|
|
run: |
|
|
cat versions/versions.txt | tee $GITHUB_ENV
|
|
rm -rf versions
|
|
- name: Run Container Tests
|
|
run: pulumictl dispatch -r pulumi/pulumi-docker-containers -c ci-build $GENERIC_VERSION
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }}
|