Skip to content

New CI for DiffTool.java #30

New CI for DiffTool.java

New CI for DiffTool.java #30

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'
CONFIG_XML: "${{ github.workspace }}/${{ env.CONFIG_DIR }}/config.xml"

Check failure on line 16 in .github/workflows/java-ci.yml

View workflow run for this annotation

GitHub Actions / CI/CD for DiffTool

Invalid workflow file

The workflow is not valid. .github/workflows/java-ci.yml (Line: 16, Col: 19): Unrecognized named-value: 'env'. Located at position 1 within expression: env.CONFIG_DIR .github/workflows/java-ci.yml (Line: 17, Col: 24): Unrecognized named-value: 'env'. Located at position 1 within expression: env.CONFIG_DIR
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.properties"
DIFFTOOL_JAR: "diff-java-tool.jar"
PATCH_DIFF_TOOL_VERSION: "0.1-SNAPSHOT"
steps:
# 1. Checkout the repository
- name: Checkout Repository
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
clean: true
fetch-depth: 1
# 2. Set up JDK 21
- name: Set up JDK ${{ env.JAVA_VERSION }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ env.JAVA_VERSION }}
cache: 'gradle'
# 3. Cache Maven dependencies
- name: Cache Maven Dependencies
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
maven-
# 4. Build the project with Gradle
- name: Build with Gradle
run: |
cd diff-java-tool
./gradlew clean build
# 5. Run unit tests
- name: Run Unit Tests
run: |
cd diff-java-tool
./gradlew test
# 6. Create checkstyle-tester directory within the workspace
- name: Create checkstyle-tester directory
run: mkdir -p "${{ github.workspace }}/checkstyle-tester"
# 7. Copy DiffTool JAR to checkstyle-tester directory
- name: Copy DiffTool JAR to checkstyle-tester directory
run: |
cp diff-java-tool/build/libs/diff-java-tool-*-all.jar "${{ github.workspace }}/checkstyle-tester/diff-java-tool.jar"
# 8. Download patch-diff-report-tool 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 }}/checkstyle-tester"
# 9. Clone Checkstyle Repository
- name: Clone Checkstyle Repository
run: |
git clone https://github.com/checkstyle/checkstyle.git "${{ github.workspace }}/checkstyle"
# 10. Create Temporary Patch Branch
- 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"
# 11. Execute DiffTool.jar in 'diff' mode
- name: Execute DiffTool.jar in Diff Mode
run: |
CHECKSTYLE_TESTER_DIR="${{ github.workspace }}/checkstyle-tester"
cd "$CHECKSTYLE_TESTER_DIR" || { echo "Failed to change directory to $CHECKSTYLE_TESTER_DIR"; exit 1; }
REPO="${{ github.workspace }}/checkstyle"
echo "Running DiffTool.jar in 'diff' mode"
java -jar "${{ env.DIFFTOOL_JAR }}" \
--localGitRepo "$REPO" \
--baseBranch master \
--config "${{ env.CONFIG_XML }}" \
--patchBranch temp-patch-branch \
--listOfProjects "${{ env.PROJECTS_PROPERTIES }}" \
--allowExcludes || { echo "DiffTool execution failed"; exit 1; }
# 12. Execute DiffTool.jar with all arguments
- name: Execute DiffTool.jar with all arguments
run: |
CHECKSTYLE_TESTER_DIR="${{ github.workspace }}/checkstyle-tester"
cd "$CHECKSTYLE_TESTER_DIR" || exit 1
PR_BRANCH="temp-patch-branch"
REPO="${{ github.workspace }}/checkstyle"
echo "Running DiffTool.jar with all arguments combined"
java -jar "${{ env.DIFFTOOL_JAR }}" \
--localGitRepo "$REPO" \
--baseBranch master \
--patchBranch "$PR_BRANCH" \
--baseConfig "${{ env.BASE_CONFIG_XML }}" \
--patchConfig "${{ env.PATCH_CONFIG_XML }}" \
--listOfProjects "${{ env.PROJECTS_PROPERTIES }}" \
--mode diff \
--shortFilePaths \
--extraMvnRegressionOptions "-Dmaven.test.skip=true" \
--allowExcludes \
--useShallowClone
# 13. Delete Temporary Patch Branch in Checkstyle Repository
- name: Delete Temporary Patch Branch
run: |
cd "${{ github.workspace }}/checkstyle"
git checkout master
git branch -D temp-patch-branch
# 14. Execute DiffTool.jar with Invalid Arguments
- name: Execute DiffTool.jar with Invalid Arguments
run: |
cd "${{ github.workspace }}/checkstyle-tester" || exit 1
echo "Running DiffTool.jar with invalid arguments"
java -jar "${{ env.DIFFTOOL_JAR }}" --invalidArg || echo "Handled invalid arguments gracefully"
# 15. Verify no exceptions occurred during DiffTool execution
- name: Verify DiffTool Execution
run: |
echo "DiffTool executed successfully."
# 16. Upload build reports and logs on failure
- name: Upload Build Reports on Failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: build-reports
path: |
diff-java-tool/build/reports
diff-java-tool/build/test-results
checkstyle-tester
# 17. Cleanup (optional)
- name: Cleanup Temporary Files
if: always()
run: |
rm -rf checkstyle-tester
rm -rf checkstyle