set version for tfdataset, update readme and github action #3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Run Xircuits Workflows Test | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: "*" | |
jobs: | |
build-and-run: | |
runs-on: ubuntu-latest | |
env: | |
TEST_XIRCUITS: | | |
examples/KerasTrainImageClassifier.xircuits | |
examples/KerasModelPredict.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 | |
if [ "${{ github.event_name }}" == "pull_request" ]; then | |
echo "BRANCH_NAME=${{ github.head_ref }}" >> $GITHUB_ENV | |
else | |
echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV | |
fi | |
- 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 }} | |
git clone -b ${{ env.BRANCH_NAME }} https://github.com/${{ github.repository }} ${{ env.COMPONENT_LIBRARY_PATH }} | |
- 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' ' ') | |
echo "Repository: $LIBRARY_NAME" > $LOG_FILE | |
echo "Branch: $BRANCH_NAME" >> $LOG_FILE | |
echo -e "Testing Files:\n$TEST_FILES" >> $LOG_FILE | |
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 -e "\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: ${{ env.LIBRARY_NAME }}-validation-workflow | |
path: ${{ github.workspace }}/workflow_logs.txt |