-
Notifications
You must be signed in to change notification settings - Fork 4
134 lines (127 loc) · 4.31 KB
/
text-reading-docker.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
name: SKEMA TR docker
on:
push:
branches: [main]
tags:
- "**"
pull_request:
branches: [main]
release:
types: [published]
# builds and publishes docker images for the default branch.
# images are tagged with short commit hash, latest, and any tags.
jobs:
# Determine value for app version
app_version:
name: "Determine app version"
runs-on: ubuntu-latest
outputs:
app_version: ${{ steps.app_version.outputs.app_version }}
commit: ${{ steps.app_version.outputs.commit }}
steps:
- name: Set APP_VERSION output
id: app_version
run: |
echo "app_version=${{github.ref_name}}"
if [ -z "${app_version}" ]; then
app_version=${{github.sha}}
echo "app_version=${app_version}"
fi
echo "app_version=$app_version" >> "$GITHUB_OUTPUT"
echo "commit=${{github.sha}}" >> "$GITHUB_OUTPUT"
echo "app_version=$app_version"
echo "commit=${{github.sha}}"
text_reading:
name: "docker image for text reading component"
needs: [app_version]
runs-on: ubuntu-latest
steps:
# Setup docker
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
# for multi-arch builds (ex. ARM 64)
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
with:
buildkitd-flags: --debug
driver: docker
# - name: Prepare buildx builder
# run: |
# docker buildx create --use --name "multiarch-builder" --platform linux/amd64,linux/arm64 --driver "docker-container"
- name: Inspect builder
run: |
echo "Name: ${{ steps.buildx.outputs.name }}"
echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}"
echo "Status: ${{ steps.buildx.outputs.status }}"
echo "Flags: ${{ steps.buildx.outputs.flags }}"
echo "Platforms: ${{ steps.buildx.outputs.platforms }}"
# Checkout code
- name: Checkout code
uses: actions/checkout@v4
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.LUM_ASKEM_DOCKERHUB_USERNAME }}
password: ${{ secrets.LUM_ASKEM_DOCKERHUB_TOKEN }}
########################################
# lumai/askem-skema-text-reading
########################################
- name: Setup JDK (w/ SBT)
uses: actions/setup-java@v3
with:
distribution: temurin
java-version: 11
# Unfortunately, this will immediately
# blow through the GH Actions cache...
#cache: 'sbt'
# The TR image is huge.
# We need to free up every last bit of space we can.
- name: Free disk space (aggressively)
# https://github.com/jlumbroso/free-disk-space
uses: jlumbroso/[email protected]
with:
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
# NOTE: this might remove things we actually need.
tool-cache: true
- name: Generate Dockerfile (TR)
working-directory: ./skema/text_reading/scala
env:
#APP_VERSION: ${{needs.app_version.outputs.app_version}}
APP_VERSION: ${{needs.app_version.outputs.commit}}
run: |
sbt "webapp/docker:stage"
- name: Tags for image (TR)
id: tags
# see https://github.com/docker/metadata-action
uses: docker/metadata-action@v4
with:
images: lumai/askem-skema-text-reading
tags: |
# latest
type=raw,value=latest
# version
type=semver,pattern={{version}}
# other tags
type=ref,event=tag
# short commit hash
type=sha
- name: Build and push image (TR)
# see https://github.com/docker/build-push-action
uses: docker/build-push-action@v5
# our AWS deployment doesn't rely on this image being published
with:
context: ./skema/text_reading/scala/webapp/target/docker/stage
# NOTE: dynet throws an UnsatisfiedLinkError on ARM64 even with a platform compatible JRE.. :(
platforms: linux/amd64
provenance: false
no-cache: true
pull: true
push: ${{ github.event_name != 'pull_request' }}
# references `tags` step in steps for current job
tags: ${{ steps.tags.outputs.tags }}