[Interop layer] Test alert description parsing into markup #881
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: ADR created | |
on: | |
issues: | |
types: | |
- closed | |
jobs: | |
main: | |
name: ADR created | |
runs-on: ubuntu-latest | |
# Only run this workflow if the closed issue has the "ADR: accepted" label | |
if: "${{ contains(github.event.issue.labels.*.name, 'ADR: accepted') }}" | |
steps: | |
- name: checkout main branch | |
uses: actions/checkout@v4 | |
with: | |
ref: main | |
- name: get ADR number | |
id: next | |
run: | | |
LAST_ADR=$(ls docs/architecture/decisions/*.md | grep -Eo "decisions/[0-9]+-" | sort | tail -n1 | grep -Eo "[0-9]+") | |
LAST_ADR=$(echo "$LAST_ADR" | sed -E 's/^0+//') | |
NEXT_ADR=$(($LAST_ADR + 1)) | |
NEXT_ADR=$(printf "%04i" "$NEXT_ADR") | |
echo "number=$NEXT_ADR" >> "$GITHUB_OUTPUT" | |
- name: write the ADR | |
uses: actions/github-script@v7 | |
with: | |
script: | | |
const fs = require("fs/promises"); | |
// Use the GitHub toJSON expression to get these as escaped strings. | |
// In Javascript, this will preserve line breaks, and using template | |
// strings further down will preserve all the kinds of quotes. | |
const title = ${{ toJSON(github.event.issue.title) }}; | |
const body = ${{ toJSON(github.event.issue.body )}}; | |
const slug = title | |
.toLowerCase() | |
.trim() | |
.replace(/[^\w\s-]/g, "") // get rid of non-ascii characters | |
.replace(/[\s_-]+/g, "-") // convert whitespace and underscore to dash | |
.replace(/^-+|-+$/g, ""); // git rid of leading/trailing dashes | |
const filename = `docs/architecture/decisions/${{ steps.next.outputs.number }}-${slug}.md`; | |
// Get the current date as an ISO8601 string, split at the timestamp, | |
// and only keep the date portion. | |
const [date] = new Date().toISOString().split("T"); | |
const adr = `# ${ title } | |
Date: ${ date } | |
### Status | |
Accepted | |
${ body } | |
`; | |
await fs.writeFile(filename, adr, { encoding: 'utf-8' }); | |
- name: branch, commit, and open PR | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
BRANCH="adr/auto/${{ steps.next.outputs.number }}" | |
git config --global user.email "tts@gsa.gov" | |
git config --global user.name "weather.gov ADR automation" | |
git checkout -b $BRANCH | |
git add docs/architecture/decisions/*.md | |
git commit -m "add ADR ${{ steps.next.outputs.number }}: ${{ github.event.issue.title }}" | |
git push -f origin $BRANCH | |
gh pr create \ | |
--title "Add ADR ${{ steps.next.outputs.number }} to the repo" \ | |
--label "ADR" \ | |
--body "This pull request was opened automatically because #${{ github.event.issue.number }} was closed after being marked as an approved ADR. It contains a markdown file capturing the ADR body at the time the issue was closed. Please verify that the markdown is correct before merging!" || true | |
gh pr merge $BRANCH --auto --squash |