Run Aggregation Script #131
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 Aggregation Script | |
on: | |
workflow_dispatch: | |
# run after layout verification | |
workflow_run: | |
workflows: ["Run Layout Verification"] | |
types: | |
- completed | |
jobs: | |
merge: | |
# only run the merge script on the SiEPIC account | |
#if: github.repository_owner == 'SiEPIC' | |
# if: >- | |
# github.event.pull_request.user.login != 'SiEPIC' && | |
# repository_dispatch.organization | |
runs-on: ubuntu-latest | |
steps: | |
- name: checkout repo content | |
uses: actions/checkout@v2 | |
with: | |
# https://github.com/MestreLion/git-tools?tab=readme-ov-file#git-restore-mtime | |
fetch-depth: 0 | |
- name: download verification trigger artifact | |
uses: dawidd6/action-download-artifact@v2 | |
with: | |
run_id: ${{ github.event.workflow_run.id }} | |
name: verification-trigger | |
path: . | |
search_artifacts: true | |
if: github.event_name != 'workflow_dispatch' | |
- name: check if verification action was triggered by a pull request | |
run: | | |
trigger_info=$(cat trigger_info.txt) | |
echo $trigger_info | |
if [[ "$trigger_info" == "pull_request" || "$trigger_info" == "pull_request_target" ]]; then | |
echo "This workflow was triggered by a pull request. Do not update url in read me." | |
TRIGGER_INFO='pull request' | |
echo "TRIGGER_INFO=$TRIGGER_INFO" >> $GITHUB_ENV | |
else | |
echo "This workflow was not triggered by a pull request. Continue with Aggregation and update url in read me." | |
fi | |
if: github.event_name != 'workflow_dispatch' | |
# there is only an artifact to download if this action is triggered after the verification action | |
# if it is manually triggered we set the var trigger_info manually | |
- name: if this action was manually triggered set trigger_info var | |
run: | | |
trigger_info='workflow_dispatch' | |
echo "TRIGGER_INFO=$trigger_info" >> $GITHUB_ENV | |
if: github.event_name == 'workflow_dispatch' | |
- name: Restore original modification time of files based on the date of the most recent commit | |
uses: chetan/git-restore-mtime-action@v2 | |
#run: | | |
# # https://github.com/MestreLion/git-tools?tab=readme-ov-file#installation | |
# sudo apt install git-restore-mtime | |
# git restore-mtime | |
# can also specify Python version if needed | |
- name: setup python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
cache: 'pip' | |
- name: install Python packages | |
run: | | |
pip install siepic_ebeam_pdk IPython | |
- name: run Aggregation script | |
run: | | |
python merge/EBeam_merge.py | |
- name: move Aggregation output files to new folder | |
run: | | |
#output_files="EBeam.gds EBeam.oas EBeam.txt EBeam.coords" | |
output_files="EBeam.oas EBeam.txt" | |
IFS=' ' | |
mkdir -p merge_output | |
for file in $output_files; do | |
cp "merge/$file" merge_output/ | |
done | |
- name: upload artifact | |
uses: actions/upload-artifact@v4 | |
id: artifact-upload | |
with: | |
name: merge-files | |
path: merge_output/ | |
- name: get artifact url | |
run: | | |
IFS='/' read -ra REPO <<< "$GITHUB_REPOSITORY" | |
OWNER="${REPO[0]}" | |
REPO_NAME="${REPO[1]}" | |
echo "Owner: $OWNER" | |
echo "Repository: $REPO_NAME" | |
RUN_ID=${{ github.run_id }} | |
ARTIFACT_ID=${{ steps.artifact-upload.outputs.artifact-id }} | |
ARTIFACT_URL="https://github.com/$OWNER/$REPO_NAME/actions/runs/$RUN_ID/artifacts/$ARTIFACT_ID" | |
echo "Artifact URL: $ARTIFACT_URL" | |
echo "ARTIFACT_URL=$ARTIFACT_URL" >> $GITHUB_ENV | |
echo "OWNER=$OWNER" >> $GITHUB_ENV | |
- name: update url in runner README | |
run: | | |
start_delim="<!-- start-link -->" | |
end_delim="<!-- end-link -->" | |
# remove current URL | |
sed -i "/$start_delim/,/$end_delim/d" README.md | |
# add new URL | |
printf "$start_delim\n$ARTIFACT_URL\n$end_delim\n" >> README.md | |
# Aggregation script always runs on any PR | |
# this ensures link is only updated after a PR is Aggregation into SiEPIC | |
- name: commit and push changes to README if we are in SiEPIC repo | |
run: | | |
git pull origin main | |
git diff | |
git config --local user.email "${{ github.actor }}@users.noreply.github.com" | |
git config --local user.name "${{ github.actor }}" | |
git add README.md | |
git add merge/EBeam.png | |
git commit -m "Aggregation layout: $ARTIFACT_URL" | |
git push | |
if: env.TRIGGER_INFO != 'pull request' && github.repository_owner == 'SiEPIC' |