-
Notifications
You must be signed in to change notification settings - Fork 1
111 lines (89 loc) · 4.26 KB
/
create-environment.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
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
name: Create environment
on:
issues:
types: [ opened ]
workflow_dispatch:
permissions:
issues: write
contents: write
actions: write
jobs:
opened:
name: Create environment
runs-on: ubuntu-latest
container:
image: ghcr.io/xpiritbv/azure-sap-automation:github-workflow
if: contains(github.event.issue.labels.*.name, 'create-environment')
steps:
- name: Get app token
id: get_workflow_token
uses: peter-murray/workflow-application-token-action@v3
with:
application_id: ${{ secrets.APPLICATION_ID }}
application_private_key: ${{ secrets.APPLICATION_PRIVATE_KEY }}
organization: ${{ github.repository_owner }}
- name: Checkout
uses: actions/checkout@v4
with:
token: ${{ steps.get_workflow_token.outputs.token }}
- name: Run Issue form parser
id: parse
uses: peter-murray/issue-forms-body-parser@v4
with:
issue_id: ${{ github.event.issue.number }}
separator: '###'
label_marker_start: '' # U+200B - Zero Width Space; to make sure the UI stays clean
label_marker_end: '' # U+200B
- name: Create GitHub Environment
env:
GH_TOKEN: ${{ steps.get_workflow_token.outputs.token }}
run: |
json_input='${{ steps.parse.outputs.payload }}'
environment=$(echo ${json_input} | jq -r '."Environment"')
region=$(echo ${json_input} | jq -r '."Region"')
deployer_vnet=$(echo ${json_input} | jq -r '."Deployer Vnet"')
pushd /source/deploy/terraform/terraform-units/modules/sap_namegenerator
region_map=$(echo var.region_mapping.${region} | terraform console | tr -d '"')
popd
echo region_map: $region_map
echo region: $region
deployer_name=${environment}-${region_map}-${deployer_vnet}-INFRASTRUCTURE
library_name=${environment}-${region_map}-SAP_LIBRARY
url_to_call=/repos/${{ github.repository }}/environments/${deployer_name^^}
_=$(gh api \
-X PUT \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
${url_to_call})
mkdir -p WORKSPACES/DEPLOYER/${deployer_name^^}
mkdir -p WORKSPACES/LIBRARY/${library_name^^}
cat .cfg_template/deployer.tfvars \
| sed "s|@@ENV@@|${environment}|g" \
| sed "s|@@REGION@@|${region}|g" \
| sed "s|@@VNET@@|${deployer_vnet}|g" \
| sed "s|@@REGION_DISPLAY_NAME@@|${region}|g" \
> WORKSPACES/DEPLOYER/${deployer_name^^}/${deployer_name^^}.tfvars
cat .cfg_template/library.tfvars \
| sed "s|@@ENV@@|${environment}|g" \
| sed "s|@@REGION@@|${region}|g" \
> WORKSPACES/LIBRARY/${library_name^^}/${library_name^^}.tfvars
# Update the environment in the issue-closed workflow
workspace=$(ls ${GITHUB_WORKSPACE}/WORKSPACES|tail -n 1)
yq -i '.jobs.link-azure.environment = "'${deployer_name^^}'"' .github/workflows/issue-closed.yaml
git config --global --add safe.directory ${GITHUB_WORKSPACE}
git config --global user.name "GitHub Actions"
git config --global user.email "[email protected]"
git add WORKSPACES
git add .github/workflows/issue-closed.yaml
git commit -m "Add configuration for ${environment} in ${region}"
git push
# Now update the deployment workflow with the deployer and library
.github/workflows/scripts/update-workflow-on-workspaces-changes.sh
- name: Close issue
run: |
new_issue=$(cat .github/workflows/templates/link-azure.tpl | sed "s|@@REPO@@|${{ github.server_url }}/${{ github.repository }}|g" | \
gh issue create -t "Link Azure to GitHub" -F - -l link-azure)
gh issue close ${{ github.event.issue.number }}
gh issue comment ${{ github.event.issue.number }} --body "Environment created. The only thing left is add the information required to connect to Azure. I created a [new issue for you to fill in the required information](${new_issue})."
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}