11
22<!-- markdownlint-disable -->
3- # example- github-action-composite [ ![ Latest Release] ( https://img.shields.io/github/release/cloudposse/example- github-action-composite .svg )] ( https://github.com/cloudposse/example- github-action-composite /releases/latest ) [ ![ Slack Community] ( https://slack.cloudposse.com/badge.svg )] ( https://slack.cloudposse.com )
3+ # github-action-yaml-config-query [ ![ Latest Release] ( https://img.shields.io/github/release/cloudposse/github-action-yaml-config-query .svg )] ( https://github.com/cloudposse/github-action-yaml-config-query /releases/latest ) [ ![ Slack Community] ( https://slack.cloudposse.com/badge.svg )] ( https://slack.cloudposse.com )
44<!-- markdownlint-restore -->
55
66[ ![ README Header] [ readme_header_img ]] [ readme_header_link ]
2828
2929-->
3030
31- Template repository of composite GitHub Action
31+ Define YAML document, filter it with JSON query and get result as JSON string
3232
3333---
3434
@@ -58,8 +58,11 @@ It's 100% Open Source and licensed under the [APACHE2](LICENSE).
5858
5959## Introduction
6060
61- This is template repository to create composite GitHub Actions.
62- Feel free to use it as reference and starting point.
61+ Utility action allow to declare YAML structured document as an input and get it's part as the action outputs
62+ referenced using JQ.
63+
64+ This action is useful in simplifing complext GitHub action workflows in different ways.
65+ For examples follow [ usage] ( #usage ) section.
6366
6467
6568
@@ -69,6 +72,7 @@ Feel free to use it as reference and starting point.
6972
7073
7174
75+ ### Define constants
7276``` yaml
7377 name : Pull Request
7478 on :
@@ -77,17 +81,117 @@ Feel free to use it as reference and starting point.
7781 types : [opened, synchronize, reopened, closed, labeled, unlabeled]
7882
7983 jobs :
80- context :
84+ demo :
85+ runs-on : ubuntu-latest
86+ steps :
87+ - name : Context
88+ id : context
89+ uses : cloudposse/github-action-yaml-config-query@main
90+ with :
91+ config : |
92+ image: acme/example
93+ tag: sha-${{ github.sha }}
94+
95+ - run : |
96+ docker run ${{ steps.context.outputs.image }}:${{ steps.context.outputs.tag }}
97+ ` ` `
98+
99+ ### Implement if/else
100+ ` ` ` yaml
101+ name : Promote
102+ on :
103+ workflow_call :
104+ inputs :
105+ from :
106+ required : false
107+ type : string
108+
109+ jobs :
110+ demo :
81111 runs-on : ubuntu-latest
82112 steps :
83- - name : Example action
84- uses : cloudposse/example-github-action-composite@main
85- id : example
113+ - name : Context
114+ id : from
115+ uses : cloudposse/github-action-yaml-config-query@main
86116 with :
87- param1 : true
117+ query : .${{ inputs.from == '' }}
118+ config : |-
119+ true:
120+ tag: ${{ github.sha }}
121+ false:
122+ tag: ${{ inputs.from }}
123+
124+ - run : |
125+ docker tag acme/example:${{ steps.context.outputs.tag }}
126+ ` ` `
88127
128+ ### Implement switch
129+ ` ` ` yaml
130+ name : Build
131+ on :
132+ pull_request :
133+ branches : [ 'main' ]
134+ types : [opened, synchronize, reopened]
135+ push :
136+ branches : [ main ]
137+ release :
138+ types : [published]
139+
140+ jobs :
141+ context :
142+ runs-on : ubuntu-latest
143+ steps :
144+ - name : Context
145+ id : controller
146+ uses : cloudposse/github-action-yaml-config-query@main
147+ with :
148+ query : .${{ github.event_name }}
149+ config : |-
150+ pull_request:
151+ build: true
152+ promote: false
153+ test: true
154+ deploy: ["preview"]
155+ push:
156+ build: true
157+ promote: false
158+ test: true
159+ deploy: ["dev"]
160+ release:
161+ build: false
162+ promote: true
163+ test: false
164+ deploy: ["staging", "production"]
89165 outputs :
90- result : ${{ steps.example.outputs.result1 }}
166+ build : ${{ steps.controlle.outputs.build }}
167+ promote : ${{ steps.controlle.outputs.promote }}
168+ test : ${{ steps.controlle.outputs.test }}
169+ deploy : ${{ steps.controlle.outputs.deploy }}
170+
171+ build :
172+ needs : [context]
173+ if : ${{ needs.context.outputs.build }}
174+ uses : ./.github/workflows/reusable-build.yaml
175+
176+ test :
177+ needs : [context, test]
178+ if : ${{ needs.context.outputs.test }}
179+ uses : ./.github/workflows/reusable-test.yaml
180+
181+ promote :
182+ needs : [context]
183+ if : ${{ needs.context.outputs.promote }}
184+ uses : ./.github/workflows/reusable-promote.yaml
185+
186+ deploy :
187+ needs : [context]
188+ if : ${{ needs.context.outputs.deploy != '[]' }}
189+ strategy :
190+ matrix :
191+ environment : ${{ fromJson(needs.context.outputs.deploy) }}
192+ uses : ./.github/workflows/reusable-deploy.yaml
193+ with :
194+ environment : ${{ matrix.environment }}
91195` ` `
92196
93197
@@ -111,7 +215,7 @@ Feel free to use it as reference and starting point.
111215
112216## Share the Love
113217
114- Like this project? Please give it a ★ on [our GitHub](https://github.com/cloudposse/example- github-action-composite )! (it helps us **a lot**)
218+ Like this project? Please give it a ★ on [our GitHub](https://github.com/cloudposse/github-action-yaml-config-query )! (it helps us **a lot**)
115219
116220Are you using this project or any of our other projects? Consider [leaving a testimonial][testimonial]. =)
117221
@@ -135,7 +239,7 @@ For additional context, refer to some of these links.
135239
136240**Got a question?** We got answers.
137241
138- File a GitHub [issue](https://github.com/cloudposse/example- github-action-composite /issues), send us an [email][email] or join our [Slack Community][slack].
242+ File a GitHub [issue](https://github.com/cloudposse/github-action-yaml-config-query /issues), send us an [email][email] or join our [Slack Community][slack].
139243
140244[![README Commercial Support][readme_commercial_support_img]][readme_commercial_support_link]
141245
@@ -183,7 +287,7 @@ Sign up for [our newsletter][newsletter] that covers everything on our technolog
183287
184288### Bug Reports & Feature Requests
185289
186- Please use the [issue tracker](https://github.com/cloudposse/example- github-action-composite /issues) to report any bugs or file feature requests.
290+ Please use the [issue tracker](https://github.com/cloudposse/github-action-yaml-config-query /issues) to report any bugs or file feature requests.
187291
188292### Developing
189293
@@ -271,33 +375,33 @@ Check out [our other projects][github], [follow us on twitter][twitter], [apply
271375[ ![ Beacon] [ beacon ]] [ website ]
272376<!-- markdownlint-disable -->
273377 [ logo ] : https://cloudposse.com/logo-300x69.svg
274- [ docs ] : https://cpco.io/docs?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=docs
275- [ website ] : https://cpco.io/homepage?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=website
276- [ github ] : https://cpco.io/github?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=github
277- [ jobs ] : https://cpco.io/jobs?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=jobs
278- [ hire ] : https://cpco.io/hire?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=hire
279- [ slack ] : https://cpco.io/slack?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=slack
280- [ linkedin ] : https://cpco.io/linkedin?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=linkedin
281- [ twitter ] : https://cpco.io/twitter?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=twitter
282- [ testimonial ] : https://cpco.io/leave-testimonial?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=testimonial
283- [ office_hours ] : https://cloudposse.com/office-hours?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=office_hours
284- [ newsletter ] : https://cpco.io/newsletter?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=newsletter
285- [ discourse ] : https://ask.sweetops.com/?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=discourse
286- [ email ] : https://cpco.io/email?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=email
287- [ commercial_support ] : https://cpco.io/commercial-support?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=commercial_support
288- [ we_love_open_source ] : https://cpco.io/we-love-open-source?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=we_love_open_source
289- [ terraform_modules ] : https://cpco.io/terraform-modules?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=terraform_modules
378+ [ docs ] : https://cpco.io/docs?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=docs
379+ [ website ] : https://cpco.io/homepage?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=website
380+ [ github ] : https://cpco.io/github?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=github
381+ [ jobs ] : https://cpco.io/jobs?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=jobs
382+ [ hire ] : https://cpco.io/hire?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=hire
383+ [ slack ] : https://cpco.io/slack?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=slack
384+ [ linkedin ] : https://cpco.io/linkedin?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=linkedin
385+ [ twitter ] : https://cpco.io/twitter?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=twitter
386+ [ testimonial ] : https://cpco.io/leave-testimonial?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=testimonial
387+ [ office_hours ] : https://cloudposse.com/office-hours?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=office_hours
388+ [ newsletter ] : https://cpco.io/newsletter?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=newsletter
389+ [ discourse ] : https://ask.sweetops.com/?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=discourse
390+ [ email ] : https://cpco.io/email?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=email
391+ [ commercial_support ] : https://cpco.io/commercial-support?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=commercial_support
392+ [ we_love_open_source ] : https://cpco.io/we-love-open-source?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=we_love_open_source
393+ [ terraform_modules ] : https://cpco.io/terraform-modules?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=terraform_modules
290394 [ readme_header_img ] : https://cloudposse.com/readme/header/img
291- [ readme_header_link ] : https://cloudposse.com/readme/header/link?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=readme_header_link
395+ [ readme_header_link ] : https://cloudposse.com/readme/header/link?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=readme_header_link
292396 [ readme_footer_img ] : https://cloudposse.com/readme/footer/img
293- [ readme_footer_link ] : https://cloudposse.com/readme/footer/link?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=readme_footer_link
397+ [ readme_footer_link ] : https://cloudposse.com/readme/footer/link?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=readme_footer_link
294398 [ readme_commercial_support_img ] : https://cloudposse.com/readme/commercial-support/img
295- [ readme_commercial_support_link ] : https://cloudposse.com/readme/commercial-support/link?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example- github-action-composite &utm_content=readme_commercial_support_link
296- [ share_twitter ] : https://twitter.com/intent/tweet/?text=example- github-action-composite &url=https://github.com/cloudposse/example- github-action-composite
297- [ share_linkedin ] : https://www.linkedin.com/shareArticle?mini=true&title=example- github-action-composite &url=https://github.com/cloudposse/example- github-action-composite
298- [ share_reddit ] : https://reddit.com/submit/?url=https://github.com/cloudposse/example- github-action-composite
299- [ share_facebook ] : https://facebook.com/sharer/sharer.php?u=https://github.com/cloudposse/example- github-action-composite
300- [ share_googleplus ] : https://plus.google.com/share?url=https://github.com/cloudposse/example- github-action-composite
301- [ share_email ] : mailto:?subject=example- github-action-composite &body=https://github.com/cloudposse/example- github-action-composite
302- [ beacon ] : https://ga-beacon.cloudposse.com/UA-76589703-4/cloudposse/example- github-action-composite ?pixel&cs=github&cm=readme&an=example- github-action-composite
399+ [ readme_commercial_support_link ] : https://cloudposse.com/readme/commercial-support/link?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-yaml-config-query &utm_content=readme_commercial_support_link
400+ [ share_twitter ] : https://twitter.com/intent/tweet/?text=github-action-yaml-config-query &url=https://github.com/cloudposse/github-action-yaml-config-query
401+ [ share_linkedin ] : https://www.linkedin.com/shareArticle?mini=true&title=github-action-yaml-config-query &url=https://github.com/cloudposse/github-action-yaml-config-query
402+ [ share_reddit ] : https://reddit.com/submit/?url=https://github.com/cloudposse/github-action-yaml-config-query
403+ [ share_facebook ] : https://facebook.com/sharer/sharer.php?u=https://github.com/cloudposse/github-action-yaml-config-query
404+ [ share_googleplus ] : https://plus.google.com/share?url=https://github.com/cloudposse/github-action-yaml-config-query
405+ [ share_email ] : mailto:?subject=github-action-yaml-config-query &body=https://github.com/cloudposse/github-action-yaml-config-query
406+ [ beacon ] : https://ga-beacon.cloudposse.com/UA-76589703-4/cloudposse/github-action-yaml-config-query ?pixel&cs=github&cm=readme&an=github-action-yaml-config-query
303407<!-- markdownlint-restore -->
0 commit comments