name: Build and Package JRuby Rails App on: push: branches: - [main, second_try] jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Ruby & JRuby uses: ruby/setup-ruby@v1 with: ruby-version: jruby-9.4.6.0 # Match your target JRuby version - name: Install Dependencies run: | bundle install - name: Build JAR with Jarbler run: | gem install jarbler jarble - name: Set up Java JDK (for jpackage) uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '17' - 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