name: agenda # author: @MikeRalphson # issue: various # # This workflow creates the agenda issue each week. It runs on a cron every # Monday morning, raising an issue for the following Thursday. # It can also be run manually, in case GitHub Actions has a failure. # on: schedule: - cron: '0 16 * * 4' workflow_dispatch: {} permissions: issues: write contents: read jobs: agenda: if: github.repository == 'OAI/OpenAPI-Specification' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} TITLE_PREFIX: "Open Community (TDC) Meeting, " LABEL: "Housekeeping" POST_MEETING_CLOSE_DURATION_IN_DAYS: 10 runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 # checkout repo content # we want to close old agenda issues before creating a new one because there's a limit of 3 pinned items on a repo - name: Close old agenda issues run: gh issue list -l ${{ env.LABEL }} --author "app/github-actions" --json number,title | ConvertFrom-Json | Where-Object { $_.title -like "${{ env.TITLE_PREFIX }}*" -and ([datetime]::UtcNow - [datetime]::Parse([regex]::Replace($_.title.Replace("${{ env.TITLE_PREFIX }}", ""), "\([^)]+\)", ""))) -ge [timespan]::FromDays([int]::Parse("${{ env.POST_MEETING_CLOSE_DURATION_IN_DAYS }}"))} | ForEach-Object { gh issue close $_.number && gh issue unpin $_.number } shell: pwsh - name: Create agenda issue run: | $nextThursday = @(@(1..8) | % {$(Get-Date).AddDays($_)} | ? {$_.DayOfWeek -ieq "Thursday"})[0].ToString("dddd dd MMMM yyyy", [CultureInfo]::InvariantCulture) $result = gh issue create -l ${{ env.LABEL }} -t "${{ env.TITLE_PREFIX }}$nextThursday" -F .github/templates/agenda.md gh issue pin $result shell: pwsh