name: CI Job to Generate JUnit Reports with Diff and Allure Reports on: schedule: - cron: 17 0 * * * # nightly run; 17th minute to decrease odds of delayed or dropped job push: branches: - main pull_request_target: branches: - main permissions: contents: write # Grant write permissions for contents checks: write # Grant write permissions for checks, only effective on push pull-requests: write # Explicitly grant write permissions for pull requests jobs: generate-reports: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.x' - name: Install python packages run: | pip install ansi2html pip install hyperon pip install junit2html - name: Make Install Script Executable run: chmod +x INSTALL.sh - name: Run Install Script to install Mettalog run: | . ./INSTALL.sh --easy echo $PATH >> $GITHUB_PATH - name: Make Test Script Executable run: chmod +x scripts/run_commit_tests.sh - name: Run Test Script to Generate Input File continue-on-error: true run: | TIMESTAMP=$(date +"%Y-%m-%dT%H:%M:%S") if [ ${{ github.event_name }} == 'schedule' ]; then ./scripts/run_nightly_tests.sh -t $TIMESTAMP else ./scripts/run_commit_tests.sh -t $TIMESTAMP fi echo "TIMESTAMP=$(echo $TIMESTAMP)" >> $GITHUB_ENV env: TERM: xterm-256color - name: Run JUnit Report Generation Script continue-on-error: true run: | python scripts/into_junit.py /tmp/SHARED.UNITS $TIMESTAMP > junit.xml - name: Convert JUnit XML to Standard HTML Report continue-on-error: true run: | junit2html junit.xml junit-standard-report.html - name: Convert JUnit XML to Matrix HTML Report continue-on-error: true run: | junit2html --report-matrix junit-matrix-report.html junit.xml - name: Upload JUnit XML Report continue-on-error: true uses: actions/upload-artifact@v4 with: name: junit-report path: junit.xml - name: Upload Standard HTML Report continue-on-error: true uses: actions/upload-artifact@v4 with: name: junit-standard-html-report path: junit-standard-report.html - name: Upload Matrix HTML Report continue-on-error: true uses: actions/upload-artifact@v4 with: name: junit-matrix-html-report path: junit-matrix-report.html - name: Display JUnit Test Results if: github.event_name == 'push' # Only run this step on pushes to main uses: dorny/test-reporter@v1 with: name: 'JUnit Results' path: 'junit.xml' reporter: 'java-junit' fail-on-error: false - name: Provide Report Links run: | echo "JUnit reports are available as artifacts." - name: Generate environment.properties run: | python scripts/generate_allure_environment.py ${{ github.sha }} ${{ github.ref_name }} > environment.properties - name: Upload environment.properties uses: actions/upload-artifact@v4 with: name: environment path: environment.properties - name: Get Allure history uses: actions/checkout@v4 with: ref: test-results path: test-results - name: Download JUnit XML Results uses: actions/download-artifact@v4 with: name: junit-report path: build/allure-results - name: Include environment properties uses: actions/download-artifact@v4 with: name: environment path: build/allure-results - name: Generate Allure Report uses: simple-elf/allure-report-action@master if: always() id: allure-report with: allure_results: build/allure-results gh_pages: test-results allure_report: allure-report allure_history: allure-history subfolder: ${{ env.SUBFOLDER }} keep_reports: 20 env: SUBFOLDER: ${{ github.event_name == 'schedule' && 'nightly' || 'ci' }} - name: Deploy report to Github Pages if: always() uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ secrets.GITHUB_TOKEN }} personal_token: ${{ secrets.GITHUB_TOKEN }} publish_branch: test-results publish_dir: allure-history - name: Auto-Approve the Pull Request if: github.event_name == 'pull_request_target' uses: hmarr/auto-approve-action@v4 with: github-token: ${{ secrets.GITHUB_TOKEN }}