2024-04-22 00:17:03 +02:00
name : "Update Nix Flake Lock"
description : "Update your Nix flake.lock and send a PR"
2021-11-29 20:10:08 +01:00
inputs :
inputs :
2024-04-22 00:17:03 +02:00
description : "A space-separated list of inputs to update. Leave empty to update all inputs."
2021-11-29 20:10:08 +01:00
required : false
2024-04-22 00:17:03 +02:00
default : ""
2022-01-13 08:46:19 +01:00
token :
2024-04-22 00:17:03 +02:00
description : "GITHUB_TOKEN or a `repo` scoped Personal Access Token (PAT)"
2022-01-13 08:46:19 +01:00
required : false
default : ${{ github.token }}
2022-02-01 05:52:05 +01:00
commit-msg :
2024-04-22 00:17:03 +02:00
description : "The message provided with the commit"
2022-02-01 06:18:39 +01:00
required : false
default : "flake.lock: Update"
2023-03-09 11:00:31 +01:00
base :
description : "Sets the pull request base branch. Defaults to the branch checked out in the workflow."
required : false
2022-06-22 21:44:48 +02:00
branch :
2024-04-22 00:17:03 +02:00
description : "The branch of the PR to be created"
2022-06-22 21:44:48 +02:00
required : false
default : "update_flake_lock_action"
2022-09-08 04:11:56 +02:00
path-to-flake-dir :
2024-04-22 00:17:03 +02:00
description : "The path of the directory containing `flake.nix` file within your repository. Useful when `flake.nix` cannot reside at the root of your repository."
2022-09-08 04:11:56 +02:00
required : false
2022-02-01 06:18:39 +01:00
pr-title :
2024-04-22 00:17:03 +02:00
description : "The title of the PR to be created"
2022-02-01 05:19:58 +01:00
required : false
default : "flake.lock: Update"
2022-07-15 07:07:38 +02:00
pr-body :
2024-04-22 00:17:03 +02:00
description : "The body of the PR to be created"
2022-07-15 07:07:38 +02:00
required : false
default : |
Automated changes by the [update-flake-lock](https://github.com/DeterminateSystems/update-flake-lock) GitHub Action.
```
{{ env.GIT_COMMIT_MESSAGE }}
```
### Running GitHub Actions on this PR
GitHub Actions will not run workflows on pull requests which are opened by a GitHub Action.
To run GitHub Actions workflows on this PR, run :
```sh
git branch -D update_flake_lock_action
git fetch origin
git checkout update_flake_lock_action
git commit --amend --no-edit
git push origin update_flake_lock_action --force
```
2022-02-01 05:24:41 +01:00
pr-labels :
2024-04-22 00:17:03 +02:00
description : "A comma or newline separated list of labels to set on the Pull Request to be created"
2022-02-01 05:24:41 +01:00
required : false
2024-04-22 00:17:03 +02:00
default : ""
2022-12-26 22:24:16 +01:00
pr-assignees :
2024-04-22 00:17:03 +02:00
description : "A comma or newline separated list of assignees (GitHub usernames)."
2022-12-26 22:24:16 +01:00
required : false
2024-04-22 00:17:03 +02:00
default : ""
2022-12-26 22:24:16 +01:00
pr-reviewers :
2024-04-22 00:17:03 +02:00
description : "A comma or newline separated list of reviewers (GitHub usernames) to request a review from."
2022-12-26 22:24:16 +01:00
required : false
2024-04-22 00:17:03 +02:00
default : ""
2022-11-12 20:00:38 +01:00
git-author-name :
2024-04-22 00:17:03 +02:00
description : "Author name used for commit. Only used if sign-commits is false."
2022-11-12 20:00:38 +01:00
required : false
2024-04-22 00:17:03 +02:00
default : "github-actions[bot]"
2022-11-12 20:00:38 +01:00
git-author-email :
2024-04-22 00:17:03 +02:00
description : "Author email used for commit. Only used if sign-commits is false."
2022-11-12 20:00:38 +01:00
required : false
2024-04-22 00:17:03 +02:00
default : "github-actions[bot]@users.noreply.github.com"
2022-11-12 20:00:38 +01:00
git-committer-name :
2024-04-22 00:17:03 +02:00
description : "Committer name used for commit. Only used if sign-commits is false."
2022-11-12 20:00:38 +01:00
required : false
2024-04-22 00:17:03 +02:00
default : "github-actions[bot]"
2022-11-12 20:00:38 +01:00
git-committer-email :
2024-04-22 00:17:03 +02:00
description : "Committer email used for commit. Only used if sign-commits is false."
2022-11-12 20:00:38 +01:00
required : false
2024-04-22 00:17:03 +02:00
default : "github-actions[bot]@users.noreply.github.com"
2022-07-15 04:49:42 +02:00
sign-commits :
2024-04-22 00:17:03 +02:00
description : "Set to true if the action should sign the commit with GPG"
2022-07-15 04:49:42 +02:00
required : false
2024-04-22 00:17:03 +02:00
default : "false"
2022-07-15 04:49:42 +02:00
gpg-private-key :
2024-04-22 00:17:03 +02:00
description : "GPG Private Key with which to sign the commits in the PR to be created"
2022-07-15 04:49:42 +02:00
required : false
2024-04-22 00:17:03 +02:00
default : ""
2022-08-16 14:10:49 +02:00
gpg-fingerprint :
2024-04-22 00:17:03 +02:00
description : "Fingerprint of specific GPG subkey to use"
2022-08-16 14:10:49 +02:00
required : false
2022-07-15 04:49:42 +02:00
gpg-passphrase :
2024-04-22 00:17:03 +02:00
description : "GPG Private Key Passphrase for the GPG Private Key with which to sign the commits in the PR to be created"
2022-07-15 04:49:42 +02:00
required : false
2024-04-22 00:17:03 +02:00
default : ""
2023-03-28 22:38:02 +02:00
nix-options :
2024-04-22 00:17:03 +02:00
description : "A space-separated list of options to pass to the nix command"
2023-03-28 22:38:02 +02:00
required : false
2024-04-22 00:17:03 +02:00
default : ""
2022-04-21 20:56:41 +02:00
outputs :
pull-request-number :
2024-04-22 00:17:03 +02:00
description : "The number of the opened pull request"
2022-04-21 20:56:41 +02:00
value : ${{ steps.create-pr.outputs.pull-request-number }}
2023-03-20 06:41:08 +01:00
pull-request-operation :
2024-04-22 00:17:03 +02:00
description : "The pull request operation performed by the action, `created`, `updated` or `closed`."
2023-03-20 06:41:08 +01:00
value : ${{ steps.create-pr.outputs.pull-request-operation }}
2021-10-18 19:30:27 +02:00
runs :
using : "composite"
steps :
2022-07-15 04:49:42 +02:00
- name : Import bot's GPG key for signing commits
2022-07-15 12:54:46 +02:00
if : ${{ inputs.sign-commits == 'true' }}
2022-07-15 04:49:42 +02:00
id : import-gpg
2023-10-11 03:17:06 +02:00
uses : crazy-max/ghaction-import-gpg@v6
2022-07-15 04:49:42 +02:00
with :
gpg_private_key : ${{ inputs.gpg-private-key }}
2024-04-26 16:55:19 +02:00
fingerprint : ${{ inputs.gpg-fingerprint }}
2022-07-15 04:49:42 +02:00
passphrase : ${{ inputs.gpg-passphrase }}
git_config_global : true
git_user_signingkey : true
git_commit_gpgsign : true
2022-07-15 07:07:38 +02:00
- name : Set environment variables (signed commits)
2022-07-15 12:54:46 +02:00
if : ${{ inputs.sign-commits == 'true' }}
2022-07-15 04:49:42 +02:00
shell : bash
env :
GIT_AUTHOR_NAME : ${{ steps.import-gpg.outputs.name }}
GIT_AUTHOR_EMAIL : ${{ steps.import-gpg.outputs.email }}
GIT_COMMITTER_NAME : ${{ steps.import-gpg.outputs.name }}
GIT_COMMITTER_EMAIL : ${{ steps.import-gpg.outputs.email }}
TARGETS : ${{ inputs.inputs }}
2022-07-15 07:07:38 +02:00
run : |
echo "GIT_AUTHOR_NAME=$GIT_AUTHOR_NAME" >> $GITHUB_ENV
2022-07-15 12:54:46 +02:00
echo "GIT_AUTHOR_EMAIL=<$GIT_AUTHOR_EMAIL>" >> $GITHUB_ENV
2022-07-15 07:07:38 +02:00
echo "GIT_COMMITTER_NAME=$GIT_COMMITTER_NAME" >> $GITHUB_ENV
2022-07-15 12:54:46 +02:00
echo "GIT_COMMITTER_EMAIL=<$GIT_COMMITTER_EMAIL>" >> $GITHUB_ENV
- name : Set environment variables (unsigned commits)
if : ${{ inputs.sign-commits != 'true' }}
2021-10-18 19:30:27 +02:00
shell : bash
2022-07-15 07:07:38 +02:00
run : |
2022-11-12 20:00:38 +01:00
echo "GIT_AUTHOR_NAME=${{ inputs.git-author-name }}" >> $GITHUB_ENV
2022-11-12 20:10:07 +01:00
echo "GIT_AUTHOR_EMAIL=<${{ inputs.git-author-email }}>" >> $GITHUB_ENV
2022-11-12 20:00:38 +01:00
echo "GIT_COMMITTER_NAME=${{ inputs.git-committer-name }}" >> $GITHUB_ENV
2022-11-12 20:10:07 +01:00
echo "GIT_COMMITTER_EMAIL=<${{ inputs.git-committer-email }}>" >> $GITHUB_ENV
2024-05-06 22:43:29 +02:00
- name : Run update-flake-lock
shell : bash
2024-05-09 20:19:23 +02:00
env :
# The following manually exposes all of the action inputs into INPUT_ environment variables so actionsCore.getInput works:
# https://github.com/actions/toolkit/blob/ae38557bb0dba824cdda26ce787bd6b66cf07a83/packages/core/src/core.ts#L126
INPUT_BASE : ${{ inputs.base }}
INPUT_BRANCH : ${{ inputs.branch }}
INPUT_COMMIT-MSG : ${{ inputs.commit-msg }}
INPUT_GIT-AUTHOR-EMAIL : ${{ inputs.git-author-email }}
INPUT_GIT-AUTHOR-NAME : ${{ inputs.git-author-name }}
INPUT_GIT-COMMITTER-EMAIL : ${{ inputs.git-committer-email }}
INPUT_GIT-COMMITTER-NAME : ${{ inputs.git-committer-name }}
INPUT_GPG-FINGERPRINT : ${{ inputs.gpg-fingerprint }}
INPUT_GPG-PASSPHRASE : ${{ inputs.gpg-passphrase }}
INPUT_GPG-PRIVATE-KEY : ${{ inputs.gpg-private-key }}
INPUT_INPUTS : ${{ inputs.inputs }}
INPUT_NIX-OPTIONS : ${{ inputs.nix-options }}
INPUT_PATH-TO-FLAKE-DIR : ${{ inputs.path-to-flake-dir }}
INPUT_PR-ASSIGNEES : ${{ inputs.pr-assignees }}
INPUT_PR-BODY : ${{ inputs.pr-body }}
INPUT_PR-LABELS : ${{ inputs.pr-labels }}
INPUT_PR-REVIEWERS : ${{ inputs.pr-reviewers }}
INPUT_PR-TITLE : ${{ inputs.pr-title }}
INPUT_PULL-REQUEST-NUMBER : ${{ inputs.pull-request-number }}
INPUT_PULL-REQUEST-OPERATION : ${{ inputs.pull-request-operation }}
INPUT_SIGN-COMMITS : ${{ inputs.sign-commits }}
INPUT_TOKEN : ${{ inputs.token }}
2024-05-06 22:43:29 +02:00
run : node "$GITHUB_ACTION_PATH/dist/index.js"
2022-07-15 07:07:38 +02:00
- name : Save PR Body as file
2024-02-29 00:04:53 +01:00
uses : DamianReeves/write-file-action@v1.3
2022-07-15 07:07:38 +02:00
with :
path : pr_body.template
contents : ${{ inputs.pr-body }}
env : {}
- name : Set additional env variables (GIT_COMMIT_MESSAGE)
2021-10-19 18:29:17 +02:00
shell : bash
2022-07-15 07:07:38 +02:00
run : |
2023-03-29 19:50:00 +02:00
DELIMITER=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
COMMIT_MESSAGE="$(git log --format=%b -n 1)"
echo "GIT_COMMIT_MESSAGE<<$DELIMITER" >> $GITHUB_ENV
echo "$COMMIT_MESSAGE" >> $GITHUB_ENV
echo "$DELIMITER" >> $GITHUB_ENV
echo "GIT_COMMIT_MESSAGE is: ${COMMIT_MESSAGE}"
2022-07-15 07:07:38 +02:00
- name : Interpolate PR Body
2024-02-29 15:55:53 +01:00
uses : pedrolamas/handlebars-action@v2.4.0
2022-07-15 07:07:38 +02:00
with :
2024-04-22 00:17:03 +02:00
files : "pr_body.template"
output-filename : "pr_body.txt"
2022-07-15 07:07:38 +02:00
- name : Read pr_body.txt
id : pr_body
2023-03-28 22:43:16 +02:00
uses : juliangruber/read-file-action@v1
2022-07-15 07:07:38 +02:00
with :
path : "pr_body.txt"
2022-07-29 16:40:44 +02:00
# We need to remove the pr_body files so that the
# peter-evans/create-pull-request action does not commit it (the
# action commits all new and modified files).
- name : Remove PR body template files
shell : bash
run : rm -f pr_body.txt pr_body.template
2021-10-18 19:30:27 +02:00
- name : Create PR
2022-04-21 20:56:41 +02:00
id : create-pr
2024-02-28 23:19:26 +01:00
uses : peter-evans/create-pull-request@v6
2021-10-18 19:30:27 +02:00
with :
2023-03-09 11:00:31 +01:00
base : ${{ inputs.base }}
2022-06-22 21:44:48 +02:00
branch : ${{ inputs.branch }}
2021-10-18 19:30:27 +02:00
delete-branch : true
2022-07-15 12:54:46 +02:00
committer : ${{ env.GIT_COMMITTER_NAME }} ${{ env.GIT_COMMITTER_EMAIL }}
author : ${{ env.GIT_AUTHOR_NAME }} ${{ env.GIT_AUTHOR_EMAIL }}
2022-02-01 06:18:39 +01:00
title : ${{ inputs.pr-title }}
2022-01-13 08:46:19 +01:00
token : ${{ inputs.token }}
2022-12-26 22:24:16 +01:00
assignees : ${{ inputs.pr-assignees }}
2022-02-01 05:24:41 +01:00
labels : ${{ inputs.pr-labels }}
2022-12-26 22:24:16 +01:00
reviewers : ${{ inputs.pr-reviewers }}
2023-03-28 22:50:27 +02:00
body : ${{ steps.pr_body.outputs.content }}