-
Notifications
You must be signed in to change notification settings - Fork 9.3k
125 lines (119 loc) · 4.13 KB
/
post_publish.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
name: Post Publish
on:
workflow_dispatch:
inputs:
release-tag:
type: string
description: 'Semver release tag e.g. v1.1.0'
required: true
workflow_run:
workflows: [Release]
types:
- completed
jobs:
on-success-or-workflow-dispatch:
runs-on: ubuntu-latest
if: github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch'
outputs:
release-tag: ${{ steps.release-tag.outputs.tag }}
steps:
- if: github.event_name == 'workflow_run'
name: Download Artifact from Release workflow
uses: dawidd6/action-download-artifact@bf251b5aa9c2f7eeb574a96ee720e24f801b7c11 # v6
with:
workflow: release.yml
name: release-tag
- name: Output Release Tag
id: release-tag
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
echo "tag=${{ github.event.inputs.release-tag }}" >> "$GITHUB_OUTPUT"
else
value=`cat release-tag.data`
echo "tag=$value" >> "$GITHUB_OUTPUT"
fi
tidy-jira:
needs: [on-success-or-workflow-dispatch]
runs-on: ubuntu-latest
steps:
- name: Tidy Jira
uses: breathingdust/github-jira-tidy@b503407f09af5564fd806924bdf4495510d848b6 # v0.10.0
with:
jira_host: 'hashicorp.atlassian.net'
jira_username: 'sdavis@hashicorp.com'
jira_password: ${{ secrets.jira_password }}
jira_jql_filter: ${{ secrets.jira_jql_filter }}
jira_github_url_field_id: 'cf[10089]'
github_release_name: ${{ needs.on-success-or-workflow-dispatch.outputs.release-tag }}
github_token: ${{ secrets.GITHUB_TOKEN }}
on-failure:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
steps:
- run: echo 'The triggering workflow failed'
registry-check:
runs-on: ubuntu-latest
needs: [on-success-or-workflow-dispatch]
outputs:
latest-version: ${{ steps.registry_latest_ver.outputs.current }}
steps:
- name: Registry Version Check
id: registry_latest_ver
shell: bash
run: |
for i in 1 2
do
LATEST_VERSION=$(curl -s "https://registry.terraform.io/v2/providers/323/provider-versions/latest" | jq -r '.data.attributes.version')
if [[ "${{ needs.on-success-or-workflow-dispatch.outputs.release-tag }}" != "v${LATEST_VERSION}" ]]; then
sleep 1h
else
echo "Registry and Github Version matches"
echo "current=$LATEST_VERSION" >> "$GITHUB_OUTPUT"
fi
done
echo "Registry does not contain ${{ needs.on-success-or-workflow-dispatch.outputs.release-tag }}"
exit 1
os-version-init:
name: Run terraform init On Supported Platforms
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
runs-on: ${{ matrix.os }}
needs: [registry-check]
steps:
- name: Specify Provider Version in TF Configuration
run: |
cat <<EOF > main.tf
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = ${{ needs.registry-check.outputs.latest-version }}
}
}
}
provider "aws" {
region = "us-east-1"
}
EOF
- name: Initialize the AWS Provider
run: terraform init -upgrade
- name: Send Slack Notification Upon Failure
if: ${{ failure() }}
uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0
with:
method: chat.postMessage
token: ${{ secrets.SLACK_BOT_TOKEN }}
payload: |
{
"channel" : "${{ secrets.SLACK_CHANNEL }}",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "ERROR: Registry Provder Initiation Failure on ${{ matrix.os }}"
}
}
]
}