diff --git a/.github/workflows/approve_dependabotifications.yml b/.github/workflows/approve_dependabotifications.yml new file mode 100644 index 00000000..e44597e5 --- /dev/null +++ b/.github/workflows/approve_dependabotifications.yml @@ -0,0 +1,25 @@ +name: Dependabot auto-approve +on: pull_request + +permissions: + contents: write + pull-requests: write + +jobs: + dependabot: + runs-on: ubuntu-latest + if: github.actor == 'dependabot[bot]' + steps: + - name: Dependabot metadata + id: metadata + uses: dependabot/fetch-metadata@v2 + with: + github-token: "${{ secrets.GITHUB_TOKEN }}" + + # Note: If you use status checks to test pull requests, you should enable Require status checks to pass before merging for the target branch for Dependabot pull requests. This branch protection rule ensures that pull requests are not merged unless all the required status checks pass. For more information, see "Managing a branch protection rule." + - name: Enable auto-merge for Dependabot PRs + # if: steps.metadata.outputs.update-type == 'version-update:semver-patch' && contains(steps.metadata.outputs.dependency-names, 'my-dependency') + run: gh pr merge --auto --merge "$PR_URL" + env: + PR_URL: ${{github.event.pull_request.html_url}} + GH_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml new file mode 100644 index 00000000..bc16b635 --- /dev/null +++ b/.github/workflows/version.yml @@ -0,0 +1,102 @@ +name: Version handling + +on: + pull_request: + types: + - closed + branches: + - master + +jobs: + version-update: + # This version does not run on self-opened PRs + if: ${{ github.event.pull_request.merged == true && github.event.pull_request.user.login != 'github-actions[bot]' }} + runs-on: ubuntu-latest + steps: + - name: Checkout source code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + # Sets up Java version + - name: Set up Java + uses: actions/setup-java@v4 + with: + distribution: 'adopt' + java-package: jdk + java-version: '11' + # Semantic versioning + - name: Semantic versioning + id: versioning + uses: paulhatch/semantic-version@v5.4.0 + with: + tag_prefix: "" + # A string which, if present in a git commit, indicates that a change represents a + # major (breaking) change, supports regular expressions wrapped with '/' + major_pattern: "(MAJOR)" + # Same as above except indicating a minor change, supports regular expressions wrapped with '/' + minor_pattern: "(MINOR)" + # A string to determine the format of the version output + version_format: "${major}.${minor}.${patch}" + # Check, whether there is an existing branch "version_" -> "master" + # and store the results as environment variables + - name: Check if branch and PR exist + # The second command was copied from https://stackoverflow.com/questions/73812503/github-action-stop-the-action-if-pr-already-exists + run: | + echo VERSION_BRANCH_EXISTS=$(git ls-remote --heads origin refs/heads/version_${{ steps.versioning.outputs.version }} | wc -l) >> $GITHUB_ENV + echo PR_EXISTS=$(gh pr list \ + --repo "$GITHUB_REPOSITORY" \ + --json baseRefName,headRefName \ + --jq ' + map(select(.baseRefName == "master" and .headRefName == "version_${{ steps.versioning.outputs.version }}")) + | length + ') >> $GITHUB_ENV + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # If the branch "version_" does not exist, create the branch and update the version in all files + - name: Create branch and update SPDS version + if: ${{ env.VERSION_BRANCH_EXISTS == '0' }} + run: | + git config --global user.email "github-actions[bot]@users.noreply.github.com" + git config --global user.name "github-actions[bot]" + git checkout -b version_${{ steps.versioning.outputs.version }} + mvn build-helper:parse-version versions:set -DnewVersion=\${{ steps.versioning.outputs.version }} versions:commit + git ls-files | grep 'pom.xml$' | xargs git add + git commit --allow-empty -am "Update SPDS version to ${{ steps.versioning.outputs.version }}" + git push origin version_${{ steps.versioning.outputs.version }} + # If a PR "version_" -> "master" does not exist, create the PR + - name: Open pull request for version update + if: ${{ env.PR_EXISTS == '0' }} + run: | + gh pr create -B master -H version_${{ steps.versioning.outputs.version }} -t "Update SPDS version to ${{ steps.versioning.outputs.version }}" -b "This PR was created by the version-update workflow. Please make sure to delete the branch after merging, otherwise future workflows might fail." + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + version-release: + # This job runs only on merged PRs, which were opened by the version-update job + if: ${{ github.event.pull_request.merged == true && github.event.pull_request.user.login == 'github-actions[bot]' }} + runs-on: ubuntu-latest + steps: + - name: Checkout source code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + # Semantic versioning + - name: Semantic versioning + id: versioning + uses: paulhatch/semantic-version@v5.4.0 + with: + tag_prefix: "" + # A string which, if present in a git commit, indicates that a change represents a + # major (breaking) change, supports regular expressions wrapped with '/' + major_pattern: "(MAJOR)" + # Same as above except indicating a minor change, supports regular expressions wrapped with '/' + minor_pattern: "(MINOR)" + # A string to determine the format of the version output + version_format: "${major}.${minor}.${patch}" + # Create a tag with the newest version to prepare a release + - name: Create tag for new version + run: | + git config --global user.email "${{ github.actor }}@users.noreply.github.com" + git config --global user.name "${{ github.actor }}" + git tag -a ${{ steps.versioning.outputs.version }} -m "SPDS version ${{ steps.versioning.outputs.version }}" + git push origin ${{ steps.versioning.outputs.version }} diff --git a/README.md b/README.md index d58479a9..b82f5c98 100644 --- a/README.md +++ b/README.md @@ -28,19 +28,26 @@ Additionally, it contains an implementation of [Boomerang](boomerangPDS) and [ID ## Use as Maven dependency -The projects are released on [Maven Central](https://central.sonatype.com/artifact/de.fraunhofer.iem/SPDS) and can be included as a dependency in `.pom` files: +The projects are released on [Maven Central](https://central.sonatype.com/artifact/de.fraunhofer.iem/SPDS) and can be included as a dependency in `.pom` files (replace `x.y.z` with the latest version). -To include a dependency from this repository to your poject, you first have to add the repository to your pom file: +- Boomerang can be included with the following dependency: +```.xml + + de.fraunhofer.iem + boomerangPDS + x.y.z + +``` + +- IDEal can be included with the following dependency: ```.xml - - - de.fraunhofer.iem - SPDS - 3.1.2-SNAPSHOT - - + + de.fraunhofer.iem + idealPDS + x.y.z + ``` ## Checkout, Build and Install diff --git a/SparseBoomerangCorrectness/pom.xml b/SparseBoomerangCorrectness/pom.xml index 7477404c..7f8b412e 100644 --- a/SparseBoomerangCorrectness/pom.xml +++ b/SparseBoomerangCorrectness/pom.xml @@ -25,7 +25,7 @@ com.google.guava guava - 33.3.0-jre + 33.3.1-jre diff --git a/SynchronizedPDS/pom.xml b/SynchronizedPDS/pom.xml index 7aeedf63..abcd248a 100644 --- a/SynchronizedPDS/pom.xml +++ b/SynchronizedPDS/pom.xml @@ -12,7 +12,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.4.0 + 3.5.1 -Xmx8G -Xss128m diff --git a/boomerangPDS/pom.xml b/boomerangPDS/pom.xml index c1699519..9640f749 100644 --- a/boomerangPDS/pom.xml +++ b/boomerangPDS/pom.xml @@ -13,7 +13,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.4.0 + 3.5.1 -Xmx8G -Xss128m @@ -73,7 +73,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.4.0 + 3.5.1 integration-test diff --git a/boomerangScope-WALA/pom.xml b/boomerangScope-WALA/pom.xml index e53cacea..10cfb85d 100644 --- a/boomerangScope-WALA/pom.xml +++ b/boomerangScope-WALA/pom.xml @@ -9,7 +9,7 @@ boomerangScope-WALA - 1.6.6 + 1.6.7 diff --git a/idealPDS/pom.xml b/idealPDS/pom.xml index 844235b7..ed61a59c 100644 --- a/idealPDS/pom.xml +++ b/idealPDS/pom.xml @@ -52,13 +52,12 @@ org.apache.maven.plugins maven-surefire-plugin - 3.4.0 + 3.5.1 integration-test - - + -Xmx8G -Xss128m **/*LongTest.java diff --git a/pom.xml b/pom.xml index 594aec93..8c2e0253 100644 --- a/pom.xml +++ b/pom.xml @@ -33,9 +33,7 @@ Johannes Spaeth - johannes.spaeth@codeshield.de - CodeShield GmbH - https://codeshield.de/ + mail@johspaeth.de Manuel Benz @@ -71,7 +69,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.4.0 + 3.5.1 -Xmx8G -Xss128m @@ -133,7 +131,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.8.0 + 3.10.1 8 @@ -167,7 +165,7 @@ com.google.guava guava - 33.3.0-jre + 33.3.1-jre junit @@ -178,7 +176,7 @@ de.fraunhofer.iem pathexpression - 1.0.2 + 1.0.4 org.soot-oss @@ -188,7 +186,7 @@ org.apache.commons commons-lang3 - 3.16.0 + 3.17.0 de.fraunhofer.iem @@ -240,7 +238,7 @@ org.apache.maven.plugins maven-gpg-plugin - 3.2.5 + 3.2.7 sign-artifacts