-
Notifications
You must be signed in to change notification settings - Fork 16
110 lines (100 loc) · 3.12 KB
/
build.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
name: Build
on:
workflow_call:
inputs:
image:
required: true
type: string
path:
required: true
type: string
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
- uses: actions/setup-go@v3
name: go-cache
with:
go-version: '1.21'
check-latest: false
cache: true
- name: Build
env:
GOOS: linux
CGO_ENABLED: 0
run: go build -v -o app "${{ inputs.path }}"
- name: Build Release
if: |
github.event_name == 'push' && (
startsWith(github.event.ref, 'refs/tags/')
|| endsWith(github.event.ref, '/master')
)
run: docker build -t hobbyfarm/"${{ inputs.image }}":${GIT_COMMIT_SHORT_HASH:-dev} -f cicd/Dockerfile .
- name: Compute Docker Tag
if: |
github.event_name == 'push' && (
startsWith(github.event.ref, 'refs/tags/')
|| endsWith(github.event.ref, '/master')
)
id: compute_docker_tag
run: |
tag=${GITHUB_REF#refs/tags/}
branch=${GITHUB_REF#refs/heads/}
if [ "$tag" != "$GITHUB_REF" ]; then
tag=$(echo "$tag" | sed -e 's/[^a-zA-Z0-9\-\.]/-/g')
echo ::set-output name=DOCKER_TAG::${tag}
elif [ "$branch" != "$GITHUB_REF" ]; then
branch=$(echo "$branch" | sed -e 's/[^a-zA-Z0-9\-\.]/-/g')
echo ::set-output name=DOCKER_TAG::${branch}
else
echo "unable to determine docker tag" >&2
exit 1
fi
- name: Docker Login
if: |
github.event_name == 'push' && (
startsWith(github.event.ref, 'refs/tags/')
|| endsWith(github.event.ref, '/master')
)
run: |
echo "${{ secrets.DOCKER_HUB_PASSWORD }}" \
| docker login -u "${{ secrets.DOCKER_HUB_USER }}" --password-stdin
- name: Docker Tag
if: |
github.event_name == 'push' && (
startsWith(github.event.ref, 'refs/tags/')
|| endsWith(github.event.ref, '/master')
)
run: |
docker tag \
hobbyfarm/"${{ inputs.image }}":${GIT_COMMIT_SHORT_HASH:-dev} \
hobbyfarm/"${{ inputs.image }}":"${{ steps.compute_docker_tag.outputs.DOCKER_TAG }}"
- name: Docker Push
if: |
github.event_name == 'push' && (
startsWith(github.event.ref, 'refs/tags/')
|| endsWith(github.event.ref, '/master')
)
run: |
docker push \
hobbyfarm/"${{ inputs.image }}":"${{ steps.compute_docker_tag.outputs.DOCKER_TAG }}"
- name: Docker Tag Latest
if: |
github.event_name == 'push' && (
startsWith(github.event.ref, 'refs/tags/')
)
run: |
docker tag \
hobbyfarm/"${{ inputs.image }}":${GIT_COMMIT_SHORT_HASH:-dev} \
hobbyfarm/"${{ inputs.image }}":latest
- name: Docker Push Latest
if: |
github.event_name == 'push' && (
startsWith(github.event.ref, 'refs/tags/')
)
run: |
docker push \
hobbyfarm/"${{ inputs.image }}":latest