Skip to content

Can move all pawns out now from home row and your king is examined to see if left in check (partially anyway) #229

Can move all pawns out now from home row and your king is examined to see if left in check (partially anyway)

Can move all pawns out now from home row and your king is examined to see if left in check (partially anyway) #229

Workflow file for this run

# .github/workflows/ci.yml
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:
- master
pull_request_target:
branches:
- master
permissions:
contents: write
pages: write
actions: write
checks: write
pull-requests: write
jobs:
generate-reports:
runs-on: ubuntu-latest
if: (github.repository == 'logicmoo/metta-testsuite') || (github.repository == 'logicmoo/metta-wam') || (github.event_name != 'schedule')
env:
JOB_TYPE: ${{ github.event_name == 'schedule' && 'nightly' || 'ci' }}
REPO_URL: https://github.com/${{ github.repository }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Ensure just-results branch exists
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: ${{ github.repository }}
run: |
git ls-remote --heads ${{ env.REPO_URL }} just-results
if [ $? -ne 0 ]; then
echo "just-results branch does not exist. Creating it."
git init previous-results
cd previous-results
git checkout -b just-results
touch current_test_results.txt
git add current_test_results.txt
git commit -m "Initialize just-results branch"
git remote add origin ${{ env.REPO_URL }}
# Configure Git user information
git config user.name "${{ github.actor }}"
git config user.email "${{ github.actor }}@users.noreply.github.com"
# Set the remote URL with authentication
git remote set-url origin https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git
git push origin just-results
else
echo "just-results branch exists. Cloning it."
git clone --single-branch --branch just-results --depth 1 https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git previous-results
fi
- name: Copy Previous Test Results
run: |
if [ -f "previous-results/current_test_results.txt" ]; then
cp previous-results/current_test_results.txt previous_test_results.txt
else
echo "No previous test results found."
fi
# Clone the metta-testsuite development branch
- name: Clone metta-testsuite development branch
run: |
git clone --branch development --depth 1 https://github.com/logicmoo/metta-testsuite.git metta-testsuite
# Copy the tests/* directory from metta-testsuite
- name: Copy tests from metta-testsuite
run: |
rm -rf tests
mkdir -p tests/
cp -r metta-testsuite/tests/* tests/
rm -rf reports
mkdir -p reports/
cp -r metta-testsuite/reports/* reports/
mkdir -p test-scripts/
cp -r metta-testsuite/test-scripts/* test-scripts/
- name: Make Install Script Executable
run: chmod +x INSTALL.sh
- name: Run Install Script to install Mettalog
run: |
. ./INSTALL.sh --easy
sudo chmod -R 777 .
echo $PATH >> $GITHUB_PATH
- 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 Scripts Executable
run: chmod +x scripts/*.sh
- name: Run Test Script to Generate Input File
continue-on-error: true
run: |
TIMESTAMP=$(date +"%Y-%m-%dT%H:%M:%S")
BASELINE_COMPAT_PATH=reports/tests_output/now
echo "TIMESTAMP=$TIMESTAMP" >> $GITHUB_ENV
echo "BASELINE_COMPAT_PATH=$BASELINE_COMPAT_PATH" >> $GITHUB_ENV
mkdir -p $BASELINE_COMPAT_PATH
if [ "${{ env.JOB_TYPE }}" == "nightly" ]; then
./scripts/run_nightly_tests.sh -t $TIMESTAMP
else
./scripts/run_commit_tests.sh -t $TIMESTAMP
fi
env:
TERM: xterm-256color
- name: Parse Test Results
run: |
# Extract test IDs and their statuses into a sorted file
awk -F '|' '{print $2 "|" $3}' /tmp/SHARED.UNITS | grep -E 'PASS|FAIL' | sort > current_test_results.txt
- name: Compare Test Results
run: |
if [ -f "previous_test_results.txt" ]; then
if diff previous_test_results.txt current_test_results.txt > /dev/null; then
echo "No changes in test results."
echo "TEST_CHANGED=false" >> $GITHUB_ENV
else
echo "Changes detected in test results."
echo "TEST_CHANGED=true" >> $GITHUB_ENV
fi
else
echo "No previous test results to compare."
echo "TEST_CHANGED=true" >> $GITHUB_ENV
fi
- name: Save Current Test Results to just-results branch
if: env.TEST_CHANGED == 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: ${{ github.repository }}
run: |
cd previous-results
# Configure Git user information
git config user.name "${{ github.actor }}"
git config user.email "${{ github.actor }}@users.noreply.github.com"
# Set the remote URL with authentication
git remote set-url origin https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git
git pull
# overwrite test results
cp ../current_test_results.txt .
# Stage and commit changes
git add current_test_results.txt
git commit -m "Update test results"
# Push changes to the just-results branch
git push origin just-results
# Continue only if tests changed
- name: Run JUnit Report Generation Script
if: env.TEST_CHANGED == 'true'
continue-on-error: true
run: |
python3 scripts/into_junit.py /tmp/SHARED.UNITS ${{ env.TIMESTAMP }} 1 > junit.xml
- name: Convert JUnit XML to Standard HTML Report
if: env.TEST_CHANGED == 'true'
continue-on-error: true
run: |
cat junit.xml
junit2html junit.xml ${{ env.BASELINE_COMPAT_PATH }}/junit-standard-report.html
- name: Convert JUnit XML to Matrix HTML Report
if: env.TEST_CHANGED == 'true'
continue-on-error: true
run: |
junit2html --report-matrix ${{ env.BASELINE_COMPAT_PATH }}/junit-matrix-report.html junit.xml
- name: Upload JUnit XML Report
if: env.TEST_CHANGED == 'true'
continue-on-error: true
uses: actions/upload-artifact@v4
with:
name: junit-report
path: junit.xml
- name: Upload Standard HTML Report
if: env.TEST_CHANGED == 'true'
continue-on-error: true
uses: actions/upload-artifact@v4
with:
name: junit-standard-html-report
path: ${{ env.BASELINE_COMPAT_PATH }}/junit-standard-report.html
- name: Upload Matrix HTML Report
if: env.TEST_CHANGED == 'true'
continue-on-error: true
uses: actions/upload-artifact@v4
with:
name: junit-matrix-html-report
path: ${{ env.BASELINE_COMPAT_PATH }}/junit-matrix-report.html
- name: Upload Test Output Log Files
if: env.TEST_CHANGED == 'true'
continue-on-error: true
uses: actions/upload-artifact@v4
with:
name: test-output-logs
path: ${{ env.BASELINE_COMPAT_PATH }}
- name: Display JUnit Test Results
if: (github.event_name == 'push') && (env.TEST_CHANGED == 'true')
uses: dorny/test-reporter@v1
with:
name: 'JUnit Results'
path: 'junit.xml'
reporter: 'java-junit'
fail-on-error: false
- name: Provide Report Links
if: env.TEST_CHANGED == 'true'
run: |
echo "JUnit reports are available as artifacts."
- name: Generate environment.properties
if: env.TEST_CHANGED == 'true'
run: |
python scripts/generate_allure_environment.py ${{ github.sha }} ${{ github.ref_name }} > environment.properties
- name: Upload environment.properties
if: env.TEST_CHANGED == 'true'
uses: actions/upload-artifact@v4
with:
name: environment
path: environment.properties
- name: Get Allure history
if: env.TEST_CHANGED == 'true'
uses: actions/checkout@v4
with:
ref: test-results
path: test-results
- name: Download JUnit XML Results
if: env.TEST_CHANGED == 'true'
uses: actions/download-artifact@v4
with:
name: junit-report
path: build/allure-results
- name: Include environment properties
if: env.TEST_CHANGED == 'true'
uses: actions/download-artifact@v4
with:
name: environment
path: build/allure-results
- name: Generate Allure Report
if: env.TEST_CHANGED == 'true'
uses: simple-elf/allure-report-action@master
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: 1200
env:
SUBFOLDER: ${{ env.JOB_TYPE }}
- name: Copy JUnit HTML Reports to GitHub Pages Directory
if: env.TEST_CHANGED == 'true'
run: |
sudo chmod 777 . -R
ls -lA allure-history
mkdir -p allure-history/${{ env.BASELINE_COMPAT_PATH }}
cp -f ${{ env.BASELINE_COMPAT_PATH }}/* reports/tests_output/baseline-compat/
cp -rf reports/* allure-history/reports/
- name: Copy Help Docs to GitHub Pages Directory
if: env.TEST_CHANGED == 'true'
run: |
mkdir -p allure-history/help-docs/
cp -r ./docs/* allure-history/help-docs/
- name: Generate Root Index for GitHub Pages
if: env.TEST_CHANGED == 'true'
run: |
echo "<html>" > allure-history/index.html
echo "<head><title>Project Reports and Documentation</title></head>" >> allure-history/index.html
echo "<body>" >> allure-history/index.html
echo "<h1>Project Reports and Documentation</h1>" >> allure-history/index.html
echo "<ul>" >> allure-history/index.html
echo "<li><a href='./ci/'>Allure CI Reports</a></li>" >> allure-history/index.html
echo "<li><a href='./nightly/'>Allure Nightly Reports</a></li>" >> allure-history/index.html
echo "<li><a href='./${{ env.BASELINE_COMPAT_PATH }}/junit-standard-report.html'>JUnit Standard Report</a></li>" >> allure-history/index.html
echo "<li><a href='./${{ env.BASELINE_COMPAT_PATH }}/junit-matrix-report.html'>JUnit Matrix Report</a></li>" >> allure-history/index.html
#echo "<li><a href='./help-docs/'>Help Documentation</a></li>" >> allure-history/index.html
echo "<li><a href='https://github.com/trueagi-io/metta-wam/'>Install MeTTaLog</a></li>" >> allure-history/index.html
echo "<li><a href='https://github.com/logicmoo/metta-wam/'>Interpeter/Compiler Devel</a></li>" >> allure-history/index.html
echo "<li><a href='https://github.com/logicmoo/metta-testsuite/'>Testing Suite</a></li>" >> allure-history/index.html
echo "</ul>" >> allure-history/index.html
echo "</body>" >> allure-history/index.html
echo "</html>" >> allure-history/index.html
- name: Deploy Allure reports, JUnit HTML reports, and help docs to GitHub Pages
if: env.TEST_CHANGED == 'true'
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 }}