Update NeqSim JAR #23
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Update NeqSim JAR | |
| on: | |
| schedule: | |
| - cron: "0 */6 * * *" | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: Optional NeqSim version override (for example 3.14.0-Java8) | |
| required: false | |
| type: string | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| jobs: | |
| update-jar: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Resolve version and download JAR from Maven Central | |
| id: download | |
| env: | |
| REQUESTED_VERSION: ${{ inputs.version || '' }} | |
| run: | | |
| set -euo pipefail | |
| git config --global diff.renames no | |
| BASE_URL="https://repo1.maven.org/maven2/com/equinor/neqsim/neqsim" | |
| METADATA_URL="$BASE_URL/maven-metadata.xml" | |
| add_candidate() { | |
| local candidate="$1" | |
| if [[ -z "$candidate" ]]; then | |
| return | |
| fi | |
| for existing in "${candidates[@]:-}"; do | |
| if [[ "$existing" == "$candidate" ]]; then | |
| return | |
| fi | |
| done | |
| candidates+=("$candidate") | |
| } | |
| normalize_java8_version() { | |
| local version="$1" | |
| version="${version#refs/tags/}" | |
| version="${version#v}" | |
| if [[ "$version" != *-Java8 ]]; then | |
| version="${version}-Java8" | |
| fi | |
| printf '%s' "$version" | |
| } | |
| add_variants() { | |
| local version="$1" | |
| if [[ -z "$version" ]]; then | |
| return | |
| fi | |
| add_candidate "$(normalize_java8_version "$version")" | |
| } | |
| candidates=() | |
| requested="${REQUESTED_VERSION#refs/tags/}" | |
| add_variants "$requested" | |
| metadata="$(curl -fsSL "$METADATA_URL")" | |
| release_version="$(printf '%s' "$metadata" | tr -d '\n' | sed -n 's:.*<release>\(.*\)</release>.*:\1:p')" | |
| add_variants "$release_version" | |
| selected_version="" | |
| selected_url="" | |
| for version in "${candidates[@]}"; do | |
| url="$BASE_URL/$version/neqsim-$version.jar" | |
| if curl -fsI "$url" > /dev/null; then | |
| selected_version="$version" | |
| selected_url="$url" | |
| break | |
| fi | |
| done | |
| if [[ -z "$selected_version" ]]; then | |
| echo "Unable to resolve a downloadable NeqSim JAR version from Maven Central." >&2 | |
| echo "Tried candidates: ${candidates[*]}" >&2 | |
| exit 1 | |
| fi | |
| if [[ "$selected_version" != *-Java8 ]]; then | |
| echo "Resolved version is not a Java8 artifact: $selected_version" >&2 | |
| exit 1 | |
| fi | |
| current_jar="$(ls ext/neqsim-*.jar 2>/dev/null | head -n 1 || true)" | |
| current_version="" | |
| if [[ -n "$current_jar" ]]; then | |
| current_name="$(basename "$current_jar")" | |
| current_version="${current_name#neqsim-}" | |
| current_version="${current_version%.jar}" | |
| fi | |
| if [[ "$selected_version" == "$current_version" ]]; then | |
| echo "NeqSim JAR already up to date: $selected_version" | |
| echo "updated=false" >> "$GITHUB_OUTPUT" | |
| echo "version=$selected_version" >> "$GITHUB_OUTPUT" | |
| echo "jar_name=neqsim-$selected_version.jar" >> "$GITHUB_OUTPUT" | |
| echo "download_url=$BASE_URL/$selected_version/neqsim-$selected_version.jar" >> "$GITHUB_OUTPUT" | |
| exit 0 | |
| fi | |
| jar_name="neqsim-$selected_version.jar" | |
| curl -fsSL "$selected_url" -o "$jar_name" | |
| old_jar="$(ls ext/neqsim-*.jar 2>/dev/null | head -n 1 || true)" | |
| if [[ -n "$old_jar" ]]; then | |
| git rm -f "$old_jar" | |
| fi | |
| mv "$jar_name" "ext/$jar_name" | |
| git add "ext/$jar_name" | |
| echo "updated=true" >> "$GITHUB_OUTPUT" | |
| echo "version=$selected_version" >> "$GITHUB_OUTPUT" | |
| echo "jar_name=$jar_name" >> "$GITHUB_OUTPUT" | |
| echo "download_url=$selected_url" >> "$GITHUB_OUTPUT" | |
| - name: Create Pull Request | |
| if: steps.download.outputs.updated == 'true' | |
| uses: peter-evans/create-pull-request@v6 | |
| with: | |
| commit-message: "chore: update neqsim jar to ${{ steps.download.outputs.version }}" | |
| title: "chore: update neqsim jar to ${{ steps.download.outputs.version }}" | |
| body: | | |
| Automated update of NeqSim JAR in `ext`. | |
| - Source: Maven Central | |
| - Version: `${{ steps.download.outputs.version }}` | |
| - Artifact: `${{ steps.download.outputs.jar_name }}` | |
| - URL: `${{ steps.download.outputs.download_url }}` | |
| Triggered by `${{ github.event_name }}`. | |
| branch: "chore/update-neqsim-jar-${{ steps.download.outputs.version }}" | |
| delete-branch: true |