-
Notifications
You must be signed in to change notification settings - Fork 8
137 lines (124 loc) · 4.83 KB
/
docker-build.yml
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
name: Docker Build
on:
push:
branches:
- main
tags:
- "[0-9]+.[0-9]+.[0-9]+"
env:
REGISTRY: ghcr.io
jobs:
build:
name: Build Docker Image
runs-on: ubuntu-22.04
permissions:
packages: write
strategy:
matrix:
docker:
- name: Core
image: core
task: :core:jibDockerBuild
- name: Orchestrator
image: orchestrator
task: :orchestrator:jibDockerBuild
- name: Kubernetes Jobmonitor
image: kubernetes-jobmonitor
task: :transport:kubernetes-jobmonitor:jibDockerBuild
- name: Advisor Worker
image: advisor-worker
task: :workers:advisor:jibDockerBuild
- name: Analyzer Worker
image: analyzer-worker
task: :workers:analyzer:jibDockerBuild
context: workers/analyzer/docker
dockerfile: Analyzer.Dockerfile
freeDiskSpace: true
- name: Config Worker
image: config-worker
task: :workers:config:jibDockerBuild
context: workers/config/docker
dockerfile: Config.Dockerfile
- name: Evaluator Worker
image: evaluator-worker
task: :workers:evaluator:jibDockerBuild
context: workers/evaluator/docker
dockerfile: Evaluator.Dockerfile
- name: Notifier Worker
image: notifier-worker
task: :workers:notifier:jibDockerBuild
context: workers/notifier/docker
dockerfile: Notifier.Dockerfile
- name: Reporter Worker
image: reporter-worker
task: :workers:reporter:jibDockerBuild
context: workers/reporter/docker
dockerfile: Reporter.Dockerfile
- name: Scanner Worker
image: scanner-worker
task: :workers:scanner:jibDockerBuild
context: workers/scanner/docker
dockerfile: Scanner.Dockerfile
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Free Disk Space
if: ${{ matrix.docker.freeDiskSpace }}
uses: ./.github/actions/free-disk-space
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
with:
gradle-home-cache-cleanup: true
- name: Get ORT-Server Version
run: |
ORT_SERVER_VERSION=$(./gradlew -q properties --property version | sed -nr 's/version: (.+)/\1/p' | sed 's/+/-/')
echo "ORT_SERVER_VERSION=${ORT_SERVER_VERSION}" >> $GITHUB_ENV
- name: Extract Docker Metadata for ${{ matrix.docker.name }} Base Image
if: ${{ matrix.docker.dockerfile != '' }}
id: meta-base
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ github.repository_owner }}/ort-server-${{ matrix.docker.image }}-base-image
tags: |
type=raw,value=${{ env.ORT_SERVER_VERSION }}
type=ref,event=branch
type=sha
- name: Build ${{ matrix.docker.name }} Base Image
if: ${{ matrix.docker.dockerfile != '' }}
uses: docker/build-push-action@v5
with:
context: ${{ matrix.docker.context }}
file: ${{ matrix.docker.context }}/${{ matrix.docker.dockerfile }}
push: true
tags: ${{ steps.meta-base.outputs.tags }}
labels: ${{ steps.meta-base.outputs.labels }}
cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ github.repository_owner }}/ort-server-${{ matrix.docker.image }}-base-image:cache
cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ github.repository_owner }}/ort-server-${{ matrix.docker.image }}-base-image:cache,mode=max
- name: Extract Docker Metadata for ${{ matrix.docker.name }} Image
id: meta
uses: docker/metadata-action@v5
with:
tags: |
type=raw,value=${{ env.ORT_SERVER_VERSION }}
type=ref,event=branch
type=sha
- name: Build ${{ matrix.docker.name }} Image
run: |
./gradlew \
-PdockerBaseImagePrefix=${{ env.REGISTRY }}/${{ github.repository_owner }}/ \
-PdockerBaseImageTag=${{ env.ORT_SERVER_VERSION }} \
-PdockerImagePrefix=${{ env.REGISTRY }}/${{ github.repository_owner }}/ \
-PdockerImageTag=${{ env.ORT_SERVER_VERSION }} \
${{ matrix.docker.task }} \
-Djib.console=plain \
-Djib.container.labels="$(echo "${{ steps.meta.outputs.labels }}" | tr '\n' ',' | sed 's/,$//')" \
-Djib.to.tags="$(echo "${{ steps.meta.outputs.tags }}" | tr '\n' ',' | sed 's/,$//')"
docker push ${{ env.REGISTRY }}/${{ github.repository_owner }}/ort-server-${{ matrix.docker.image }} --all-tags