GitHub action: check for corresponding Yaml file #21
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: 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 |