Skip to content
You're viewing an older version of this GitHub Action. Do you want to see the latest version instead?
git-pull-request

GitHub Action

niv Updater Action

v4

niv Updater Action

git-pull-request

niv Updater Action

A GitHub action that detects updates to dependencies tracked by niv and creates pull requests to keep them up to date

Installation

Copy and paste the following snippet into your .yml file.

              

- name: niv Updater Action

uses: knl/niv-updater-action@v4

Learn more about this action in knl/niv-updater-action

Choose a version

niv-updater: Automated dependency updates with niv

CI GitHub release (latest by date)

This action will open a pull request to master branch (or otherwise specified branch) whenever niv detects updates to nix/sources.json in your repository, for each dependency separately.

The idea is that you can set up a scheduled workflow with this action, and you would get new PRs whenever there are updates, so that you don’t have to do that manually.

Example

Here is an example of what to put in your .github/workflows/niv-updates.yml file to trigger the action.

name: Automated niv-managed dependency updates
on:
  schedule:
    # * is a special character in YAML so you have to quote this string
    # run this every day at 4:00am
    - cron:  '0 4 * * *'
jobs:
  niv-updater:
    name: 'Create PRs for niv-managed dependencies'
    runs-on: ubuntu-latest
    steps:
      # notice there is no checkout step
      - name: niv-updater-action
        uses: knl/niv-updater-action@v4
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          # NOTE: All inputs are optional. This list them with their default values.
          # Use the default branch for the repository
          pull_request_base: ''
          # The prefix to add to every created branch
          branch_prefix: 'update/'
          # If there are revisions in form 'v1.2' (not SHAs), skip updating them
          skip_versioned_revisions: true
          # Do not skip dependencies in repos accessed via ssh from updating
          skip_ssh_repos: false
          # Update all dependencies tracked by niv. Another example: 'common,jq,hub'
          whitelist: ''
          # Do not blacklist any of the dependencies. Another example: 'nixpkgs,niv'
          blacklist: ''
          # Note that | is really important for the labels
          labels: |
            documentation
            good first issue
          # Let's not show merges in the changelog
          show_merges: false
          # Have some prefix and a suffix. Use '|' to keep newlines
          message_prefix: |
            ## Motivation

            Dependencies should be up to date.
          message_suffix:
            Notify @myorg/myteam.

Configuration

Inputs

niv-updater-action is configured using the following inputs:

  • pull_request_base: (Optional) The name of the branch to issue the pull request against. In addition, the name of the branch from which nix/sources.json is taken from as the base. Defaults to an empty string which means taking as the base the default branch for the repository.

  • branch_prefix: (Optional) The prefix used for update branches, created by this action. The action does not sanitize the branch name. For a description of what a valid branch name is, please consult: https://mirrors.edge.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html. Defaults to "update/".

  • skip_versioned_revisions: (Optional, a boolean) If true, will cause the action to skip updating any dependency that has a version in their revision. This is due to the way niv currently works, where it will always update to the latest HEAD of a branch. Thus, if one have a dependency where, for example, rev=v1.0.0, niv would normally update it to the latest head of the branch, making rev holding the appropriate SHA. This is something one would not normally expect. Thus, this option exists until niv fixes the behaviour. Defaults to true.

  • skip_ssh_repos: (Optional, a boolean) If true, will cause the action to skip updating any dependency that is hosted by a repo accessible via ssh. Defaults to false.

  • whitelist: (Optional) A list of dependencies, comma separated, that will be checked for updates. This list will be checked before the blacklist. Defaults to an empty string, which is a special case for looking into all dependencies tracked by niv.

  • blacklist: (Optional) A list of dependencies, comma separated, to skip from updating. This list will be checked after the whitelist. Defaults to an empty string, which means all dependencies will be checked for updates.

  • labels: (Optional) A list of labels, newline separated, to apply to all created PRs. Defaults to an empty string, meaning no labels will be applied. The list has to be newline separated (use YAML’s | block), as GitHub allows various characters in the label’s name, except the newline.

  • show_merges: (Optional, a boolean) If true, the changelog will contain merge commits listed. Otherwise, they will be skipped (however, the commits from the PRs/branches will shown). Defaults to false.

  • message_prefix: (Optional) The text that will be put in front of the generated changelog. Defaults to empty.

  • message_suffix: (Optional) The text that will be put in after the generated changelog. Defaults to empty.

Secrets

Secrets are similar to inputs except that they are encrypted and only used by GitHub Actions. It’s a convenient way to keep sensitive data out of the GitHub Actions workflow YAML file.

  • GITHUB_TOKEN - (Required) The GitHub API token used to create pull requests and get content from all repositories tracked by niv.