generated from cloudposse-github-actions/composite-template
-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathREADME.yaml
208 lines (180 loc) · 8.48 KB
/
README.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
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
---
#
# This is the canonical configuration for the `README.md`
# Run `make readme` to rebuild the `README.md`
#
# Name of this project
name: github-action-kubernetes-environment
# Tags of this project
tags:
- github-action
# Logo for this project
#logo: docs/logo.png
# License of this project
license: "APACHE2"
# Canonical GitHub repo
github_repo: cloudposse/github-action-kubernetes-environment
# Badges to display
badges:
- name: "Latest Release"
image: "https://img.shields.io/github/release/cloudposse/github-action-kubernetes-environment.svg"
url: "https://github.com/cloudposse/github-action-kubernetes-environment/releases/latest"
- name: "Slack Community"
image: "https://slack.cloudposse.com/badge.svg"
url: "https://slack.cloudposse.com"
related: []
# Short description of this project
description: This repository wraps the environment information action, allowing it to be used as a replacement in support of various string functions and namespace standardization.
introduction: |-
We often find when deploying with various environments that we need to standardize the namespace names. This repository wraps the environment information action, allowing it to be used as a replacement in support of various string functions and namespace standardization.
With this action, you can use pipe functions to standardize the namespace names, for example, to lowercase, or to replace a dash with an underscore you can use ` | kebabcase` or `| toLower`
references:
- name: "github-actions-workflows"
description: "Reusable workflows for different types of projects"
url: "https://github.com/cloudposse/github-actions-workflows"
- name: "example-github-action-release-workflow"
description: "Example application with complicated release workflow"
url: "https://github.com/cloudposse/example-github-action-release-workflow"
# How to use this project
usage: |-
To use this action, you'll want to create a workflow and argocd repository.
This action is intended to replace cloudposse/github-action-yaml-config-query by wrapping it with helper actions.
With this action your `config` input can have several helper functions.
* `reformat` this replaces the namespace with a flavor of your choice. this is a key added to an environments configuration. See snipped below for example
* `branch-name` will use the branch name as the namespace
* `pr-number` will use the PR number as the namespace
* `| functions`: you can now perform simple string operations on keys in your environment configuration. This can help prevent dns invalid characters from becoming your namespace based on the branch name.
* `| kebabcase` will convert the string to kebabcase (alternatively you can use `| toKebab` or `| kebab`)
* `| lowercase` will convert the string to lowercase (alternatively you can use `| toLower` or `| lower`)
* `| uppercase` will convert the string to uppercase (alternatively you can use `| toUpper` or `| upper`) Though this is perhaps less helpful as it is not valid in kubernetes nor dns.
```yaml
- name: Environment info
# We recommend pinning this action to a specific release or version range to ensure stability
uses: cloudposse/github-action-kubernetes-environment@main
id: result
with:
environment: ${{ inputs.environment }}
namespace: ${{ inputs.namespace }}
application: ${{ inputs.application }}
config: |
preview:
cluster: https://github.com/cloudposse/argocd-repo/blob/main/plat/ue2-dev/apps
cluster-role: arn:aws:iam::123456789012:role/my-gha-cluster-role
namespace: ${{ inputs.namespace }}
reformat: branch-name # reformats namespace to be branch name as kebabcase, alternatively use `pr-number` here for `pr-123` as your namespace
ssm-path: platform/dev-cluster
qa1:
cluster: https://github.com/cloudposse/argocd-repo/blob/main/plat/ue2-staging/apps
cluster-role: arn:aws:iam::123456789012:role/my-gha-cluster-role
namespace: QA1/MY-APP | kebabcase
# output namespace will become qa1-my-app
ssm-path: platform/staging-cluster
```
* To get custom key value pairs you can query the selected environment with a follow up step:
```yaml
- name: Environment info
uses: cloudposse/[email protected]
id: environment-info
with:
query: .
config: ${{ steps.result.outputs.environment-config }}
```
<details><summary> Full Workflow example:</summary>
```yaml
name: 'Environments - ArgoCD'
description: 'Get information about environment'
inputs:
environment:
description: "Environment name"
required: true
application:
description: "The application name"
required: false
namespace:
description: "Namespace name"
required: true
outputs:
name:
description: "Environment name"
value: ${{ inputs.environment }}
region:
description: "Default AWS Region"
value: us-east-2
role:
description: "Environments that need to be deployed"
value: ${{ steps.result.outputs.role }}
cluster:
description: "Environments that need to be destroyed"
value: ${{ steps.result.outputs.cluster }}
namespace:
description: "Namespace"
value: ${{ steps.result.outputs.namespace }}
ssm-path:
description: "Path to ssm secrets"
value: ${{ steps.result.outputs.ssm-path }}
runs:
using: "composite"
steps:
- name: Environment info
# We recommend pinning this action to a specific release or version range to ensure stability
uses: cloudposse/github-action-kubernetes-environment@main
id: result
with:
environment: ${{ inputs.environment }}
namespace: ${{ inputs.namespace }}
application: ${{ inputs.application }}
config: |
preview:
cluster: https://github.com/cloudposse/argocd-repo/blob/main/plat/ue2-dev/apps
cluster-role: arn:aws:iam::123456789012:role/my-gha-cluster-role
namespace: ${{ inputs.namespace }}
ssm-path: platform/dev-cluster
reformat: branch-name
qa1:
cluster: https://github.com/cloudposse/argocd-repo/blob/main/plat/ue2-staging/apps
cluster-role: arn:aws:iam::123456789012:role/my-gha-cluster-role
namespace: qa1
ssm-path: platform/staging-cluster
qa2:
cluster: https://github.com/cloudposse/argocd-repo/blob/main/plat/ue2-staging/apps
cluster-role: arn:aws:iam::123456789012:role/my-gha-cluster-role
namespace: qa2
ssm-path: platform/staging-cluster
qa3:
cluster: https://github.com/cloudposse/argocd-repo/blob/main/plat/ue2-staging/apps
cluster-role: arn:aws:iam::123456789012:role/my-gha-cluster-role
namespace: qa3
ssm-path: platform/staging-cluster
qa4:
cluster: https://github.com/cloudposse/argocd-repo/blob/main/plat/ue2-staging/apps
cluster-role: arn:aws:iam::123456789012:role/my-gha-cluster-role
namespace: qa4
ssm-path: platform/staging-cluster
production:
cluster: https://github.com/athoteldev/argocd-deploy-prod/blob/main/plat/ue2-prod/apps
cluster-role: arn:aws:iam::123456789012:role/my-gha-cluster-role
namespace: production
ssm-path: platform/prod-cluster
staging:
cluster: https://github.com/cloudposse/argocd-repo/blob/main/plat/ue2-staging/apps
cluster-role: arn:aws:iam::123456789012:role/my-gha-cluster-role
namespace: staging
ssm-path: platform/staging-cluster
sandbox:
cluster: https://github.com/cloudposse/argocd-repo/blob/main/plat/ue2-sandbox/apps
cluster-role: arn:aws:iam::123456789012:role/my-gha-cluster-role
namespace: sandbox
ssm-path: platform/sandbox-cluster
dev:
cluster: https://github.com/cloudposse/argocd-repo/blob/main/plat/ue2-dev/apps
cluster-role: arn:aws:iam::123456789012:role/my-gha-cluster-role
namespace: dev
ssm-path: platform/dev-cluster
```
</details>
include:
- "docs/github-action.md"
# Contributors to this project
contributors:
- name: "Benjamin Smith"
github: "benbentwo"