Open file in browser if is url #13078
Workflow file for this run
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: Tests | |
on: | |
push: | |
branches: | |
- main | |
- main-release | |
pull_request: | |
merge_group: | |
workflow_dispatch: | |
env: | |
SpringerNatureAPIKey: ${{ secrets.SpringerNatureAPIKey }} | |
AstrophysicsDataSystemAPIKey: ${{ secrets.AstrophysicsDataSystemAPIKey }} | |
IEEEAPIKey: ${{ secrets.IEEEAPIKey }} | |
BiodiversityHeritageApiKey: ${{ secrets.BiodiversityHeritageApiKey}} | |
GRADLE_OPTS: -Xmx4g | |
JAVA_OPTS: -Xmx4g | |
concurrency: | |
group: tests-${{ github.head_ref }} | |
cancel-in-progress: true | |
jobs: | |
checkstyle: | |
name: Code style check | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout source | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'false' | |
show-progress: 'false' | |
- name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
java-version: 20 | |
distribution: 'temurin' | |
cache: 'gradle' | |
- name: Run checkstyle reporter | |
uses: nikitasavinov/checkstyle-action@master | |
with: | |
reporter: github-pr-review | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
checkstyle_config: 'config/checkstyle/checkstyle_reviewdog.xml' | |
checkstyle_version: '10.3' | |
- name: Run checkstyle using gradle | |
run: ./gradlew checkstyleMain checkstyleTest checkstyleJmh | |
- name: Add comment on pull request | |
if: ${{ failure() }} | |
uses: thollander/actions-comment-pull-request@v2 | |
with: | |
message: > | |
Your code currently does not meet JabRef's code guidelines. | |
The tool reviewdog already placed comments on GitHub to indicate the places. See the tab "Files" in you PR. | |
Please carefully follow [the setup guide for the codestyle](https://devdocs.jabref.org/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-13-code-style.html). | |
Afterwards, please run checkstyle locally and fix the issues. | |
More information on code quality in JabRef is available at <https://devdocs.jabref.org/getting-into-the-code/development-strategy.html>. | |
comment_tag: checkstyle | |
reactions: eyes | |
- name: Run OpenRewrite | |
run: | | |
./gradlew rewriteDryRun | |
- name: Run modernizer | |
run: | | |
# enable failing of this task if modernizer complains | |
sed -i "s/failOnViolations = false/failOnViolations = true/" build.gradle | |
./gradlew modernizer | |
markdown-checks: | |
name: Markdown style check | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout source | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'false' | |
show-progress: 'false' | |
- name: Run markdown-lint | |
uses: avto-dev/markdown-lint@v1 | |
with: | |
args: CHANGELOG.md CONTRIBUTING.md README.md | |
config: '.markdownlint.yml' | |
- name: Lint CHANGELOG.md | |
run: | | |
set -e | |
curl -Ls https://sh.jbang.dev | bash -s - app setup | |
source ~/.zshrc | |
jbang .github/heylogs.java check CHANGELOG.md > heylogs.txt | |
cat heylogs.txt | |
# We have 7 "valid" issues in CHANGELOG.md | |
grep -q "7 problems" heylogs.txt || exit 1 | |
tests: | |
name: Unit tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout source | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
show-progress: 'false' | |
- name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
java-version: 20 | |
distribution: 'temurin' | |
cache: 'gradle' | |
- name: Run tests | |
run: xvfb-run --auto-servernum ./gradlew check -x checkstyleJmh -x checkstyleMain -x checkstyleTest -x modernizer | |
env: | |
CI: "true" | |
- name: Format failed test results | |
if: failure() | |
run: | | |
sudo apt-get install -qq -y xml-twig-tools xsltproc | |
scripts/after-failure.sh | |
databasetests: | |
name: Database tests | |
runs-on: ubuntu-latest | |
services: | |
postgres: | |
image: postgres:13-alpine | |
env: | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: postgres | |
POSTGRES_DB: postgres | |
ports: | |
- 5432:5432 | |
# needed because the postgres container does not provide a healthcheck | |
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 | |
steps: | |
- name: Checkout source | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
show-progress: 'false' | |
- name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
java-version: 20 | |
distribution: 'temurin' | |
cache: 'gradle' | |
- name: Run tests on PostgreSQL | |
run: ./gradlew databaseTest --rerun-tasks | |
env: | |
CI: "true" | |
DBMS: "postgresql" | |
- name: Shutdown Ubuntu MySQL | |
run: sudo service mysql stop # Shutdown the Default MySQL, "sudo" is necessary, please not remove it | |
- name: Start custom MySQL | |
uses: mirromutth/mysql-action@v1.1 | |
with: | |
host port: 3800 | |
container port: 3307 | |
character set server: 'utf8' | |
collation server: 'utf8_general_ci' | |
mysql version: '8.0' | |
mysql database: 'jabref' | |
mysql root password: 'root' | |
- name: Run tests on MySQL | |
run: ./gradlew databaseTest --rerun-tasks | |
env: | |
CI: "true" | |
DBMS: "mysql" | |
guitests: | |
name: GUI tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout source | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
show-progress: 'false' | |
- name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
java-version: 20 | |
distribution: 'temurin' | |
cache: 'gradle' | |
- name: Run GUI tests | |
run: xvfb-run --auto-servernum ./gradlew guiTest | |
env: | |
CI: "true" | |
codecoverage: | |
name: Code coverage | |
runs-on: ubuntu-latest | |
services: | |
postgres: | |
image: postgres:10.8 | |
env: | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: postgres | |
POSTGRES_DB: postgres | |
ports: | |
- 5432:5432 | |
# needed because the postgres container does not provide a healthcheck | |
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 | |
steps: | |
- name: Check secrets presence | |
id: checksecrets | |
shell: bash | |
run: | | |
if [ "$CODECOV_TOKEN" == "" ]; then | |
echo "secretspresent=NO" >> $GITHUB_OUTPUT | |
else | |
echo "secretspresent=YES" >> $GITHUB_OUTPUT | |
fi | |
env: | |
SNAPCRAFT_LOGIN_FILE: ${{ secrets.CODECOV_TOKEN }} | |
- name: Checkout source | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
show-progress: 'false' | |
- name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
java-version: 20 | |
distribution: 'temurin' | |
cache: 'gradle' | |
- name: Update test coverage metrics | |
if: steps.checksecrets.outputs.secretspresent == 'YES' | |
run: xvfb-run --auto-servernum ./gradlew jacocoTestReport && bash <(curl -s https://codecov.io/bash); | |
env: | |
CI: "true" | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
DBMS: "postgresql" | |
# This is https://github.com/marketplace/actions/gradle-wrapper-validation | |
# It ensures that the jar file is from gradle and not by a strange third party. | |
gradlevalidation: | |
name: "Validate Gradle Wrapper" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
show-progress: 'false' | |
- uses: gradle/wrapper-validation-action@v1 | |
# This ensures that no git merge conflict markers (<<<, ...) are contained | |
merge_conflict_job: | |
name: Find merge conflicts | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
show-progress: 'false' | |
- name: Merge Conflict finder | |
uses: olivernybroe/action-conflict-finder@v4.0 |