67 lines
2.0 KiB
YAML
67 lines
2.0 KiB
YAML
name: Build and Package JRuby Rails App
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Java and JRuby
|
|
run: |
|
|
apt-get update && apt-get install -y wget curl libgmp-dev
|
|
# Install Java (needed for JRuby and jpackage)
|
|
apt-get install -y openjdk-17-jdk
|
|
|
|
# Download and install JRuby directly
|
|
JRUBY_VERSION="9.4.6.0"
|
|
curl -O https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz
|
|
tar -xzf jruby-dist-${JRUBY_VERSION}-bin.tar.gz -C /opt/
|
|
ln -s /opt/jruby-${JRUBY_VERSION}/bin/jruby /usr/local/bin/jruby
|
|
ln -s /opt/jruby-${JRUBY_VERSION}/bin/bundle /usr/local/bin/bundle
|
|
|
|
- name: Install Dependencies
|
|
run: |
|
|
bundle install
|
|
|
|
- name: Build JAR with Jarbler
|
|
run: |
|
|
gem install jarbler
|
|
jarble
|
|
|
|
- name: Generate Unique App Name with Git Hash
|
|
id: vars
|
|
run: |
|
|
SHORT_HASH=$(git rev-parse --short HEAD)
|
|
echo "app_name=custom-app-${SHORT_HASH}" >> $GITHUB_OUTPUT
|
|
|
|
- name: Package with jpackage
|
|
run: |
|
|
# Find the generated jar file name dynamically
|
|
JAR_FILE=$(ls build/*.jar | head -n 1)
|
|
|
|
# Run jpackage to bundle the application and runtime into an app-image directory
|
|
jpackage \
|
|
--type app-image \
|
|
--name "${{ steps.vars.outputs.app_name }}" \
|
|
--input "$(dirname "$JAR_FILE")" \
|
|
--main-jar "$(basename "$JAR_FILE")" \
|
|
--dest dist
|
|
|
|
- name: Compress Executable Package
|
|
run: |
|
|
cd dist
|
|
tar -czvf "${{ steps.vars.outputs.app_name }}.tar.gz" "${{ steps.vars.outputs.app_name }}"
|
|
|
|
- name: Upload Artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ steps.vars.outputs.app_name }}
|
|
path: dist/*.tar.gz
|