-
Notifications
You must be signed in to change notification settings - Fork 5
145 lines (141 loc) · 4.49 KB
/
main.yml
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
env:
AWS_REGION: us-west-2
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
PULUMI_API: https://api.pulumi-staging.io
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
jobs:
lint:
name: Run lint
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4
- name: lint
uses: ./.github/actions/lint
build:
name: Build and Test
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4
- name: build
uses: ./.github/actions/build
test:
# Only run tests on the schedule event
# On 'push' we've just merged a PR that ran the tests
if: github.event_name == 'schedule'
name: acceptance-test
concurrency:
group: acceptance-test-${{ matrix.index }} # TODO: concurrent tests across PRs can cause problems
cancel-in-progress: false
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4
# Needed for pulumictl to calculate version
- name: Unshallow clone for tags
run: git fetch --prune --unshallow --tags
- name: Install pulumictl
uses: jaxxstorm/[email protected]
with:
repo: pulumi/pulumictl
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-region: ${{ env.AWS_REGION }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
role-duration-seconds: 3600
role-session-name: ${{ env.PROVIDER }}@githubActions
role-to-assume: ${{ secrets.AWS_CI_ROLE_ARN }}
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 18.x
registry-url: https://registry.npmjs.org
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: 1.22.x
cache-dependency-path: examples/*.sum
- name: Install Yarn
run: curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.13.0
- name: Install packages
run: yarn install --frozen-lockfile
- name: Run build
run: yarn run set-version && yarn run build
- name: yarn link
run: yarn link
- name: set script-shell
run: yarn config set script-shell /bin/bash
- name: Install gotestsum
run: go install gotest.tools/gotestsum@latest
- name: Go mod download
run: cd examples && go mod download
- name: Generate go test Slice
id: test_split
uses: hashicorp-forge/[email protected]
with:
working-directory: examples
total: ${{ matrix.parallel }}
index: ${{ matrix.index }}
- name: Run examples
run: cd examples && gotestsum --format github-actions -- -v -count=1 -timeout 2h -parallel 4 -run "${{ steps.test_split.outputs.run }}"
strategy:
fail-fast: false
matrix:
parallel: [3]
index: [0, 1, 2]
release:
if: github.event_name == 'push'
name: Release
runs-on: ubuntu-latest
needs:
- build
- lint
steps:
- name: Checkout Repo
uses: actions/checkout@v4
# Needed for pulumictl to calculate version
- name: Unshallow clone for tags
run: git fetch --prune --unshallow --tags
- name: Install pulumictl
uses: jaxxstorm/[email protected]
with:
repo: pulumi/pulumictl
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 18.x
registry-url: https://registry.npmjs.org
- name: Install Yarn
run: curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.13.0
- name: Install packages
run: yarn install --frozen-lockfile
- name: Run build
run: yarn run set-version && yarn run build
- if: github.event_name == 'push'
name: Publish Dev Package
uses: JS-DevTools/npm-publish@v1
with:
access: "public"
token: ${{ secrets.NPM_TOKEN }}
package: ${{github.workspace}}/package.json
tag: dev
check-version: true
name: main
"on":
schedule:
- cron: '0 7 * * *'
push:
branches:
- main
paths-ignore:
- CHANGELOG.md
tags-ignore:
- v*
- sdk/*
- '**'