Skip to content

New CI for DiffTool.java #38

New CI for DiffTool.java

New CI for DiffTool.java #38

Workflow file for this run

name: CI/CD for DiffTool
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch: # Allows manual triggering
jobs:
build-and-test:
runs-on: ubuntu-latest
env:
JAVA_VERSION: '21'
CONFIG_DIR: '.ci-config'
DIFFTOOL_JAR: "diff-java-tool.jar"
PATCH_DIFF_TOOL_VERSION: "0.1-SNAPSHOT"
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
clean: true
fetch-depth: 1
- name: Set up JDK ${{ env.JAVA_VERSION }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ env.JAVA_VERSION }}
cache: 'gradle'
- name: Cache Maven Dependencies
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
maven-
- name: Build with Gradle
run: |
cd diff-java-tool
./gradlew clean build
- name: Copy DiffTool JAR to workspace
run: |
cp diff-java-tool/build/libs/diff-java-tool-*-all.jar "${{ github.workspace }}/${{ env.DIFFTOOL_JAR }}"
- name: Download patch-diff-report-tool JAR
uses: robinraju/[email protected]
with:
repository: "checkstyle/contribution"
tag: "patch-diff-report-tool-${{ env.PATCH_DIFF_TOOL_VERSION }}"
fileName: >-
patch-diff-report-tool-${{ env.PATCH_DIFF_TOOL_VERSION }}-jar-with-dependencies.jar
out-file-path: "${{ github.workspace }}"
- name: Clone Checkstyle Repository
run: |
git clone https://github.com/checkstyle/checkstyle.git "${{ github.workspace }}/checkstyle"
- name: Create Temporary Patch Branch
run: |
cd "${{ github.workspace }}/checkstyle"
git config user.email "[email protected]"
git config user.name "GitHub Actions"
git checkout -b temp-patch-branch
# Optionally make a minor change to ensure reports are different
echo "// Temporary change" >> dummy.java
git add dummy.java
git commit -m "Temporary change for testing"
- name: Execute DiffTool.jar in Diff Mode
env:
CONFIG_XML: "${{ github.workspace }}/${{ env.CONFIG_DIR }}/config.xml"
PROJECTS_PROPERTIES: "${{ github.workspace }}/${{ env.CONFIG_DIR }}/project.yml"
DIFFTOOL_JAR_PATH: "${{ github.workspace }}/${{ env.DIFFTOOL_JAR }}"
PATCH_DIFF_TOOL_JAR_PATH: "${{ github.workspace }}/patch-diff-report-tool-${{ env.PATCH_DIFF_TOOL_VERSION }}-jar-with-dependencies.jar"
run: |
REPO="${{ github.workspace }}/checkstyle"
echo "Running DiffTool.jar in 'diff' mode"
java -jar "${DIFFTOOL_JAR_PATH}" \
--localGitRepo "$REPO" \
--baseBranch master \
--config "${CONFIG_XML}" \
--patchBranch temp-patch-branch \
--listOfProjects "${PROJECTS_PROPERTIES}" \
--allowExcludes \
--diffToolJarPath "${PATCH_DIFF_TOOL_JAR_PATH}" || { echo "DiffTool execution failed"; exit 1; }
- name: Execute DiffTool.jar with all arguments
env:
BASE_CONFIG_XML: "${{ github.workspace }}/${{ env.CONFIG_DIR }}/base-config.xml"
PATCH_CONFIG_XML: "${{ github.workspace }}/${{ env.CONFIG_DIR }}/patch-config.xml"
PROJECTS_PROPERTIES: "${{ github.workspace }}/${{ env.CONFIG_DIR }}/project.yml"
DIFFTOOL_JAR_PATH: "${{ github.workspace }}/${{ env.DIFFTOOL_JAR }}"
PATCH_DIFF_TOOL_JAR_PATH: "${{ github.workspace }}/patch-diff-report-tool-${{ env.PATCH_DIFF_TOOL_VERSION }}-jar-with-dependencies.jar"
run: |
PR_BRANCH="temp-patch-branch"
REPO="${{ github.workspace }}/checkstyle"
echo "Running DiffTool.jar with all arguments combined"
java -jar "${DIFFTOOL_JAR_PATH}" \
--localGitRepo "$REPO" \
--baseBranch master \
--patchBranch "$PR_BRANCH" \
--baseConfig "${BASE_CONFIG_XML}" \
--patchConfig "${PATCH_CONFIG_XML}" \
--listOfProjects "${PROJECTS_PROPERTIES}" \
--mode diff \
--shortFilePaths \
--extraMvnRegressionOptions "-Dmaven.test.skip=true" \
--allowExcludes \
--useShallowClone \
--diffToolJarPath "${PATCH_DIFF_TOOL_JAR_PATH}"
- name: Execute DiffTool.jar with Invalid Arguments
env:
DIFFTOOL_JAR_PATH: "${{ github.workspace }}/${{ env.DIFFTOOL_JAR }}"
run: |
echo "Running DiffTool.jar with invalid arguments"
java -jar "${DIFFTOOL_JAR_PATH}" --invalidArg || echo "Handled invalid arguments gracefully"