feat: Support injection of arbitrary types via ValidationContext (#1607) #581
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: Docker image | |
on: | |
push: | |
branches: [ master ] | |
release: | |
types: [ prereleased, released ] | |
jobs: | |
validate_gradle_wrapper: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: gradle/wrapper-validation-action@v1 | |
test: | |
needs: [ validate_gradle_wrapper ] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v3 | |
with: | |
java-version: '11' | |
distribution: 'temurin' | |
- name: Cache Gradle packages | |
uses: actions/cache@v3 | |
with: | |
path: ~/.gradle/caches | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} | |
restore-keys: ${{ runner.os }}-gradle | |
- name: Run Java tests | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: testAggregateTestReport | |
- name: Persist aggregated test reports on failure | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Test report - Java | |
path: build/reports/tests/unit-test/aggregated-results/ | |
build_push: | |
needs: test | |
name: Build and push Docker image | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 # need full clone so `./gradlew currentVersion` can search parents for older tags when needed | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v3 | |
with: | |
java-version: '11' | |
distribution: 'temurin' | |
- name: Cache Gradle packages | |
uses: actions/cache@v3 | |
with: | |
path: ~/.gradle/caches | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} | |
restore-keys: ${{ runner.os }}-gradle | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v1 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Initialize Gradle | |
run: | | |
# The first time gradlew is invoked it downloads gradle and outputs progress about that to STDOUT. | |
# This "dummy" invokation gets that out of the way so future gradlew commands have clean output | |
./gradlew --version | |
- name: Prepare version metadata | |
id: prep | |
run: | | |
# ghcr.io path should match current repo but be all lowercase | |
DOCKER_IMAGE=ghcr.io/${GITHUB_REPOSITORY,,} | |
echo "Set DOCKER_IMAGE=${DOCKER_IMAGE}" | |
# delegate to axion-release-plugin to generate version string from Git repository state | |
echo "Detecting version with ./gradlew currentVersion" | |
AXION_VERSION="$(./gradlew currentVersion -q -Prelease.quiet)" | |
echo "Set AXION_VERSION=${AXION_VERSION}" | |
# determine docker tags | |
if [[ "${GITHUB_EVENT_NAME}" == "release" ]]; then | |
# tag releases with version determined by axion-release-plugin | |
DOCKER_TAGS="${DOCKER_IMAGE}:${AXION_VERSION}" | |
else | |
# tag pushes to master as "latest" | |
DOCKER_TAGS="${DOCKER_IMAGE}:latest" | |
fi | |
echo "Set DOCKER_TAGS=${DOCKER_TAGS}" | |
echo "version=${AXION_VERSION}" >> $GITHUB_OUTPUT | |
echo "tags=${DOCKER_TAGS}" >> $GITHUB_OUTPUT | |
echo "created=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT | |
# Build and push steps are split up in order to test the built contaire image in between | |
# - build-args and labels inputs _must_ be kept matching between both to prevent rebuild | |
# - See: https://github.com/docker/build-push-action/blob/master/docs/advanced/test-before-push.md | |
- name: Build Docker container image | |
uses: docker/build-push-action@v3 | |
with: | |
context: . | |
file: ./Dockerfile | |
build-args: | | |
VERSION_TAG=${{ steps.prep.outputs.version }} | |
load: true | |
tags: ${{ steps.prep.outputs.tags }} | |
labels: | | |
org.opencontainers.image.source=https://github.com/${GITHUB_REPOSITORY,,}.git | |
org.opencontainers.image.created=${{ steps.prep.outputs.created }} | |
org.opencontainers.image.revision=${{ github.sha }} | |
org.opencontainers.image.version=${{ steps.prep.outputs.version }} | |
- name: Test Docker container image | |
run: docker run --rm ${{ steps.prep.outputs.tags }} --help | |
- name: Push Docker container image | |
uses: docker/build-push-action@v3 | |
with: | |
context: . | |
file: ./Dockerfile | |
build-args: | | |
VERSION_TAG=${{ steps.prep.outputs.version }} | |
push: true | |
tags: ${{ steps.prep.outputs.tags }} | |
labels: | | |
org.opencontainers.image.source=https://github.com/${GITHUB_REPOSITORY,,}.git | |
org.opencontainers.image.created=${{ steps.prep.outputs.created }} | |
org.opencontainers.image.revision=${{ github.sha }} | |
org.opencontainers.image.version=${{ steps.prep.outputs.version }} |