Skip to content

[maven] (deps): Bump org.openjfx:javafx-controls from 21 to 21.0.1 #587

[maven] (deps): Bump org.openjfx:javafx-controls from 21 to 21.0.1

[maven] (deps): Bump org.openjfx:javafx-controls from 21 to 21.0.1 #587

Workflow file for this run

name: Build and Package Drifty
on:
push:
branches: [ "master" ]
paths-ignore:
- "Website/**"
- "*.md"
- "*.txt"
- "qodana.yaml"
pull_request:
branches: [ "master" ]
paths-ignore:
- "Website/**"
- "*.md"
- "*.txt"
- "qodana.yaml"
workflow_dispatch:
inputs:
create_release:
description: 'True to create release, else false'
required: true
type: boolean
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
build-Drifty:
strategy:
matrix:
os: ["windows-latest", "macos-latest", "ubuntu-latest"]
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Install required build dependencies for Linux
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
sudo apt-get install libasound2-dev libavcodec-dev libavformat-dev libavutil-dev libfreetype6-dev
sudo apt-get install libgl-dev libglib2.0-dev libgtk-3-dev libpango1.0-dev libx11-dev libxtst-dev zlib1g-dev
- name: Set up GraalVM JDK 20.0.1
uses: graalvm/setup-graalvm@v1
with:
java-version: '20.0.1'
distribution: 'graalvm-community'
github-token: ${{ secrets.GITHUB_TOKEN }}
set-java-home: true
native-image-job-reports: 'true'
cache: 'maven'
native-image-pr-reports: true
components: 'native-image'
- name: Package Drifty CLI for ${{ matrix.os }} with GraalVM
run: mvn -Pbuild-drifty-cli-for-${{ matrix.os }} package
- name: Set Up Maven version 3.8.8 # For GUI build issues, maven version 3.8.8 needs to be used
uses: stCarolas/setup-maven@v4.5
with:
maven-version: 3.8.8
- name: Build platform-specific C object for missing jdk libraries
run: gcc -c config/missing_symbols.c -o config/missing_symbols-${{ matrix.os }}.o
- name: Package Drifty GUI for ${{ matrix.os }} with GluonFX maven plugin
run: mvn -Pbuild-drifty-gui-for-${{ matrix.os }} gluonfx:build gluonfx:package
- name: Create Application Type specific folders
run: |
mkdir CLI
mkdir GUI
- name: Categorise build artifacts for linux
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
mv "target/CLI/linux/Drifty CLI" "target/CLI/linux/Drifty-CLI_linux"
mv "target/CLI/linux/Drifty-CLI_linux" -t CLI
mv target/gluonfx/x86_64-linux/Drifty "target/gluonfx/x86_64-linux/Drifty-GUI_linux"
mv "target/gluonfx/x86_64-linux/Drifty-GUI_linux" -t GUI
- name: Categorise build artifacts for windows
if: ${{ matrix.os == 'windows-latest' }}
run: |
Rename-Item "target/CLI/windows/Drifty CLI.exe" Drifty-CLI.exe
move "target/CLI/windows/Drifty-CLI.exe" CLI
Rename-Item target/gluonfx/x86_64-windows/Drifty-1.0.msi "Drifty-GUI.msi"
Rename-Item target/gluonfx/x86_64-windows/Drifty.exe "Drifty-GUI.exe"
move "target/gluonfx/x86_64-windows/Drifty-GUI.msi" GUI
move "target/gluonfx/x86_64-windows/Drifty-GUI.exe" GUI
- name: Categorise build artifacts for macOS
if: ${{ matrix.os == 'macos-latest' }}
run: |
mv "target/CLI/macos/Drifty CLI" "target/CLI/macos/Drifty-CLI_macos"
mv "target/CLI/macos/Drifty-CLI_macos" CLI
mv target/gluonfx/x86_64-darwin/Drifty-1.0.0.pkg "target/gluonfx/x86_64-darwin/Drifty-GUI.pkg"
mv target/gluonfx/x86_64-darwin/Drifty.app "target/gluonfx/x86_64-darwin/Drifty-GUI.app"
mv "target/gluonfx/x86_64-darwin/Drifty-GUI.pkg" GUI
mv "target/gluonfx/x86_64-darwin/Drifty-GUI.app" GUI
- name: Tar build files # To prevent file permission loss
run: tar -cvf ${{ matrix.os }}.tar CLI GUI
- name: Push generated artifacts for ${{ matrix.os }}
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.os }}-Build-Files
path: ${{ matrix.os }}.tar
generate-metadata-and-create-release:
runs-on: ubuntu-latest
needs: build-Drifty
steps:
- uses: actions/checkout@v4
- name: Get Drifty version from .version file
run: echo "VERSION=$(jq .version version.json | sed -r 's/"//g')" >> $GITHUB_ENV
- name: Set Drifty version in pom.xml
run: mvn versions:set -DnewVersion=$VERSION
- name: Download Build artifacts
uses: actions/download-artifact@v3
- name: Make OS specific build directories
run: |
mkdir linux
mkdir macos
mkdir windows
- name: Extract build files from tar
run: |
tar -xvf ubuntu-latest-Build-Files/ubuntu-latest.tar -C linux
tar -xvf macos-latest-Build-Files/macos-latest.tar -C macos
tar -xvf windows-latest-Build-Files/windows-latest.tar -C windows
- name: Get Size of Build Artifacts
run: |
echo "CLI_LINUX_SIZE=$(echo `du -h 'linux/CLI/Drifty-CLI_linux'` | sed 's/ .*//')" >> "$GITHUB_ENV"
echo "GUI_LINUX_SIZE=$(echo `du -h 'linux/GUI/Drifty-GUI_linux'` | sed 's/ .*//')" >> "$GITHUB_ENV"
echo "CLI_MACOS_SIZE=$(echo `du -h 'macos/CLI/Drifty-CLI_macos'` | sed 's/ .*//')" >> "$GITHUB_ENV"
echo "GUI_MACOS_PKG_SIZE=$(echo `du -h 'macos/GUI/Drifty-GUI.pkg'` | sed 's/ .*//')" >> "$GITHUB_ENV"
echo "GUI_MACOS_APP_SIZE=$(echo `du -h 'macos/GUI/Drifty-GUI.app'` | sed 's/ .*//')" >> "$GITHUB_ENV"
echo "CLI_WINDOWS_SIZE=$(echo `du -h 'windows/CLI/Drifty-CLI.exe'` | sed 's/ .*//')" >> "$GITHUB_ENV"
echo "GUI_WINDOWS_MSI_SIZE=$(echo `du -h 'windows/GUI/Drifty-GUI.msi'` | sed 's/ .*//')" >> "$GITHUB_ENV"
echo "GUI_WINDOWS_EXE_SIZE=$(echo `du -h 'windows/GUI/Drifty-GUI.exe'` | sed 's/ .*//')" >> "$GITHUB_ENV"
- name: Generate Artifact metadata summary
run: |
echo "# Drifty v$VERSION Built! :rocket:" >> $GITHUB_STEP_SUMMARY
echo "## Build Artifacts :package: Summary :memo:" >> $GITHUB_STEP_SUMMARY
echo "### Artifacts :package: Generated for Linux :penguin:" >> $GITHUB_STEP_SUMMARY
echo "| Application Type | Artifact Name | Size |" >> $GITHUB_STEP_SUMMARY
echo "|------------------|---------------|------|" >> $GITHUB_STEP_SUMMARY
echo "| CLI | Drifty-CLI_linux | $CLI_LINUX_SIZE |" >> $GITHUB_STEP_SUMMARY
echo "| GUI | Drifty-GUI_linux | $GUI_LINUX_SIZE |" >> $GITHUB_STEP_SUMMARY
echo "### Artifacts :package: Generated for macOS :apple:" >> $GITHUB_STEP_SUMMARY
echo "| Application Type | Artifact Name | Size |" >> $GITHUB_STEP_SUMMARY
echo "|------------------|---------------|------|" >> $GITHUB_STEP_SUMMARY
echo "| CLI | Drifty-CLI_macos | $CLI_MACOS_SIZE |" >> $GITHUB_STEP_SUMMARY
echo "| GUI | Drifty-GUI.pkg | $GUI_MACOS_PKG_SIZE |" >> $GITHUB_STEP_SUMMARY
echo "| GUI | Drifty-GUI.app | $GUI_MACOS_APP_SIZE |" >> $GITHUB_STEP_SUMMARY
echo "### Artifacts :package: Generated for Windows :window:" >> $GITHUB_STEP_SUMMARY
echo "| Application Type | Artifact Name | Size |" >> $GITHUB_STEP_SUMMARY
echo "|------------------|---------------|------|" >> $GITHUB_STEP_SUMMARY
echo "| CLI | Drifty-CLI.exe | $CLI_WINDOWS_SIZE |" >> $GITHUB_STEP_SUMMARY
echo "| GUI | Drifty-GUI.msi | $GUI_WINDOWS_MSI_SIZE |" >> $GITHUB_STEP_SUMMARY
echo "| GUI | Drifty-GUI.exe | $GUI_WINDOWS_EXE_SIZE |" >> $GITHUB_STEP_SUMMARY
if [ ${{ !inputs.create_release }} ]; then
echo "## Release :bookmark: Drifty v$VERSION" >> $GITHUB_STEP_SUMMARY
echo "Release Skipped :no_entry_sign:!" >> $GITHUB_STEP_SUMMARY
fi
- name: Create Release with automated release notes
if: ${{ inputs.create_release }}
run: |
echo "## Release :bookmark: Drifty v$VERSION" >> $GITHUB_STEP_SUMMARY
gh release create v$VERSION --generate-notes 'linux/CLI/Drifty-CLI_linux#Drifty-CLI_linux' 'linux/GUI/Drifty-GUI_linux#Drifty-GUI_linux' 'macos/CLI/Drifty-CLI_macos#Drifty-CLI_macos' 'macos/GUI/Drifty-GUI.pkg#Drifty-GUI.pkg' 'windows/CLI/Drifty-CLI.exe#Drifty-CLI.exe' 'windows/GUI/Drifty-GUI.msi#Drifty-GUI.msi' 'windows/GUI/Drifty-GUI.exe#Drifty-GUI.exe'
echo "[Released :white_check_mark: Drifty v$VERSION](https://github.com/SaptarshiSarkar12/Drifty/releases/tag/v$VERSION) successfully :rocket:!" >> $GITHUB_STEP_SUMMARY
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}