A GitHub action that sets git defaults (name, email, author) for automated bot workflows from secrets or environment variables.
Also defaults GH_TOKEN
to GITHUB_TOKEN
if empty.
- name: 🤖 defaults
uses: devlooped/actions-bot@v1
with:
# The default name of the bot account.
# Defaults to $GITHUB_ACTOR.
# Set as $BOT_NAME environment variable after run, and as bot-name output.
name: ''
# The default email of the bot account.
# Defaults to [email protected].
# Set as $BOT_EMAIL environment variable after run, and as bot-email output.
email: ''
# The token to set as $GH_TOKEN environment variable. If empty,
# uses the github_token input as a fallback.
# Defaults to ''. Typically set to ${{ secrets.GH_TOKEN }}.
# Set as $GH_TOKEN and BOT_TOKEN environment variables after run,
# and as bot-token output.
gh_token: ''
# Fallback token to use for $GH_TOKEN if it's empty.
# Defaults to ''. Typically set to ${{ secrets.GITHUB_TOKEN }}.
github_token: ''
If both gh_token
and github_token
have empty values, the action will fail.
The additional BOT_AUTHOR
environment variable is set to "$BOT_NAME <$BOT_EMAIL>"
as well as the bot-author
output for easy consumption.
The action also runs:
git config --global user.name $BOT_NAME
git config --global user.email $BOT_EMAIL
so that git commands can be run with the resulting defaults already applied.
To run the action and automatically create a PR with the resolved bot defaults:
on:
push:
branches:
- main
jobs:
includes:
runs-on: ubuntu-latest
steps:
- name: 🤖 defaults
uses: devlooped/actions-bot@v1
with:
name: ${{ secrets.BOT_NAME }}
email: ${{ secrets.BOT_EMAIL }}
gh_token: ${{ secrets.GH_TOKEN }}
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: 🤘 checkout
uses: actions/checkout@v2
with:
token: ${{ env.GH_TOKEN }}
# add some step that changes files
- name: ✍ pull request
uses: peter-evans/create-pull-request@v3
with:
base: main
branch: bot-updates
author: ${{ env.BOT_AUTHOR }}
committer: ${{ env.BOT_AUTHOR }}
commit-message: ⬆️ Bot file updates
title: ⬆️ Bot file updates
body: Updates made by @${{ env.BOT_NAME }}.
token: ${{ env.GH_TOKEN }}
In a repository that doesn't define any of the custom secrets passed to
the devlooped/actions-bot@v1
action, all environment variables will be
properly defaulted, since at least ${{ secrets.GITHUB_TOKEN }}
will
be present, as well as the $GITHUB_ACTOR
which is used to default
BOT_NAME
, BOT_EMAIL
and BOT_AUTHOR
.
It would also be possible to just run git
commands from a shell and
get the same defaults automatically.