Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
# Dependabot keeps SkySimulation dependency drift visible while CI validates every update.
version: 2

updates:
- package-ecosystem: "gradle"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "09:00"
timezone: "Europe/Amsterdam"
open-pull-requests-limit: 10
labels:
- "dependencies"
- "gradle"
commit-message:
prefix: "deps"
include: "scope"
groups:
jme-runtime-stack:
patterns:
- "org.jmonkeyengine:*"
- "com.github.stephengold:*"
test-and-tools:
patterns:
- "junit:junit"
- "org.jcommander:*"
- "org.apache.commons:*"
- "de.undercouch.download"
lua-runtime:
patterns:
- "org.luaj:*"
ui-example-stack:
patterns:
- "com.github.nifty-gui:*"
- "com.github.stephengold:jme3-utilities-nifty"

- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "tuesday"
time: "09:00"
timezone: "Europe/Amsterdam"
open-pull-requests-limit: 5
labels:
- "dependencies"
- "github-actions"
commit-message:
prefix: "ci"
include: "scope"
groups:
github-actions:
patterns:
- "actions/*"
- "gradle/actions*"
- "softprops/action-gh-release"
99 changes: 63 additions & 36 deletions .github/workflows/push.yml
Original file line number Diff line number Diff line change
@@ -1,43 +1,70 @@
---
# GitHub Actions workflow for commits pushed to the SkyControl repo - all branches
name: CI

name: CI at GitHub
on: [push]
on:
push:
branches:
- '**'
pull_request:
branches:
- '**'
workflow_dispatch:

permissions:
contents: read

concurrency:
group: sky-ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
Java17-Linux:
if: contains(toJson(github.event.commits), '[ci skip] ') == false
runs-on: ubuntu-24.04
timeout-minutes: 3
steps:
- uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: 17
- uses: actions/checkout@v7
- uses: gradle/actions/wrapper-validation@v6
- run: ./gradlew build --console=plain --stacktrace

Java21-MacOS:
if: contains(toJson(github.event.commits), '[ci skip] ') == false
runs-on: macos-26
timeout-minutes: 10
validate:
name: ${{ matrix.name }}
if: ${{ !contains(github.event.head_commit.message || '', '[ci skip]') }}
runs-on: ${{ matrix.os }}
timeout-minutes: 25
strategy:
fail-fast: false
matrix:
include:
- name: Linux Java 17
os: ubuntu-24.04
java: '17'
command: ./gradlew --no-daemon clean build packageLocal --console=plain --stacktrace
shell: bash
- name: Windows Java 17
os: windows-2025
java: '17'
command: gradlew.bat --no-daemon clean build packageLocal --console=plain --stacktrace
shell: cmd

steps:
- uses: actions/setup-java@v5
- name: Checkout
uses: actions/checkout@v4

- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 21
- uses: actions/checkout@v7
- run: ./gradlew build --console=plain --stacktrace

Java26-Windows:
if: contains(toJson(github.event.commits), '[ci skip] ') == false
runs-on: windows-2025
steps:
- uses: actions/setup-java@v5
distribution: temurin
java-version: ${{ matrix.java }}

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v4

- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4

- name: Build, test, checkstyle, and local package
shell: ${{ matrix.shell }}
run: ${{ matrix.command }}

- name: Upload problem reports
if: failure()
uses: actions/upload-artifact@v4
with:
distribution: 'liberica'
java-version: 26
- uses: actions/checkout@v7
- run: ./gradlew build --console=plain --stacktrace
shell: bash
name: reports-${{ matrix.name }}
if-no-files-found: ignore
path: |
build/reports/**
**/build/reports/**
**/build/test-results/**
67 changes: 67 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: Release

on:
push:
tags:
- 'v*'
workflow_dispatch:
inputs:
version:
description: 'Release version without the v prefix, for example 1.0.0'
required: true
default: '1.0.0'

permissions:
contents: write
packages: write

jobs:
release:
runs-on: windows-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Resolve version
id: version
shell: bash
run: |
if [[ "${GITHUB_REF}" == refs/tags/v* ]]; then
VERSION="${GITHUB_REF_NAME#v}"
else
VERSION="${{ github.event.inputs.version }}"
fi
echo "version=${VERSION}" >> "${GITHUB_OUTPUT}"
echo "Resolved release version: ${VERSION}"

- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
cache: gradle

- name: Build and test
shell: cmd
run: gradlew.bat --no-daemon clean build packageLocal --console=plain --stacktrace -PskySimulationVersion=${{ steps.version.outputs.version }}

- name: Publish to GitHub Packages
shell: cmd
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gradlew.bat --no-daemon publishGithubPackage --console=plain --stacktrace -PskySimulationVersion=${{ steps.version.outputs.version }}

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ steps.version.outputs.version }}
name: SkySimulation v${{ steps.version.outputs.version }}
body_path: RELEASE_NOTES_v${{ steps.version.outputs.version }}.md
generate_release_notes: true
files: |
SkyLibrary/build/libs/sky-simulation-${{ steps.version.outputs.version }}.jar
SkyLibrary/build/libs/sky-simulation-${{ steps.version.outputs.version }}-sources.jar
SkyLibrary/build/libs/sky-simulation-${{ steps.version.outputs.version }}-javadoc.jar
SkyLibrary/build/libs/sky-simulation-${{ steps.version.outputs.version }}.pom
SkyLibrary/build/libs/sky-simulation-${{ steps.version.outputs.version }}.module
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
/SkyAssets/src/main/resources/bsc5.dat.gz
/SkyExamples/private/
/SkyExamples/Written Assets/
/SkyLibrary/src/main/resources/Textures/skies/

# Ignore Gradle's project-specific cache directory:
/.gradle/
Expand Down
36 changes: 36 additions & 0 deletions PACKAGE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Take Some SkySimulation package

Internal Maven/Gradle package coordinates:

```kotlin
implementation("dev.takesome:sky-simulation:1.4.3")
```

Install the package into Maven Local:

```bat
gradlew.bat packageLocal
```

Use it from another Gradle project:

```kotlin
repositories {
mavenLocal()
mavenCentral()
}

dependencies {
implementation("dev.takesome:sky-simulation:1.4.3-SNAPSHOT")
}
```

The Java package namespace remains compatible with SkyControl:

```java
import jme3utilities.sky.SkyControl;
import jme3utilities.sky.SkyAtmosphere;
```

This avoids breaking existing code while publishing the artifact under Take Some
coordinates.
Loading