Skip to content

Instantly share code, notes, and snippets.

@alexeagle
Last active January 10, 2023 20:01
Show Gist options
  • Save alexeagle/ad3f1f4f90a5394a866bbb3a3b8d1de9 to your computer and use it in GitHub Desktop.
Save alexeagle/ad3f1f4f90a5394a866bbb3a3b8d1de9 to your computer and use it in GitHub Desktop.
GitHub Actions to tag a repo at the beginning of each week. See blog.aspect.dev
# Apply a tag to HEAD at the beginning of each week.
# We can use this to create semver-looking tags for releases like
# 2020.44.123+abc1234
on:
schedule:
# Mondays at 5am UTC / midnight EST
- cron: '0 5 * * 1'
jobs:
tagger:
runs-on: ubuntu-latest
steps:
- name: tag HEAD with date +%G.%V
run: |
curl --request POST \
--url https://api.github.com/repos/${{ github.repository }}/git/refs \
--header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
--data @- << EOF
{
"ref": "refs/tags/$(date +%G.%V)",
"sha": "${{ github.sha }}"
}
EOF
@wisnij
Copy link

wisnij commented Jan 10, 2023

Should the date format maybe be %G.%V, so both the year and week components will indicate the ISO week? Otherwise you could get non-monotonic tags around the start of the year:

$ for d in 2022-12-31 2023-01-01 2023-01-02; do date -d $d +'%F  %Y.%V  %G.%V'; done
2022-12-31  2022.52  2022.52
2023-01-01  2023.52  2022.52
2023-01-02  2023.01  2023.01

@alexeagle
Copy link
Author

Ha, given that it's the second week of January I'm guessing that's not a theoretical question - thanks!

@alexeagle
Copy link
Author

FWIW, in a repo I'm using this GH Actions recipe on, I didn't see a bug this year when it produced tags. Maybe the LC_LOCALE is different from yours or something.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment