[ci] Quality of life updates #879
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }} |