Skip to content

update project toml, fix broken workflow #7

update project toml, fix broken workflow

update project toml, fix broken workflow #7

name: Run Xircuits Workflows Test
on:
push:
branches: [ main ]
pull_request:
branches: "*"
jobs:
build-and-run:
runs-on: ubuntu-latest
env:
TEST_XIRCUITS: |
examples/PytorchTrainModel.xircuits
examples/PytorchPredictFromModel.xircuits
examples/PytorchTrainCustomNN.xircuits
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Install xircuits
run: pip install xircuits
- name: Set Environment Variables
run: |
LIBRARY_NAME=$(echo "${GITHUB_REPOSITORY##*/}" | sed 's/-/_/g')
echo "LIBRARY_NAME=$LIBRARY_NAME" >> $GITHUB_ENV
COMPONENT_LIBRARY_PATH="xai_components/${LIBRARY_NAME}"
echo "COMPONENT_LIBRARY_PATH=$COMPONENT_LIBRARY_PATH" >> $GITHUB_ENV
- name: List Xircuits
run: xircuits list
- name: Clone Repository
run: |
# as of 1.9, xai_pytorch still lives in the base xircuits installation
rm -rf ${{ env.COMPONENT_LIBRARY_PATH }}
if [ "${{ github.ref }}" == "refs/heads/main" ]; then
git clone https:/${{ github.repository }} ${{ env.COMPONENT_LIBRARY_PATH }}
else
PR_BRANCH=${{ github.event.pull_request.head.ref }}
git clone -b $PR_BRANCH https:/${{ github.repository }} ${{ env.COMPONENT_LIBRARY_PATH }}
fi
- name: Install Component Library
run: |
if [ -f "${{ env.COMPONENT_LIBRARY_PATH }}/requirements.txt" ]; then
echo "requirements.txt found, installing dependencies..."
pip install -r ${{ env.COMPONENT_LIBRARY_PATH }}/requirements.txt
else
echo "requirements.txt not found."
fi
- name: Test .xircuits Workflows
run: |
export PYTHONPATH="${GITHUB_WORKSPACE}:${PYTHONPATH}"
LOG_FILE="${GITHUB_WORKSPACE}/workflow_logs.txt"
TEST_FILES=$(echo "$TEST_XIRCUITS" | tr '\n' ' ')
IFS=' ' read -r -a FILE_ARRAY <<< "$TEST_FILES"
FAIL=0
if [ ${#FILE_ARRAY[@]} -eq 0 ]; then
echo "No .xircuits files specified for testing." | tee -a $LOG_FILE
else
for file in "${FILE_ARRAY[@]}"; do
FULL_PATH="${COMPONENT_LIBRARY_PATH}/${file}"
if [ -f "$FULL_PATH" ]; then
WORKFLOW_LOG_FILE="${FULL_PATH%.*}_workflow_log.txt"
echo "\n\nProcessing $FULL_PATH..." | tee -a $LOG_FILE
xircuits compile $FULL_PATH "${FULL_PATH%.*}.py" 2>&1 | tee -a $LOG_FILE
python "${FULL_PATH%.*}.py" 2>&1 | tee -a $WORKFLOW_LOG_FILE
LAST_LINE=$(tail -n 1 "$WORKFLOW_LOG_FILE")
if [[ "$LAST_LINE" != "Finished Executing" ]]; then
echo "Error: Workflow $FULL_PATH did not finish as expected" | tee -a $LOG_FILE
FAIL=1
else
echo "$FULL_PATH processed successfully" | tee -a $LOG_FILE
fi
cat "$WORKFLOW_LOG_FILE" | tee -a $LOG_FILE
else
echo "Specified file $FULL_PATH does not exist" | tee -a $LOG_FILE
FAIL=1
fi
done
fi
if [ $FAIL -ne 0 ]; then
echo "One or more workflows failed or did not finish as expected." | tee -a $LOG_FILE
exit 1
else
echo "Workflow processing completed" | tee -a $LOG_FILE
fi
- name: Upload log file
if: always()
uses: actions/upload-artifact@v3
with:
name: workflow-logs
path: ${{ github.workspace }}/workflow_logs.txt