Skip to content

Commit

Permalink
Release bot WiP
Browse files Browse the repository at this point in the history
Reference: #7
Signed-off-by: Jan Richter <[email protected]>
  • Loading branch information
richtja committed Jul 11, 2023
1 parent de2c367 commit dafc736
Showing 1 changed file with 102 additions and 0 deletions.
102 changes: 102 additions & 0 deletions .github/workflows/release-bot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
name: release bot
on:
schedule:
- cron: 0 5 * * 1
workflow_dispatch: null
jobs:
release-conditions-check:
name: release conditions check
runs-on: ubuntu-20.04
steps:
- name: Check out repository code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: check if relese is needed
run: |
echo 'COMMITS_NUMBER='$(git rev-list $(echo $(git tag --sort=-taggerdate |
head -n 1))..HEAD --count) >> $GITHUB_ENV
if [ $(git rev-list $(echo $(git tag --sort=-taggerdate | head -n 1))..HEAD --count) -lt ${{vars.RELEASE_THRESHOLD}} ]; then
exit 1
fi
- name: Generate token
id: generate_token
uses: tibdex/github-app-token@021a2405c7f990db57f5eae5397423dcc554159c
with:
app_id: ${{ secrets.MR_AVOCADO_ID }}
installation_id: ${{ secrets.MR_AVOCADO_INSTALLATION_ID }}
private_key: ${{ secrets.MR_AVOCADO_PRIVATE_KEY }}
- name: Get Discussion ID and maintainers
env:
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
run: |
discussion_data=$(gh api graphql -f query='{
search(first: 100, query: "repo:richtja/autils is:open category:Release-decision", type: DISCUSSION) {
nodes {
... on Discussion {
id createdAt
}
}
}
}' )
echo $(echo $discussion_data | jq .data.search.nodes[0].id)
echo 'DISCUSSION_ID='$(echo $discussion_data | jq .data.search.nodes[0].id) >> $GITHUB_ENV
echo 'NEW_COMMITS='$(git log --since="$(echo $discussion_data | jq .data.search.nodes[0].createdAt)" --pretty=oneline) >> $GITHUB_ENV
usr_names=()
for utils_meta in ./metadata/autils/*/; do
for metadata_file in $utils_meta*.yml; do
usr_names+=("@$(sed -n '/github_usr_name:[[:space:]]*\([^[:space:]]\+\)/{s/github_usr_name:[[:space:]]*//;s/[[:space:]]//g;p;q;}' $metadata_file)")
done
done
echo 'USR_NAMES='$(echo "${usr_names[@]}" | tr ' ' '\n' | sort -u) >> $GITHUB_ENV
- name: Create release discussion
env:
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
run: |
if [[ "x$DISCUSSION_ID" = "x" ]]; then
gh api graphql -f query='mutation {
createDiscussion(input: {
repositoryId: "R_kgDOIoJP1Q",
categoryId: "DIC_kwDOIoJP1c4CXh5I",
body: "Hello all,\n
Autils reached threshold of 100 commits from the latest release
now we have $COMMITS_NUMBER commits from the latest release.
Therefore, it is time to vote if new release is needed.
Please use :+1: or :-1: for this discussion to vote.
Thank you.\n
This vote is meat only for maintainers: ${USR_NAMES[@]}",
title: "Release decision"}) {
discussion {
id
}
}
}
'
fi
- name: Add comment to discussion
env:
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
run: |
if [[ "x$DISCUSSION_ID" != "x" ]]; then
gh api graphql -f query='mutation {
addDiscussionComment(input: {
discussionId: "$DISCUSSION_ID",
body: "This is a kindly reminder of ongoing release voting.
Please use :+1: or :-1: for this discussion to vote.
Thank you.\n
New commits from the beginning of the voting: $NEW_COMMITS
\nThis vote is meat only for maintainers: ${USR_NAMES[@]}"}) {
comment {
id
}
}
}
'
fi

0 comments on commit dafc736

Please sign in to comment.