Skip to content

Commit cd5e05f

Browse files
committed
Initial commit
0 parents  commit cd5e05f

23 files changed

+26743
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: 'Continuous Integration'
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
pull_request:
8+
9+
jobs:
10+
test:
11+
name: Test
12+
runs-on: ${{ matrix.os }}
13+
strategy:
14+
matrix:
15+
os: [ubuntu-latest, windows-latest, macos-latest]
16+
17+
steps:
18+
- name: Checkout
19+
uses: actions/checkout@v2
20+
21+
- name: Setup Node.js 12.x
22+
uses: actions/setup-node@v1
23+
with:
24+
node-version: '12.x'
25+
26+
- name: Install
27+
run: npm clean-install
28+
29+
- name: Verify
30+
if: runner.os == 'Linux'
31+
run: |
32+
npm run build
33+
# Fail if "npm run build" generated new changes in dist
34+
git update-index --refresh dist/* && git diff-index --quiet HEAD dist
35+
36+
- name: Test
37+
run: npm test

.github/workflows/data/local/main.tf

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
resource "null_resource" "null" {
2+
triggers = {
3+
value = "${timestamp()}"
4+
}
5+
}

.github/workflows/setup-terraform.yml

+261
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,261 @@
1+
name: 'Setup Terraform'
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
pull_request:
8+
9+
defaults:
10+
run:
11+
shell: bash
12+
13+
jobs:
14+
terraform-versions:
15+
name: 'Terraform Versions'
16+
runs-on: ${{ matrix.os }}
17+
strategy:
18+
matrix:
19+
os: [ubuntu-latest, windows-latest, macos-latest]
20+
terraform-versions: [0.11.14, 0.12.24]
21+
steps:
22+
- name: Checkout
23+
uses: actions/checkout@v2
24+
25+
- name: Setup Terraform - ${{ matrix['terraform-versions'] }}
26+
uses: ./
27+
with:
28+
terraform_version: ${{ matrix['terraform-versions'] }}
29+
30+
- name: Validate Teraform Version - ${{ matrix['terraform-versions'] }}
31+
run: terraform version | grep ${{ matrix['terraform-versions']}}
32+
33+
terraform-versions-no-wrapper:
34+
name: 'Terraform Versions No Wrapper'
35+
runs-on: ${{ matrix.os }}
36+
strategy:
37+
matrix:
38+
os: [ubuntu-latest, windows-latest, macos-latest]
39+
terraform-versions: [0.11.14, 0.12.24]
40+
steps:
41+
- name: Checkout
42+
uses: actions/checkout@v2
43+
44+
- name: Setup Terraform (no wrapper) - ${{ matrix['terraform-versions'] }}
45+
uses: ./
46+
with:
47+
terraform_version: ${{ matrix['terraform-versions'] }}
48+
terraform_wrapper: false
49+
50+
- name: Validate Teraform Version (no wrapper) - ${{ matrix['terraform-versions'] }}
51+
run: terraform version | grep ${{ matrix['terraform-versions']}}
52+
53+
terraform-credentials-cloud:
54+
name: 'Terraform Cloud Credentials'
55+
runs-on: ${{ matrix.os }}
56+
strategy:
57+
matrix:
58+
os: [ubuntu-latest, windows-latest, macos-latest]
59+
env:
60+
TF_CLOUD_API_TOKEN: 'XXXXXXXXXXXXXX.atlasv1.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
61+
steps:
62+
- name: Checkout
63+
uses: actions/checkout@v2
64+
65+
- name: Setup Terraform
66+
uses: ./
67+
with:
68+
cli_config_credentials_token: ${{ env.TF_CLOUD_API_TOKEN }}
69+
70+
- name: Validate Terraform Credentials (Windows)
71+
if: runner.os == 'Windows'
72+
run: |
73+
cat ${APPDATA}/terraform.rc | grep 'credentials "app.terraform.io"'
74+
cat ${APPDATA}/terraform.rc | grep 'token = "${{ env.TF_CLOUD_API_TOKEN }}"'
75+
76+
- name: Validate Teraform Credentials (Linux & macOS)
77+
if: runner.os != 'Windows'
78+
run: |
79+
cat ${HOME}/.terraformrc | grep 'credentials "app.terraform.io"'
80+
cat ${HOME}/.terraformrc | grep 'token = "${{ env.TF_CLOUD_API_TOKEN }}"'
81+
82+
terraform-credentials-enterprise:
83+
name: 'Terraform Enterprise Credentials'
84+
runs-on: ${{ matrix.os }}
85+
strategy:
86+
matrix:
87+
os: [ubuntu-latest, windows-latest, macos-latest]
88+
env:
89+
TF_CLOUD_API_TOKEN: 'XXXXXXXXXXXXXX.atlasv1.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
90+
steps:
91+
- name: Checkout
92+
uses: actions/checkout@v2
93+
94+
- name: Setup Terraform
95+
uses: ./
96+
with:
97+
cli_config_credentials_hostname: 'terraform.example.com'
98+
cli_config_credentials_token: ${{ env.TF_CLOUD_API_TOKEN }}
99+
100+
- name: Validate Terraform Credentials (Windows)
101+
if: runner.os == 'Windows'
102+
run: |
103+
cat ${APPDATA}/terraform.rc | grep 'credentials "terraform.example.com"'
104+
cat ${APPDATA}/terraform.rc | grep 'token = "${{ env.TF_CLOUD_API_TOKEN }}"'
105+
106+
- name: Validate Teraform Credentials (Linux & macOS)
107+
if: runner.os != 'Windows'
108+
run: |
109+
cat ${HOME}/.terraformrc | grep 'credentials "terraform.example.com"'
110+
cat ${HOME}/.terraformrc | grep 'token = "${{ env.TF_CLOUD_API_TOKEN }}"'
111+
112+
terraform-credentials-none:
113+
name: 'Terraform No Credentials'
114+
runs-on: ${{ matrix.os }}
115+
strategy:
116+
matrix:
117+
os: [ubuntu-latest, windows-latest, macos-latest]
118+
steps:
119+
- name: Checkout
120+
uses: actions/checkout@v2
121+
122+
- name: Setup Terraform
123+
uses: ./
124+
125+
- name: Validate Terraform Credentials (Windows)
126+
if: runner.os == 'Windows'
127+
run: |
128+
[[ -f ${APPDATA}/terraform.rc ]] || exit 0
129+
130+
- name: Validate Teraform Credentials (Linux & macOS)
131+
if: runner.os != 'Windows'
132+
run: |
133+
[[ -f ${HOME}/.terraformrc ]] || exit 0
134+
135+
terraform-arguments:
136+
name: 'Terraform Arguments'
137+
runs-on: ${{ matrix.os }}
138+
strategy:
139+
matrix:
140+
os: [ubuntu-latest, windows-latest, macos-latest]
141+
steps:
142+
- name: Checkout
143+
uses: actions/checkout@v2
144+
145+
- name: Setup Terraform
146+
uses: ./
147+
148+
- name: Check No Arguments
149+
run: terraform || exit 0
150+
151+
- name: Check Single Argument
152+
run: terraform help || exit 0
153+
154+
- name: Check Single Argument Hyphen
155+
run: terraform -help
156+
157+
- name: Check Single Argument Double Hyphen
158+
run: terraform --help
159+
160+
- name: Check Single Argument Subcommand
161+
run: terraform fmt -check
162+
163+
- name: Check Multiple Arguments Subcommand
164+
run: terraform fmt -check -list=true -no-color
165+
166+
terraform-arguments-no-wrapper:
167+
name: 'Terraform Arguments No Wrapper'
168+
runs-on: ${{ matrix.os }}
169+
strategy:
170+
matrix:
171+
os: [ubuntu-latest, windows-latest, macos-latest]
172+
steps:
173+
- name: Checkout
174+
uses: actions/checkout@v2
175+
176+
- name: Setup Terraform
177+
uses: ./
178+
with:
179+
terraform_wrapper: false
180+
181+
- name: Check No Arguments
182+
run: terraform || exit 0
183+
184+
- name: Check Single Argument
185+
run: terraform help || exit 0
186+
187+
- name: Check Single Argument Hyphen
188+
run: terraform -help
189+
190+
- name: Check Single Argument Double Hyphen
191+
run: terraform --help
192+
193+
- name: Check Single Argument Subcommand
194+
run: terraform fmt -check
195+
196+
- name: Check Multiple Arguments Subcommand
197+
run: terraform fmt -check -list=true -no-color
198+
199+
terraform-run-local:
200+
name: 'Terraform Run Local'
201+
runs-on: ${{ matrix.os }}
202+
strategy:
203+
matrix:
204+
os: [ubuntu-latest, windows-latest, macos-latest]
205+
defaults:
206+
run:
207+
working-directory: ./.github/workflows/data/local
208+
steps:
209+
- name: Checkout
210+
uses: actions/checkout@v2
211+
212+
- name: Setup Terraform
213+
uses: ./
214+
215+
- name: Terraform Init
216+
shell: bash
217+
run: terraform init
218+
219+
- name: Terraform Format
220+
shell: bash
221+
run: terraform fmt -check
222+
223+
- name: Terraform Plan
224+
id: plan
225+
shell: bash
226+
run: terraform plan
227+
228+
- name: Print Terraform Plan
229+
shell: bash
230+
run: echo "${{ steps.plan.outputs.stdout }}"
231+
232+
terraform-run-local-no-wrapper:
233+
name: 'Terraform Run Local No Wrapper'
234+
runs-on: ${{ matrix.os }}
235+
strategy:
236+
matrix:
237+
os: [ubuntu-latest, windows-latest, macos-latest]
238+
defaults:
239+
run:
240+
working-directory: ./.github/workflows/data/local
241+
steps:
242+
- name: Checkout
243+
uses: actions/checkout@v2
244+
245+
- name: Setup Terraform
246+
uses: ./
247+
with:
248+
terraform_wrapper: false
249+
250+
- name: Terraform Init
251+
shell: bash
252+
run: terraform init
253+
254+
- name: Terraform Format
255+
shell: bash
256+
run: terraform fmt -check
257+
258+
- name: Terraform Plan
259+
id: plan
260+
shell: bash
261+
run: terraform plan

.gitignore

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
node_modules/
2+
3+
# Editors
4+
.vscode
5+
6+
# Logs
7+
logs
8+
*.log
9+
npm-debug.log*
10+
yarn-debug.log*
11+
yarn-error.log*
12+
13+
# Runtime data
14+
pids
15+
*.pid
16+
*.seed
17+
*.pid.lock
18+
19+
# Directory for instrumented libs generated by jscoverage/JSCover
20+
lib-cov
21+
22+
# Coverage directory used by tools like istanbul
23+
coverage
24+
25+
# nyc test coverage
26+
.nyc_output
27+
28+
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
29+
.grunt
30+
31+
# Bower dependency directory (https://bower.io/)
32+
bower_components
33+
34+
# node-waf configuration
35+
.lock-wscript
36+
37+
# Compiled binary addons (https://nodejs.org/api/addons.html)
38+
build/Release
39+
40+
# Other Dependency directories
41+
jspm_packages/
42+
43+
# TypeScript v1 declaration files
44+
typings/
45+
46+
# Optional npm cache directory
47+
.npm
48+
49+
# Optional eslint cache
50+
.eslintcache
51+
52+
# Optional REPL history
53+
.node_repl_history
54+
55+
# Output of 'npm pack'
56+
*.tgz
57+
58+
# Yarn Integrity file
59+
.yarn-integrity
60+
61+
# dotenv environment variables file
62+
.env
63+
64+
# next.js build output
65+
.next
66+
67+
# ./wrapper/dist gets included in top-level ./dist
68+
wrapper/dist

CODE_OF_CONDUCT.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Code of Conduct
2+
3+
HashiCorp Community Guidelines apply to you when interacting with the community here on GitHub and contributing code.
4+
5+
Please read the full text at https://www.hashicorp.com/community-guidelines.

0 commit comments

Comments
 (0)