Skip to content

Piercetrey figure/sc 253074/update to blockapi #249

Piercetrey figure/sc 253074/update to blockapi

Piercetrey figure/sc 253074/update to blockapi #249

name: Build and Publish
on:
release:
types: [created]
push:
branches:
- main
pull_request:
branches:
- main
jobs:
java_build:
name: Build and Publish Jar
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Get Version
run: |
# Strip git ref prefix from version
VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,')
# Strip "v" prefix from tag name
[[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//')
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Set up JDK 17
uses: actions/setup-java@v1
with:
java-version: 17
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
distribution: zulu
- name: Build with Gradle
run: ./gradlew clean build --refresh-dependencies -Pversion=$VERSION
- name: Install gpg secret key
run: |
export GPG_TTY=$(tty)
echo -n "${{ secrets.OSSRH_GPG_SECRET_KEY }}" | base64 --decode | gpg --batch --import
gpg --list-secret-keys --keyid-format LONG
echo -n "${{ secrets.OSSRH_GPG_SECRET_KEY }}" | base64 --decode > $GITHUB_WORKSPACE/release.gpg
if: github.event_name == 'release'
- name: Publish to Maven Central
run: |
./gradlew publishToSonatype $(if [ "${{github.event.release.prerelease}}" = "true" ]; then echo 'closeSonatypeStagingRepository'; else echo 'closeAndReleaseSonatypeStagingRepository'; fi) \
-Pversion=$VERSION \
-Psigning.keyId=69C08EA0 -Psigning.password="${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }}" -Psigning.secretKeyRingFile=$GITHUB_WORKSPACE/release.gpg \
--info
env:
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
if: github.event_name == 'release'
- name: Upload server Artifact
uses: actions/upload-artifact@v2
with:
name: server
path: server/build/libs/*.jar
docker_build:
name: Build and Publish Docker Image
needs: java_build
runs-on: ubuntu-latest
if: github.event_name == 'release'
steps:
- uses: actions/checkout@v2
- name: Get Version
run: |
# Strip git ref prefix from version
VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,')
# Strip "v" prefix from tag name
[[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//')
# Use Docker `latest` tag convention
[ "$VERSION" == "main" ] && VERSION=latest
echo "VERSION=$VERSION" >> $GITHUB_ENV
# Convert IMAGE_ID to lowercase to ensure the FigureTechnologies prefix in the repository name does not cause
# docker rejections. Only lowercase values for tags are allowed.
IMAGE_ID=$(echo "${{ github.repository }}" | awk '{print tolower($0)}')
DOCKER_TAGS=$IMAGE_ID:$VERSION
PRERELEASE=${{ github.event.release.prerelease }}
echo PRERELEASE=$PRERELEASE
if [ "$PRERELEASE" == "false" ]; then
DOCKER_TAGS=$DOCKER_TAGS,$IMAGE_ID:latest
fi
echo "DOCKER_TAGS=$DOCKER_TAGS" >> $GITHUB_ENV
- name: Setup QEMU
id: qemu
uses: docker/setup-qemu-action@v1
with:
image: tonistiigi/binfmt:latest
platforms: all
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1
with:
install: true
- name: Available platforms
run: echo ${{ steps.qemu.outputs.platforms }}
- name: Download Artifact
uses: actions/download-artifact@v2
with:
name: server
path: server/build/libs
- name: Log into DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v3
with:
context: server
file: server/docker/Dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ env.DOCKER_TAGS }}