CI #151
This file contains 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: CI | |
on: | |
push: | |
branches: | |
- main | |
- 'testing/**' | |
- 'feature/**' | |
- 'hotfix/**' | |
# Run pipeline for release tags | |
tags: | |
- 'v*.*.*' | |
schedule: | |
# Weekly builds on Monday morning 5:42 | |
# Github doc: | |
# "The schedule event can be delayed during periods of high loads of GitHub Actions workflow runs. | |
# High load times include the start of every hour. | |
# To decrease the chance of delay, schedule your workflow to run at a different time of the hour." | |
# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule | |
- cron: '42 5 * * 1' | |
jobs: | |
build: | |
runs-on: [ubuntu-22.04] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
- name: Set up Maven | |
uses: stCarolas/setup-maven@v5 | |
with: | |
maven-version: 3.9.9 | |
- name: Build with Maven | |
run: mvn --batch-mode --update-snapshots package | |
- name: Upload updatesite artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: org.emoflon.ilp.updatesite | |
path: org.emoflon.ilp.updatesite/target/org.emoflon.ilp.updatesite-*.zip | |
- name: Upload plugin artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: org.emoflon.ilp | |
path: org.emoflon.ilp.updatesite/target/repository/plugins/org.emoflon.ilp*.jar | |
doc: | |
runs-on: [ubuntu-22.04] | |
needs: [build] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
- name: Set up Maven | |
uses: stCarolas/setup-maven@v5 | |
with: | |
maven-version: 3.9.9 | |
- name: Create JavaDoc with Maven | |
run: mvn --batch-mode --update-snapshots site | |
- name: Upload doc artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: javadoc | |
path: org.emoflon.ilp/target/site | |
test: | |
runs-on: [ubuntu-22.04] | |
needs: [build] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
- name: Install GLPK | |
run: | | |
sudo apt-get install -yq glpk-utils libglpk-dev glpk-doc libglpk-java libglpk40 | |
sudo cp /usr/lib/x86_64-linux-gnu/jni/libglpk_java.* /usr/lib/ | |
- name: Set up Maven | |
uses: stCarolas/setup-maven@v5 | |
with: | |
maven-version: 3.9.9 | |
- name: Test with Maven | |
run: mvn --batch-mode --update-snapshots clean -Dtest=BasicTest,GlpkTest,SolverTest -DfailIfNoTests=false verify | |
create-release: | |
runs-on: [ubuntu-22.04] | |
needs: [build, test, doc] | |
# Only run on pushed tags (and explicitely ignore scheduled runs) | |
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') && github.event_name != 'schedule' | |
steps: | |
- name: Install dependencies | |
run: sudo apt-get install -yq zip unzip | |
- name: Collect artifacts | |
uses: actions/download-artifact@master | |
- name: Create javadoc site ZIP archive | |
run: | | |
zip -qr javadoc.zip javadoc | |
- name: Release emoflon-ilp | |
uses: softprops/action-gh-release@v2 | |
with: | |
files: | | |
org.emoflon.ilp.updatesite/org.emoflon.ilp.updatesite-*.zip | |
org.emoflon.ilp/org.emoflon.ilp*.jar | |
javadoc.zip |