forked from chainguard-dev/actions
-
Notifications
You must be signed in to change notification settings - Fork 0
/
action.yaml
45 lines (37 loc) · 1.77 KB
/
action.yaml
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
# Copyright 2022 Chainguard, Inc.
# SPDX-License-Identifier: Apache-2.0
name: 'Extract Terraform Diagnostics'
description: |
This action extracts terraform diagnostics from the
structured JSON output of a terraform apply.
inputs:
json-file:
description: |
The path to the JSON output of a terraform apply
required: true
outputs:
errors:
description: |
A markdown summary of the errors contained within the terraform output.
value: ${{ steps.extract-errors.outputs.errors }}
runs:
using: "composite"
steps:
- name: Extract Warnings
shell: bash
run: |
jq -r 'select(.["@level"]=="warn") | ("::group::" + .diagnostic.address + ": " + .diagnostic.summary + "\n" + .diagnostic.detail + "\n::endgroup::")' '${{ inputs.json-file }}' || true
# We don't surface warnings via ::warning:: because the way we handle signing presubmit would make this to noisy.
- name: Extract Errors
id: extract-errors
shell: bash
run: |
jq -r 'select(.["@level"]=="error") | ("::group::" + .diagnostic.address + ": " + .diagnostic.summary + "\n" + .diagnostic.detail + "\n::endgroup::")' '${{ inputs.json-file }}' || true
jq -r 'select(.["@level"]=="error") | ("::error file=" + .diagnostic.range.filename + ",line=" + (.diagnostic.range.start.line | tostring) + ",endLine=" + (.diagnostic.range.end.line | tostring) + ",title=" + .diagnostic.summary + "::" + .diagnostic.address)' '${{ inputs.json-file }}' || true
export MARKDOWN="$(jq -r 'select(.["@level"]=="error") | "`" + .diagnostic.address + "`: " + .diagnostic.summary + "\n"' '${{ inputs.json-file }}')"
echo "${MARKDOWN}"
cat >> "${GITHUB_OUTPUT}" <<EOOUTPUT
errors<<EOERRORS
${MARKDOWN}
EOERRORS
EOOUTPUT