Skip to content

GitHub action: check for corresponding Yaml file #21

GitHub action: check for corresponding Yaml file

GitHub action: check for corresponding Yaml file #21

Workflow file for this run

name: Check GDS and YAML Files
on:
pull_request:
paths:
- '**/*.gds'
- '**/*.GDS'
- '**/*.oas'
- '**/*.OAS'
jobs:
check_files:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 2 # Fetch at least the last 2 commits
- name: Get list of changed files
id: changed_files
run: |
echo "Changed files:"
git diff --name-only HEAD~1 > changed_files.txt
cat changed_files.txt
- name: Filter .gds and .oas files
id: design_files
run: |
echo "Design files (.gds, .oas):"
grep -iE '\.(gds|oas)$' changed_files.txt > design_files.txt
cat design_files.txt
- name: Check for corresponding .yaml files
id: yaml_check
run: |
missing_yaml_files=0
missing_files_list=""
while IFS= read -r design_file; do
base_name=$(basename "$design_file" | sed -E 's/\.(gds|oas)$//I')
yaml_file=$(dirname "$design_file")/"$base_name".yaml
if [[ -f "$yaml_file" ]]; then
echo "Found corresponding YAML file for $design_file"
else
echo "Missing YAML file for $design_file"
missing_yaml_files=$((missing_yaml_files + 1))
missing_files_list="$missing_files_list $design_file"
fi
done < design_files.txt
echo "Missing YAML files count: $missing_yaml_files"
echo "missing_yaml_files=$missing_yaml_files" >> $GITHUB_ENV
echo "missing_files_list=$missing_files_list" >> $GITHUB_ENV
- name: Create comment if any YAML files are missing
if: env.missing_yaml_files != '0'
uses: actions/github-script@v6
with:
script: |
const missingFilesList = process.env.missing_files_list;
const commentBody = `
### Missing Corresponding YAML Files
The following design files (.gds or .oas) are missing their corresponding .yaml files:
${missingFilesList}
The YAML file is a test sequence format. It's important to think about testing during the design process (Design for Test). Including a test sequence helps ensure that the design can be effectively validated and verified. Please make sure to include the necessary .yaml files to facilitate this.
For more information, refer to the [SiEPIC Testcreator](https://github.com/SiEPIC/SiEPIC_testcreator) repository.
Thank you!
`;
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: commentBody
});
- name: Fail if any YAML files are missing
if: env.missing_yaml_files != '0'
run: |
echo "One or more .gds or .oas files are missing corresponding .yaml files"
exit 1