Skip to content

Commit

Permalink
Create snapshot CI
Browse files Browse the repository at this point in the history
Signed-off-by: Damien Jeandemange <[email protected]>
  • Loading branch information
jeandemanged committed Dec 16, 2024
1 parent ddef659 commit 3bfe8f8
Show file tree
Hide file tree
Showing 2 changed files with 137 additions and 0 deletions.
17 changes: 17 additions & 0 deletions .github/scripts/check_integration_branch.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash

repo=$1
core_version=$2

# Add "-SNAPSHOT" to powsybl-core version if not already there
core_snapshot_version=$(echo "$core_version" | grep -q SNAPSHOT && echo "$core_version" || echo "$core_version-SNAPSHOT")

# Find if an integration branch exists
INTEGRATION_BRANCH=$(git ls-remote --heads "$repo" | grep -E "refs/heads/integration/powsyblcore-$core_snapshot_version" | sed 's/.*refs\/heads\///')
if [ -n "$INTEGRATION_BRANCH" ]; then
echo "SNAPSHOT VERSION EXIST: $INTEGRATION_BRANCH"
echo "INTEGRATION_BRANCH=$INTEGRATION_BRANCH" >> "$GITHUB_ENV"
else
echo "No SNAPSHOT branch found"
echo "INTEGRATION_BRANCH=main" >> "$GITHUB_ENV"
fi
120 changes: 120 additions & 0 deletions .github/workflows/snapshot-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
name: Snapshot CI

on:
workflow_dispatch:
schedule:
- cron: '30 3 * * *'

jobs:
build:
name: Build OS ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest] # macos-latest : Knitro does not yet support Java API on macOS, to be tried later on

steps:
- name: Install Knitro (Linux)
if: matrix.os == 'ubuntu-latest'
run: |
wget -nv -O knitro.tar.gz --user "$KNITRO_DOWNLOAD_USER" --password "$KNITRO_DOWNLOAD_PASSWORD" "$KNITRO_LINUX_URL"
mkdir -p $RUNNER_TEMP/knitro
tar xzf knitro.tar.gz -C $RUNNER_TEMP/knitro
echo "KNITRODIR=$RUNNER_TEMP/knitro/knitro-14.1.0-Linux64" >> "$GITHUB_ENV"
env:
KNITRO_DOWNLOAD_USER: ${{ secrets.KNITRO_DOWNLOAD_USER }}
KNITRO_DOWNLOAD_PASSWORD: ${{ secrets.KNITRO_DOWNLOAD_PASSWORD }}
KNITRO_LINUX_URL: ${{ secrets.KNITRO_LINUX_URL }}

- name: Install Knitro (Windows)
if: matrix.os == 'windows-latest'
shell: powershell
run: |
C:\msys64\usr\bin\wget.exe -nv -O knitro.zip --user "$env:KNITRO_DOWNLOAD_USER" --password "$env:KNITRO_DOWNLOAD_PASSWORD" "$env:KNITRO_WINDOWS_URL"
7z x -y knitro.zip -oC:\knitro
echo "KNITRODIR=C:\knitro\knitro-14.1.0-Win64" >> "$env:GITHUB_ENV"
env:
KNITRO_DOWNLOAD_USER: ${{ secrets.KNITRO_DOWNLOAD_USER }}
KNITRO_DOWNLOAD_PASSWORD: ${{ secrets.KNITRO_DOWNLOAD_PASSWORD }}
KNITRO_WINDOWS_URL: ${{ secrets.KNITRO_WINDOWS_URL }}

# Define script path variable
- name: Set up script path
run: |
SCRIPTS_PATH="${GITHUB_WORKSPACE}/scripts/.github/workflows/scripts"
if [[ "${{ matrix.os }}" == "windows-latest" ]]; then
SCRIPTS_PATH=$(echo "$SCRIPTS_PATH" | sed 's/\\/\//g')
fi
echo "SCRIPTS_PATH=$SCRIPTS_PATH" >> $GITHUB_ENV
# Build powsybl-core on main branch
- name: Checkout core sources
uses: actions/checkout@v4
with:
repository: powsybl/powsybl-core
ref: main
path: powsybl-core

- name: Build powsybl-core
run: |
mvn -batch-mode --no-transfer-progress clean install -DskipTests
echo "CORE_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
working-directory: ./powsybl-core

# Checkout script
# The script check_integration_branch.sh is located in the workflow folder of the repository
# It is necessary for checking out the integration branch if it exists
- name: Checkout script
uses: actions/checkout@v4
with:
sparse-checkout: |
.github
sparse-checkout-cone-mode: false
path: scripts

# Build powsybl-open-loadflow snapshot
- name: Checking for open-loadflow snapshot branch
run : ${{ env.SCRIPTS_PATH }}/check_snapshot_branch.sh "https://github.com/powsybl/powsybl-open-loadflow.git" ${{ env.CORE_VERSION }}
- name: Checkout open-loadflow sources
uses: actions/checkout@v4
with:
repository: powsybl/powsybl-open-loadflow
ref: ${{ env.SNAPSHOT_BRANCH }}
path: powsybl-open-loadflow
- name: Build open-loadflow snapshot
run: |
mvn versions:set-property -Dproperty=powsybl-core.version -DnewVersion=${{ env.CORE_VERSION}} -DgenerateBackupPoms=false
mvn -batch-mode --no-transfer-progress clean install -DskipTests
echo "LOADFLOW_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
working-directory: ./powsybl-open-loadflow

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

- name: update pom.xml with snapshot versions
run: |
mvn versions:set-property -Dproperty=powsybl-core.version -DnewVersion=$CORE_VERSION -DgenerateBackupPoms=false
mvn versions:set-property -Dproperty=powsybl-open-loadflow.version -DnewVersion=$LOADFLOW_VERSION -DgenerateBackupPoms=false
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'

- name: Build with Maven (Ubuntu)
if: matrix.os != 'windows-latest'
run: |
./mvnw install:install-file -Dfile="$KNITRODIR/examples/Java/lib/Knitro-Interfaces-2.5-KN_14.1.0.jar" -DgroupId=com.artelys -DartifactId=knitro-interfaces -Dversion=14.1.0 -Dpackaging=jar -DgeneratePom=true
./mvnw --batch-mode -Pjacoco install
env:
ARTELYS_LICENSE: ${{ secrets.ARTELYS_LICENSE }}

- name: Build with Maven (Windows)
if: matrix.os == 'windows-latest'
run: |
call mvnw.cmd install:install-file -Dfile="%KNITRODIR%\examples\Java\lib\Knitro-Interfaces-2.5-KN_14.1.0.jar" -DgroupId=com.artelys -DartifactId=knitro-interfaces -Dversion=14.1.0 -Dpackaging=jar -DgeneratePom=true
mvnw.cmd --batch-mode install
shell: cmd
env:
ARTELYS_LICENSE: ${{ secrets.ARTELYS_LICENSE }}

0 comments on commit 3bfe8f8

Please sign in to comment.