update-best-of-list #60
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
# Based on https://github.com/best-of-lists/best-of-update-action/blob/v0.8.5/workflows/update-best-of-list.yml | |
name: update-best-of-list | |
on: | |
workflow_dispatch: | |
inputs: | |
version: | |
description: "Version to use for this update" | |
required: false | |
schedule: | |
- cron: "0 18 * * 4" # Every thursday at 6pm | |
env: | |
BRANCH_PREFIX: "update/" | |
DEFAULT_BRANCH: "main" | |
jobs: | |
update-best-of-list: | |
runs-on: ubuntu-latest | |
steps: | |
- if: ${{ github.event.inputs != null && github.event.inputs.version != null }} | |
name: set-version-from-input | |
run: echo "VERSION=${{ github.event.inputs.version }}" >> $GITHUB_ENV | |
- if: ${{ ! (env.VERSION != null && env.VERSION != '') }} | |
name: set-version-via-date | |
run: echo "VERSION=$(date '+%Y.%m.%d')" >> $GITHUB_ENV | |
- uses: actions/checkout@v4 | |
- name: check-version-tag | |
shell: bash | |
run: | | |
git fetch --tags --force | |
git show-ref --tags --verify --quiet -- "refs/tags/${{ env.VERSION }}" && echo "VERSION=$(date '+%Y.%m.%d-%H.%M')" >> $GITHUB_ENV || exit 0 | |
- name: create-update-branch | |
uses: peterjgrainger/[email protected] | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
branch: "${{ env.BRANCH_PREFIX }}${{ env.VERSION }}" | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
ref: ${{ env.BRANCH_PREFIX }}${{ env.VERSION }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: update-best-of-list | |
uses: best-of-lists/[email protected] | |
with: | |
libraries_key: ${{ secrets.LIBRARIES_KEY }} | |
github_key: ${{ secrets.GITHUB_TOKEN }} | |
- name: push-update | |
uses: stefanzweifel/git-auto-commit-action@v5 | |
with: | |
branch: ${{ env.BRANCH_PREFIX }}${{ env.VERSION }} | |
commit_user_name: best-of update | |
commit_user_email: [email protected] | |
commit_message: Update best-of list for version ${{ env.VERSION }} | |
tagging_message: ${{ env.VERSION }} | |
skip_dirty_check: true | |
commit_options: "--allow-empty" | |
- name: create-pull-request | |
shell: bash | |
run: | | |
# Stops script execution if a command has an error | |
set -e | |
curl -fsSL https://github.com/github/hub/raw/master/script/get | bash -s 2.14.2 | |
bin/hub pull-request -b ${{ env.DEFAULT_BRANCH }} -h ${{ env.BRANCH_PREFIX }}${{ env.VERSION }} --no-edit -m "Best-of update: ${{ env.VERSION }}" -m "To finish this update: Select <code>Merge pull request</code> below and <code>Confirm merge</code>. Also, make sure to publish the created draft release in the [releases section](../releases) as well." || true | |
rm bin/hub | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: create-release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ env.VERSION }} | |
release_name: "Update: ${{ env.VERSION }}" | |
body_path: "latest-changes.md" | |
draft: true | |
prerelease: false |