Merge pull request #10544 from JabRef/l10n_main #403
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: Checkstyle | |
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: 21.0.1 | |
distribution: 'liberica' | |
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. | |
We use [Checkstyle](https://checkstyle.sourceforge.io/) to identify issues. | |
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 | |
openrewrite: | |
name: OpenRewrite | |
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: 21.0.1 | |
distribution: 'liberica' | |
cache: 'gradle' | |
- name: Run OpenRewrite | |
run: | | |
./gradlew rewriteDryRun | |
- 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. | |
We use [OpenRewrite](https://docs.openrewrite.org/) to ensure "modern" Java coding practices. | |
The issues found can be **automatically fixed**. | |
Please execute the gradle task *`rewriteRun`*, check the results, commit, and push. | |
You can check the detailed error output at the tab "Checks", section "Tests" (on the left), subsection "OpenRewrite". | |
comment_tag: openrewrite | |
modernizer: | |
name: Modernizer | |
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: 21.0.1 | |
distribution: 'liberica' | |
cache: 'gradle' | |
- name: Run modernizer | |
run: | | |
# enable failing of this task if modernizer complains | |
sed -i "s/failOnViolations = false/failOnViolations = true/" build.gradle | |
./gradlew modernizer | |
- 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. | |
We use [Gradle Modernizer Plugin](https://github.com/andygoossens/gradle-modernizer-plugin#gradle-modernizer-plugin) to ensure "modern" Java coding practices. | |
Please fix the detected errors, commit, and push. | |
You can check the detailed error output at the tab "Checks", section "Tests" (on the left), subsection "Modernizer". | |
comment_tag: 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 | tee heylogs.txt | |
# We have 2 "valid" issue in CHANGELOG.md | |
grep -q "2 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: 21.0.1 | |
distribution: 'liberica' | |
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: 21.0.1 | |
distribution: 'liberica' | |
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/[email protected] | |
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: 21.0.1 | |
distribution: 'liberica' | |
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: 21.0.1 | |
distribution: 'liberica' | |
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/[email protected] |