-
Notifications
You must be signed in to change notification settings - Fork 1
169 lines (152 loc) · 5.4 KB
/
build-images.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
name: Create and publish Docker images
on:
workflow_dispatch:
push:
branches: [main]
release:
types: [published]
jobs:
push_to_registry:
name: Build and push Docker image to GitHub Packages
runs-on: ubuntu-latest
steps:
#https://saturncloud.io/blog/github-action-ecr-optimizing-disk-space/#handling-or-maximizing-github-runner-out-of-disk-space-error
# Clean unnecessary files to save disk space
- name: clean unncessary files to save space
run: |
docker rmi `docker images -q`
sudo rm -rf /usr/share/dotnet /etc/mysql /etc/php /etc/sudo apt/sources.list.d
sudo apt -y autoremove --purge
sudo apt -y autoclean
sudo apt clean
rm --recursive --force "$AGENT_TOOLSDIRECTORY"
df -h
# Free up disk space on Ubuntu
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# This might remove tools that are actually needed, if set to "true" but frees about 6 GB
tool-cache: false
large-packages: true
swap-storage: true
- name: Checkout repository
uses: actions/checkout@v2
with:
submodules: 'recursive'
- name: update-base
run: ./update_base.sh
shell: bash
- name: Add SHORT_SHA env property with commit short sha
run: echo "SHORT_SHA=`git rev-parse --short HEAD`" >> $GITHUB_ENV
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
with:
driver: docker # defaults to "docker-containerized"
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# Intermediate images used as base images
- name: Build docker-stacks-foundation image
uses: docker/build-push-action@v2
with:
build-args: |
ROOT_CONTAINER=nvidia/cuda:11.7.1-cudnn8-runtime-ubuntu22.04
context: ./docker-stacks-foundation
push: false
tags: docker-stacks-foundation
- name: Build base-notebook image
uses: docker/build-push-action@v2
with:
build-args: |
BASE_CONTAINER=docker-stacks-foundation
context: ./base-notebook
push: false
tags: base-notebook
- name: Build minimal-notebook image
uses: docker/build-push-action@v2
with:
build-args: |
BASE_CONTAINER=base-notebook
context: ./minimal-notebook
push: false
tags: minimal-notebook
# Published pipeline images
# CPU ONLY IMAGE - based on default jupyterhub docker stacks
- name: Extract metadata for pipeline-base
id: meta-base
uses: docker/metadata-action@v3
with:
# list of Docker images to use as base name for tags
images: |
ghcr.io/auscalabledronecloud/pipeline-base
tags: |
type=schedule
type=ref,event=branch
type=ref,event=tag
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=sha
${{ env.SHORT_SHA }}-${{ github.run_number }}
- name: Build and push pipeline-base image
uses: docker/build-push-action@v2
with:
context: ./base
push: true
tags: |
ghcr.io/auscalabledronecloud/pipeline-base:latest
${{ steps.meta-base.outputs.tags }}
labels: ${{ steps.meta-base.outputs.labels }}
- name: Extract metadata for pipeline-gpu
id: meta-gpu
uses: docker/metadata-action@v3
with:
# list of Docker images to use as base name for tags
images: |
ghcr.io/auscalabledronecloud/pipeline-gpu
tags: |
type=schedule
type=ref,event=branch
type=ref,event=tag
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=sha
${{ env.SHORT_SHA }}-${{ github.run_number }}
- name: Build and push pipeline-gpu image
uses: docker/build-push-action@v2
with:
build-args: |
BASE_CONTAINER=minimal-notebook
context: ./base
push: true
tags: |
ghcr.io/auscalabledronecloud/pipeline-gpu:latest
${{ steps.meta-gpu.outputs.tags }}
labels: ${{ steps.meta-base.outputs.labels }}
- name: Extract metadata for pipeline-ml
id: meta-ml
uses: docker/metadata-action@v3
with:
images: ghcr.io/auscalabledronecloud/pipeline-ml
tags: |
type=schedule
type=ref,event=branch
type=ref,event=tag
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=sha
${{ env.SHORT_SHA }}-${{ github.run_number }}
- name: Build and push pipeline-ml image
uses: docker/build-push-action@v2
with:
context: ./ml
push: true
tags: |
ghcr.io/auscalabledronecloud/pipeline-ml:latest
${{ steps.meta-ml.outputs.tags }}
labels: ${{ steps.meta-ml.outputs.labels }}