From efceb9e7073c0f382e3f64abb0eedaaf79ae0779 Mon Sep 17 00:00:00 2001 From: Lukas Chrostowski Date: Sun, 26 May 2024 22:06:11 -0700 Subject: [PATCH] update action, test --- .github/workflows/merge.yml | 25 +++ .github/workflows/merge_complete.yml | 122 +++++++++++++++ submissions/test.gds | Bin 0 -> 119308 bytes submissions/test.yaml | 226 +++++++++++++++++++++++++++ 4 files changed, 373 insertions(+) create mode 100644 .github/workflows/merge_complete.yml create mode 100644 submissions/test.gds create mode 100644 submissions/test.yaml diff --git a/.github/workflows/merge.yml b/.github/workflows/merge.yml index 6020ede..bd7a4ff 100644 --- a/.github/workflows/merge.yml +++ b/.github/workflows/merge.yml @@ -91,3 +91,28 @@ jobs: git commit -m "update README with new artifact url $ARTIFACT_URL" git push if: ${{ env.OWNER == 'SiEPIC'}} + + - name: Create comment + uses: actions/github-script@v6 + with: + script: | + const missingFilesList = process.env.missing_files_list; + const commentBody = ` + ### Draft merge: + + Thank you for submitting your design. + + Please download the merged layout and confirm (by responding in a Comment below) that your layout is correctly merged: + + ${ARTIFACT_URL} + + Thank you! + `; + + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: commentBody + }); + diff --git a/.github/workflows/merge_complete.yml b/.github/workflows/merge_complete.yml new file mode 100644 index 0000000..0db8ebd --- /dev/null +++ b/.github/workflows/merge_complete.yml @@ -0,0 +1,122 @@ +name: Merge complete + +# merge the layout after the pull request is approved +on: + pull_request_review: + types: [submitted] + +jobs: + approved: + if: github.event.review.state == 'APPROVED' + runs-on: ubuntu-latest + + steps: + - name: checkout repo content + uses: actions/checkout@v3 + with: + # https://github.com/MestreLion/git-tools?tab=readme-ov-file#git-restore-mtime + fetch-depth: 0 + + + - name: Restore original modification time of files based on the date of the most recent commit + uses: chetan/git-restore-mtime-action@v2 + + - name: setup python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + cache: 'pip' + + - name: install Python packages + run: | + pip install klayout SiEPIC siepic_ebeam_pdk pandas + + - name: run merge script + run: | + python merge/EBeam_merge.py + + - name: move merge output files to new folder + run: | + 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="" + end_delim="" + + # 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 + + # after a PR is merged 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 commit -m "update README with new artifact url $ARTIFACT_URL" + git push + if: github.repository_owner == 'SiEPIC' + + + - name: Create comment + uses: actions/github-script@v6 + with: + script: | + const missingFilesList = process.env.missing_files_list; + const commentBody = ` + ### Layout merged: + + Thank you for submitting your design. + + Your design has been accepted and merged! + + Please download the merged layout and double-check that your layout is correctly merged: + + ${ARTIFACT_URL} + + Thank you! + `; + + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: commentBody + }); + diff --git a/submissions/test.gds b/submissions/test.gds new file mode 100644 index 0000000000000000000000000000000000000000..782a3b5927de142d2ad65096d60df35ef2859fd1 GIT binary patch literal 119308 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 LjE#7g&4&L4M7b9k literal 0 HcmV?d00001 diff --git a/submissions/test.yaml b/submissions/test.yaml new file mode 100644 index 0000000..56690a9 --- /dev/null +++ b/submissions/test.yaml @@ -0,0 +1,226 @@ +Devices: + BraggGratingwithHeater,comment,comment: + DeviceID: BraggGratingwithHeater,comment,comment + Electrical Coordinates: [] + Optical Coordinates: + - 50.0 + - 303.0 + Polarization: TE + RoutineCheck: true + Routines: + - Set Wavelength Voltage Sweep:VoltageSweep_1480,1500,1530,1550 + - Set Wavelength Current Sweep:CurrentSweep_1480,1500,1550 + - Set Voltage Wavelength Sweep:WavelengthSweep_0.1,0.2,0.3 + Type: device + Wavelength: '1550' +Routines: + Current Sweep: + Default: + Channel A: true + Channel B: false + ELECflag: true + IV: true + Initialrange: '' + Laseroutput: High power + Max: '1' + Min: '0' + Numscans: '1' + OPTICflag: false + PV: true + RV: true + RangeDec: '' + Res: '1' + Start: '' + Stepsize: '' + Stop: '' + Sweeppower: '' + Sweepspeed: auto + Voltages: '' + Wavelengths: '' + setvflag: false + setwflag: false + Set Voltage Wavelength Sweep: + Default: + Channel A: true + Channel B: false + ELECflag: false + IV: false + Initialrange: '-20' + Laseroutput: High power + Max: '' + Min: '' + Numscans: '1' + OPTICflag: false + PV: false + RV: false + RangeDec: '20' + Res: '' + Start: '1480' + Stepsize: '1' + Stop: '1580' + Sweeppower: '' + Sweepspeed: auto + Voltages: 1, 2, 3 + Wavelengths: '' + setvflag: true + setwflag: false + WavelengthSweep_0.1,0.2,0.3: + Channel A: true + Channel B: false + IV: false + Initialrange: '-20' + Laseroutput: High power + Max: '' + Min: '' + Numscans: '1' + PV: false + RV: false + RangeDec: '20' + Res: '' + Start: '1480' + Stepsize: '1' + Stop: '1580' + Sweeppower: '0' + Sweepspeed: auto + Voltages: 0.1, 0.2, 0.3 + Wavelengths: '' + Set Wavelength Current Sweep: + CurrentSweep_1480,1500,1550: + Channel A: true + Channel B: false + IV: true + Initialrange: '-20' + Laseroutput: High power + Max: '5' + Min: '0' + Numscans: '1' + PV: true + RV: true + RangeDec: '20' + Res: '0.01' + Start: '' + Stepsize: '' + Stop: '' + Sweeppower: '' + Sweepspeed: auto + Voltages: '' + Wavelengths: 1480, 1500, 1550 + Default: + Channel A: true + Channel B: false + ELECflag: false + IV: false + Initialrange: '-20' + Laseroutput: High power + Max: '5' + Min: '0' + Numscans: '1' + OPTICflag: false + PV: false + RV: false + RangeDec: '20' + Res: '0.1' + Start: '' + Stepsize: '' + Stop: '' + Sweeppower: '' + Sweepspeed: auto + Voltages: '' + Wavelengths: 1480, 1500, 1550 + setvflag: false + setwflag: true + Set Wavelength Voltage Sweep: + Default: + Channel A: true + Channel B: false + ELECflag: false + IV: true + Initialrange: '' + Laseroutput: High power + Max: '1' + Min: '0' + Numscans: '1' + OPTICflag: false + PV: true + RV: true + RangeDec: '' + Res: '1' + Start: '' + Stepsize: '' + Stop: '' + Sweeppower: '' + Sweepspeed: auto + Voltages: '' + Wavelengths: '' + setvflag: false + setwflag: true + VoltageSweep_1480,1500,1530,1550: + Channel A: true + Channel B: false + IV: true + Initialrange: '' + Laseroutput: High power + Max: '1' + Min: '0' + Numscans: '1' + PV: true + RV: true + RangeDec: '' + Res: '0.01' + Start: '' + Stepsize: '' + Stop: '' + Sweeppower: '' + Sweepspeed: auto + Voltages: '' + Wavelengths: 1480,1500,1530,1550 + Voltage Sweep: + Default: + Channel A: true + Channel B: false + ELECflag: true + IV: true + Initialrange: '' + Laseroutput: High power + Max: '1' + Min: '0' + Numscans: '1' + OPTICflag: false + PV: true + RV: true + RangeDec: '' + Res: '100' + Start: '' + Stepsize: '' + Stop: '' + Sweeppower: '' + Sweepspeed: auto + Voltages: '' + Wavelengths: '' + setvflag: false + setwflag: false + Wavelength Sweep: + Default: + Channel A: false + Channel B: false + ELECflag: false + IV: false + Initialrange: '-20' + Laseroutput: High power + Max: '' + Min: '' + Numscans: '1' + OPTICflag: true + PV: false + RV: false + RangeDec: '20' + Res: '' + Start: '1480' + Stepsize: '1' + Stop: '1580' + Sweeppower: '0' + Sweepspeed: auto + Voltages: '' + Wavelengths: '' + setvflag: false + setwflag: false