-
Notifications
You must be signed in to change notification settings - Fork 44
/
action.yaml
170 lines (159 loc) · 5.94 KB
/
action.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
name: Build & Push Container
description: Builds a container from a Dockerfile and pushes to registry
inputs:
context:
description: Effective Working Directory
required: true
default: "./"
image_name:
description: Image Name
required: true
github_username:
description: Github Container Registry Username
required: true
github_token:
description: Github Container Registry Authorization Token
required: true
dockerhub_username:
description: Dockerhub Container Registry Username
required: false
dockerhub_organization:
description: Dockerhub Container Registry Organization
required: false
default: bcgovimages
dockerhub_token:
description: Dockerhub Container Registry Authorization Token
required: false
app_title:
description: Application title
required: false
default: Common Hosted Forms
route_path:
description: Route Subpath Mount point
required: true
default: "/app"
app_contact:
description: Application contact email
required: true
app_howtourl:
description: Landing page video URL for HOWTO section
required: true
default: "https://www.youtube.com/playlist?list=PL9CV_8JBQHirsQAShw45PZeU1CkU88Q53"
app_chefstoururl:
description: Landing page video URL for CHEFS TOUR section
required: true
default: "https://www.youtube.com/embed/obOhyYusMjM"
app_bc_geo_address_apiurl:
description: BC Geo Address API URL
required: true
default: "https://geocoder.api.gov.bc.ca/addresses.json"
app_chefs_geo_address_apiurl:
description: Proxy URL to BC Geo Address API URL
required: true
default: "../api/v1/bcgeoaddress/address"
app_chefs_advance_geo_address_apiurl:
description: Proxy URL to BC Geo Address API URL for advance search
required: true
default: "../api/v1/bcgeoaddress/advance/address"
ref:
description: The checkout ref id
required: false
default: ''
pr_number:
description: Pull request number
required: false
type: string
runs:
using: composite
steps:
- name: Checkout repository from pull request
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}
if: ${{ inputs.ref != '' }}
- name: Checkout repository
uses: actions/checkout@v4
if: ${{ inputs.ref == '' }}
- name: Set variables
shell: bash
run: |
echo "SHA=sha-$(git rev-parse --short HEAD)" >> $GITHUB_ENV
echo "IMAGE_REVISION=$(git rev-parse HEAD)" >> $GITHUB_ENV
echo "IMAGE_VERSION=main" >> $GITHUB_ENV
if [[ "${{ inputs.ref }}" != '' ]]; then
git fetch origin ${{ inputs.ref }}
echo "SHA=sha-$(git rev-parse --short HEAD)" >> $GITHUB_ENV
echo "IMAGE_REVISION=$(git rev-parse HEAD)" >> $GITHUB_ENV
echo "IMAGE_VERSION=pr-${{ inputs.pr_number }}" >> $GITHUB_ENV
fi
- name: Creates env variables
env:
VITE_TITLE: ${{ inputs.app_title }}
VITE_CONTACT: ${{ inputs.app_contact }}
VITE_HOWTOURL: ${{ inputs.app_howtourl }}
VITE_CHEFSTOURURL: ${{ inputs.app_chefstoururl }}
VITE_FRONTEND_BASEPATH: ${{ inputs.route_path }}
VITE_CHEFS_GEO_ADDRESS_APIURL: ${{ inputs.app_chefs_geo_address_apiurl }}
VITE_CHEFS_ADVANCE_GEO_ADDRESS_APIURL: ${{ inputs.app_chefs_advance_geo_address_apiurl }}
VITE_BC_GEO_ADDRESS_APIURL: ${{ inputs.app_bc_geo_address_apiurl }}
ENV_PATH: ./app/frontend/.env
shell: bash
run: |
touch $ENV_PATH
echo VITE_TITLE=$VITE_TITLE >> $ENV_PATH
echo VITE_CONTACT=$VITE_CONTACT >> $ENV_PATH
echo VITE_HOWTOURL=$VITE_HOWTOURL >> $ENV_PATH
echo VITE_CHEFSTOURURL=$VITE_CHEFSTOURURL >> $ENV_PATH
echo VITE_CHEFS_GEO_ADDRESS_APIURL=$VITE_CHEFS_GEO_ADDRESS_APIURL >> $ENV_PATH
echo VITE_CHEFS_ADVANCE_GEO_ADDRESS_APIURL=$VITE_CHEFS_ADVANCE_GEO_ADDRESS_APIURL >> $ENV_PATH
echo VITE_BC_GEO_ADDRESS_APIURL=$VITE_BC_GEO_ADDRESS_APIURL >> $ENV_PATH
echo VITE_FRONTEND_BASEPATH=$VITE_FRONTEND_BASEPATH >> $ENV_PATH
echo "cat $ENV_PATH"
cat $ENV_PATH
- name: Parse Input Values
shell: bash
run: |
echo "GH_USERNAME=$(tr '[:upper:]' '[:lower:]' <<< '${{ inputs.github_username }}')" >> $GITHUB_ENV
echo "HAS_DOCKERHUB=${{ fromJson(inputs.dockerhub_username != '' && inputs.dockerhub_token != '') }}" >> $GITHUB_ENV
- name: Login to Github Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ env.GH_USERNAME }}
password: ${{ inputs.github_token }}
- name: Login to Dockerhub Container Registry
if: env.HAS_DOCKERHUB == 'true'
uses: docker/login-action@v2
with:
registry: docker.io
username: ${{ inputs.dockerhub_username }}
password: ${{ inputs.dockerhub_token }}
- name: Prepare Container Metadata tags
id: meta
uses: docker/metadata-action@v4
with:
images: |
ghcr.io/${{ env.GH_USERNAME }}/${{ inputs.image_name }}
docker.io/${{ inputs.dockerhub_organization }}/${{ inputs.image_name }},enable=${{ env.HAS_DOCKERHUB }}
# Always updates the 'latest' tag
flavor: |
latest=true
# Creates tags based off of branch names and semver tags
tags: |
type=raw,value=${{ env.IMAGE_VERSION }}
type=raw,value=${{ env.SHA }}
labels: |
org.opencontainers.image.revision=${{ env.IMAGE_REVISION }}
org.opencontainers.image.version=${{ env.IMAGE_VERSION }}
- name: Build and Push to Container Registry
id: builder
uses: docker/build-push-action@v3
with:
context: ${{ inputs.context }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
- name: Inspect Docker Image
shell: bash
run: |
docker image inspect ghcr.io/${{ env.GH_USERNAME }}/${{ inputs.image_name }}:latest