Skip to content

Commit ce1ae18

Browse files
authored
Added build action (#2)
## what * Added docker build action ## why * Simplify docker build with GHA
1 parent 71f0faf commit ce1ae18

File tree

7 files changed

+150
-120
lines changed

7 files changed

+150
-120
lines changed
Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Test example negative
1+
name: Test docker build
22
on:
33
# # Uncomment when test added first time to register workflow and comment it back after workflow would be registered
44
# #
@@ -24,12 +24,17 @@ jobs:
2424
- uses: ./
2525
id: current
2626
with:
27-
param1: 'false'
27+
workdir: ./test
28+
organization: ${{ github.event.repository.owner.login }}
29+
repository: ${{ github.event.repository.name }}
30+
registry: registry.hub.docker.com
31+
login: ${{ secrets.DOCKERHUB_USERNAME }}
32+
password: ${{ secrets.DOCKERHUB_PASSWORD }}
2833

2934
- uses: nick-fields/assert-action@v1
3035
with:
31-
expected: 'false'
32-
actual: ${{ steps.current.outputs.result1 }}
36+
expected: 'registry.hub.docker.com/cloudposse/github-action-docker-build-push'
37+
actual: ${{ steps.current.outputs.image }}
3338

3439
teardown:
3540
runs-on: ubuntu-latest

.github/workflows/test-positive.yml

Lines changed: 0 additions & 40 deletions
This file was deleted.

README.md

Lines changed: 59 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
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-docker-build-push [![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)
44
<!-- markdownlint-restore -->
55

66
[![README Header][readme_header_img]][readme_header_link]
@@ -28,7 +28,7 @@
2828
2929
-->
3030

31-
Template repository of composite GitHub Action
31+
Build Docker image and push it
3232

3333
---
3434

@@ -58,8 +58,7 @@ 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+
Build Docker image and push it.
6362

6463

6564

@@ -70,24 +69,31 @@ Feel free to use it as reference and starting point.
7069

7170

7271
```yaml
73-
name: Pull Request
72+
name: Push into main branch
7473
on:
75-
pull_request:
76-
branches: [ 'main' ]
77-
types: [opened, synchronize, reopened, closed, labeled, unlabeled]
74+
push:
75+
branches: [ master ]
7876

7977
jobs:
8078
context:
8179
runs-on: ubuntu-latest
8280
steps:
83-
- name: Example action
84-
uses: cloudposse/example-github-action-composite@main
85-
id: example
86-
with:
87-
param1: true
88-
89-
outputs:
90-
result: ${{ steps.example.outputs.result1 }}
81+
- name: Checkout
82+
uses: actions/checkout@v3
83+
84+
- name: Build
85+
id: build
86+
uses: cloudposse/github-action-docker-build-push@main
87+
with:
88+
registry: registry.hub.docker.com
89+
organization: "${{ github.event.repository.owner.login }}"
90+
repository: "${{ github.event.repository.name }}"
91+
login: "${{ secrets.DOCKERHUB_USERNAME }}"
92+
password: "${{ secrets.DOCKERHUB_PASSWORD }}"
93+
94+
outputs:
95+
image: ${{ steps.build.outputs.image }}
96+
tag: ${{ steps.build.outputs.tag }}
9197
```
9298
9399
@@ -100,20 +106,26 @@ Feel free to use it as reference and starting point.
100106
101107
| Name | Description | Default | Required |
102108
|------|-------------|---------|----------|
103-
| param1 | Input parameter placeholder | true | true |
109+
| login | Docker login | | false |
110+
| organization | Organization | N/A | true |
111+
| password | Docker password | | false |
112+
| registry | Docker registry | N/A | true |
113+
| repository | Repository | N/A | true |
114+
| workdir | Working directory | ./ | false |
104115
105116
## Outputs
106117
107118
| Name | Description |
108119
|------|-------------|
109-
| result1 | Output result placeholder |
120+
| image | Docker image name |
121+
| tag | Docker image tag |
110122
<!-- markdownlint-restore -->
111123
112124
113125
114126
## Share the Love
115127
116-
Like this project? Please give it a ★ on [our GitHub](https://github.com/cloudposse/example-github-action-composite)! (it helps us **a lot**)
128+
Like this project? Please give it a ★ on [our GitHub](https://github.com/cloudposse/github-action-docker-build-push)! (it helps us **a lot**)
117129
118130
Are you using this project or any of our other projects? Consider [leaving a testimonial][testimonial]. =)
119131
@@ -137,7 +149,7 @@ For additional context, refer to some of these links.
137149
138150
**Got a question?** We got answers.
139151
140-
File a GitHub [issue](https://github.com/cloudposse/example-github-action-composite/issues), send us an [email][email] or join our [Slack Community][slack].
152+
File a GitHub [issue](https://github.com/cloudposse/github-action-docker-build-push/issues), send us an [email][email] or join our [Slack Community][slack].
141153
142154
[![README Commercial Support][readme_commercial_support_img]][readme_commercial_support_link]
143155
@@ -185,7 +197,7 @@ Sign up for [our newsletter][newsletter] that covers everything on our technolog
185197
186198
### Bug Reports & Feature Requests
187199
188-
Please use the [issue tracker](https://github.com/cloudposse/example-github-action-composite/issues) to report any bugs or file feature requests.
200+
Please use the [issue tracker](https://github.com/cloudposse/github-action-docker-build-push/issues) to report any bugs or file feature requests.
189201
190202
### Developing
191203
@@ -273,33 +285,33 @@ Check out [our other projects][github], [follow us on twitter][twitter], [apply
273285
[![Beacon][beacon]][website]
274286
<!-- markdownlint-disable -->
275287
[logo]: https://cloudposse.com/logo-300x69.svg
276-
[docs]: https://cpco.io/docs?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example-github-action-composite&utm_content=docs
277-
[website]: https://cpco.io/homepage?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example-github-action-composite&utm_content=website
278-
[github]: https://cpco.io/github?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example-github-action-composite&utm_content=github
279-
[jobs]: https://cpco.io/jobs?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example-github-action-composite&utm_content=jobs
280-
[hire]: https://cpco.io/hire?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example-github-action-composite&utm_content=hire
281-
[slack]: https://cpco.io/slack?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example-github-action-composite&utm_content=slack
282-
[linkedin]: https://cpco.io/linkedin?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example-github-action-composite&utm_content=linkedin
283-
[twitter]: https://cpco.io/twitter?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example-github-action-composite&utm_content=twitter
284-
[testimonial]: https://cpco.io/leave-testimonial?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example-github-action-composite&utm_content=testimonial
285-
[office_hours]: https://cloudposse.com/office-hours?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example-github-action-composite&utm_content=office_hours
286-
[newsletter]: https://cpco.io/newsletter?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example-github-action-composite&utm_content=newsletter
287-
[discourse]: https://ask.sweetops.com/?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example-github-action-composite&utm_content=discourse
288-
[email]: https://cpco.io/email?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example-github-action-composite&utm_content=email
289-
[commercial_support]: https://cpco.io/commercial-support?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example-github-action-composite&utm_content=commercial_support
290-
[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
291-
[terraform_modules]: https://cpco.io/terraform-modules?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/example-github-action-composite&utm_content=terraform_modules
288+
[docs]: https://cpco.io/docs?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=docs
289+
[website]: https://cpco.io/homepage?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=website
290+
[github]: https://cpco.io/github?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=github
291+
[jobs]: https://cpco.io/jobs?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=jobs
292+
[hire]: https://cpco.io/hire?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=hire
293+
[slack]: https://cpco.io/slack?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=slack
294+
[linkedin]: https://cpco.io/linkedin?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=linkedin
295+
[twitter]: https://cpco.io/twitter?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=twitter
296+
[testimonial]: https://cpco.io/leave-testimonial?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=testimonial
297+
[office_hours]: https://cloudposse.com/office-hours?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=office_hours
298+
[newsletter]: https://cpco.io/newsletter?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=newsletter
299+
[discourse]: https://ask.sweetops.com/?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=discourse
300+
[email]: https://cpco.io/email?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=email
301+
[commercial_support]: https://cpco.io/commercial-support?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=commercial_support
302+
[we_love_open_source]: https://cpco.io/we-love-open-source?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=we_love_open_source
303+
[terraform_modules]: https://cpco.io/terraform-modules?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=terraform_modules
292304
[readme_header_img]: https://cloudposse.com/readme/header/img
293-
[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
305+
[readme_header_link]: https://cloudposse.com/readme/header/link?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=readme_header_link
294306
[readme_footer_img]: https://cloudposse.com/readme/footer/img
295-
[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
307+
[readme_footer_link]: https://cloudposse.com/readme/footer/link?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=readme_footer_link
296308
[readme_commercial_support_img]: https://cloudposse.com/readme/commercial-support/img
297-
[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
298-
[share_twitter]: https://twitter.com/intent/tweet/?text=example-github-action-composite&url=https://github.com/cloudposse/example-github-action-composite
299-
[share_linkedin]: https://www.linkedin.com/shareArticle?mini=true&title=example-github-action-composite&url=https://github.com/cloudposse/example-github-action-composite
300-
[share_reddit]: https://reddit.com/submit/?url=https://github.com/cloudposse/example-github-action-composite
301-
[share_facebook]: https://facebook.com/sharer/sharer.php?u=https://github.com/cloudposse/example-github-action-composite
302-
[share_googleplus]: https://plus.google.com/share?url=https://github.com/cloudposse/example-github-action-composite
303-
[share_email]: mailto:?subject=example-github-action-composite&body=https://github.com/cloudposse/example-github-action-composite
304-
[beacon]: https://ga-beacon.cloudposse.com/UA-76589703-4/cloudposse/example-github-action-composite?pixel&cs=github&cm=readme&an=example-github-action-composite
309+
[readme_commercial_support_link]: https://cloudposse.com/readme/commercial-support/link?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/github-action-docker-build-push&utm_content=readme_commercial_support_link
310+
[share_twitter]: https://twitter.com/intent/tweet/?text=github-action-docker-build-push&url=https://github.com/cloudposse/github-action-docker-build-push
311+
[share_linkedin]: https://www.linkedin.com/shareArticle?mini=true&title=github-action-docker-build-push&url=https://github.com/cloudposse/github-action-docker-build-push
312+
[share_reddit]: https://reddit.com/submit/?url=https://github.com/cloudposse/github-action-docker-build-push
313+
[share_facebook]: https://facebook.com/sharer/sharer.php?u=https://github.com/cloudposse/github-action-docker-build-push
314+
[share_googleplus]: https://plus.google.com/share?url=https://github.com/cloudposse/github-action-docker-build-push
315+
[share_email]: mailto:?subject=github-action-docker-build-push&body=https://github.com/cloudposse/github-action-docker-build-push
316+
[beacon]: https://ga-beacon.cloudposse.com/UA-76589703-4/cloudposse/github-action-docker-build-push?pixel&cs=github&cm=readme&an=github-action-docker-build-push
305317
<!-- markdownlint-restore -->

README.yaml

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#
66

77
# Name of this project
8-
name: example-github-action-composite
8+
name: github-action-docker-build-push
99

1010
# Tags of this project
1111
tags:
@@ -18,7 +18,7 @@ tags:
1818
license: "APACHE2"
1919

2020
# Canonical GitHub repo
21-
github_repo: cloudposse/example-github-action-composite
21+
github_repo: cloudposse/github-action-docker-build-push
2222

2323
# Badges to display
2424
badges:
@@ -32,11 +32,10 @@ badges:
3232
related: []
3333

3434
# Short description of this project
35-
description: Template repository of composite GitHub Action
35+
description: Build Docker image and push it
3636

3737
introduction: |-
38-
This is template repository to create composite GitHub Actions.
39-
Feel free to use it as reference and starting point.
38+
Build Docker image and push it.
4039
4140
references:
4241
- name: "github-actions-workflows"
@@ -49,24 +48,31 @@ references:
4948
# How to use this project
5049
usage: |-
5150
```yaml
52-
name: Pull Request
51+
name: Push into main branch
5352
on:
54-
pull_request:
55-
branches: [ 'main' ]
56-
types: [opened, synchronize, reopened, closed, labeled, unlabeled]
53+
push:
54+
branches: [ master ]
5755
5856
jobs:
5957
context:
6058
runs-on: ubuntu-latest
6159
steps:
62-
- name: Example action
63-
uses: cloudposse/example-github-action-composite@main
64-
id: example
65-
with:
66-
param1: true
60+
- name: Checkout
61+
uses: actions/checkout@v3
6762
68-
outputs:
69-
result: ${{ steps.example.outputs.result1 }}
63+
- name: Build
64+
id: build
65+
uses: cloudposse/github-action-docker-build-push@main
66+
with:
67+
registry: registry.hub.docker.com
68+
organization: "${{ github.event.repository.owner.login }}"
69+
repository: "${{ github.event.repository.name }}"
70+
login: "${{ secrets.DOCKERHUB_USERNAME }}"
71+
password: "${{ secrets.DOCKERHUB_PASSWORD }}"
72+
73+
outputs:
74+
image: ${{ steps.build.outputs.image }}
75+
tag: ${{ steps.build.outputs.tag }}
7076
```
7177
7278
include:

action.yml

Lines changed: 51 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,63 @@
1-
name: 'Example composite GitHub action'
2-
description: 'Example composite GitHub action'
1+
name: 'Docker build and push'
2+
description: 'Simple Docker build and push action'
33
44
branding:
5-
icon: 'file'
5+
icon: 'box'
66
color: 'white'
77
inputs:
8-
param1:
8+
workdir:
9+
description: 'Working directory'
10+
required: false
11+
default: './'
12+
organization:
13+
description: 'Organization'
914
required: true
10-
description: "Input parameter placeholder"
11-
default: "true"
15+
repository:
16+
description: 'Repository'
17+
required: true
18+
registry:
19+
description: 'Docker registry'
20+
required: true
21+
login:
22+
description: 'Docker login'
23+
required: false
24+
default: ''
25+
password:
26+
description: 'Docker password'
27+
required: false
28+
default: ''
1229
outputs:
13-
result1:
14-
description: "Output result placeholder"
15-
value: ${{ steps.context.outputs.result }}
30+
image:
31+
description: "Docker image name"
32+
value: ${{ inputs.registry }}/${{ inputs.organization }}/${{ inputs.repository }}
33+
tag:
34+
description: "Docker image tag"
35+
value: ${{ steps.context.outputs.tag }}
1636
runs:
1737
using: "composite"
1838
steps:
1939
- id: context
40+
run: echo "::set-output name=tag::sha-${{ github.sha }}"
2041
shell: bash
21-
run: |
22-
echo "::set-output name=result::${{ inputs.param1 }}"
2342

43+
- name: Set up Docker Buildx
44+
uses: docker/setup-buildx-action@v1
45+
46+
- name: Login
47+
uses: docker/login-action@v2
48+
if: ${{ contains(inputs.registry, '.amazonaws.com') || ( inputs.login != '' && inputs.password != '' ) }}
49+
with:
50+
registry: ${{ inputs.registry }}
51+
username: ${{ inputs.login }}
52+
password: ${{ inputs.password }}
53+
54+
- name: Build and push Docker images
55+
uses: docker/build-push-action@v2
56+
with:
57+
context: ${{ inputs.workdir }}
58+
pull: true
59+
push: true
60+
cache-from: type=gha
61+
cache-to: type=gha,mode=max
62+
tags: ${{ inputs.registry }}/${{ inputs.organization }}/${{ inputs.repository }}:${{ steps.context.outputs.tag }}
63+
labels: org.opencontainers.image.source=https://github.com/${{ inputs.organization }}/${{ inputs.repository }}

0 commit comments

Comments
 (0)