-
Notifications
You must be signed in to change notification settings - Fork 0
135 lines (112 loc) · 3.85 KB
/
build.yml
File metadata and controls
135 lines (112 loc) · 3.85 KB
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
name: "Build"
on:
workflow_call:
env:
NODE_VERSION: '16.x'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup image name
run: |
IMAGE_NAME=$(echo ${{ github.repository }} | tr [:upper:] [:lower:])
echo "IMAGE_NAME=ghcr.io/${IMAGE_NAME}" >> $GITHUB_ENV
- name: Setup version for PR
if: ${{ github.event_name == 'pull_request' }}
run: |
echo "VERSION=${{ github.event.pull_request.head.sha }}" >> $GITHUB_ENV
- name: Setup version for not PR
if: ${{ github.event_name != 'pull_request' }}
run: |
echo "VERSION=${{ github.sha }}" >> $GITHUB_ENV
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v2
with:
node-version: ${{ env.NODE_VERSION }}
- name: Get Yarn cache directory
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Use Yarn cache
uses: actions/cache@v2
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ env.NODE_VERSION }}-${{ hashFiles('**/yarn.lock') }}
- name: Install dependencies
working-directory: app
run: yarn install --prefer-offline --frozen-lockfile
- name: Lint
working-directory: app
run: yarn lint
- name: Test unit
working-directory: app
run: yarn test:cov
- name: Collect code coverage report
uses: actions/upload-artifact@v2
with:
name: code-coverage-report
path: app/coverage/lcov-report
- name: Test e2e
working-directory: app
run: yarn test:e2e
- name: Build
working-directory: app
run: yarn build
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2
- name: Login to container registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push app docker image
uses: docker/build-push-action@v2
with:
context: app
builder: ${{ steps.buildx.outputs.name }}
push: true # Will only build if this is not here
tags: |
${{ env.IMAGE_NAME }}/app:${{ env.VERSION }}
${{ env.IMAGE_NAME }}/app:latest
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Build and push db docker image
uses: docker/build-push-action@v2
with:
context: docker/postgres
builder: ${{ steps.buildx.outputs.name }}
push: true
tags: |
${{ env.IMAGE_NAME }}/db:${{ env.VERSION }}
${{ env.IMAGE_NAME }}/db:latest
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Build and push adminer docker image
uses: docker/build-push-action@v2
with:
context: docker/adminer
builder: ${{ steps.buildx.outputs.name }}
push: true
tags: |
${{ env.IMAGE_NAME }}/adminer:${{ env.VERSION }}
${{ env.IMAGE_NAME }}/adminer:latest
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Patch web version info
run: |
echo "version: ${{ env.VERSION }}" > docker/caddy/version.txt
- name: Build and push web docker image
uses: docker/build-push-action@v2
with:
context: docker/caddy
builder: ${{ steps.buildx.outputs.name }}
push: true
tags: |
${{ env.IMAGE_NAME }}/web:${{ env.VERSION }}
${{ env.IMAGE_NAME }}/web:latest
cache-from: type=gha
cache-to: type=gha,mode=max