You can use UpToDate either as a command line tool or a GitHub Action
This action helps you to keep your repository up to date, by creating issues as soon as your dependencies changed.
- Create a workflow like this:
name: uptodate
on:
schedule:
- cron: "0 0 * * *"
jobs:
uptodate:
runs-on: ubuntu-latest
steps:
# You have to check out your repo first.
- uses: actions/checkout@v2
- uses: fischerscode/uptodate@v0.7
with:
# The location of the config file.
# Defaults to '.uptodate.yaml'
config: ''
# The token used for creating issues.
# Defaults to ${{ github.token }}
token: ''
# The target repository for new issues.
# Defaults to ${{ github.repository }}
repository: ''
- Create the config file
.uptodate.yaml
(Documentation).
dart pub global activate uptodate
OR
Use a prebuilt executable.
A tool that helps you to keep your repository up to date.
Usage: uptodate <command> [arguments]
Global options:
-h, --help Print this usage information.
-f, --file (mandatory) The config file.
-v, --[no-]verbose Detailed output.
Available commands:
check Check the dependencies in the config file for updates.
github Check for updates and create issues in your GitHub repository.
version Print uptodate version.
Run "uptodate help <command>" for more information about a command.
Uptodate is configured using a single file where all the dependencies and their currently used versions are stored in.
dependencies: # The unsorted list containing the dependencies.
- name: testdependency # The name of the dependency
type: typ # The type of the dependency
currentVersion: 1.2.3 # The current version of the dependency
issueLabels: # The labels added to the issue
- dependencies
- test
defaultIssueTitle: "Update $name to $latestVersion" # The default issue title
defaultIssueBody: "Update $name to $latestVersion" # The default issue body
In defaultIssueTitle
and defaultIssueBody
the following variables are allowed:
$name
: the name of the dependency$currentVersion
: the current version of the dependency$latestVersion
: the latest available version
Using issueTitle
every dependency can be override defaultIssueTitle
.
Using issueBody
every dependency can be override defaultIssueBody
.
There are multiple dependency types:
An url gets called to receive the latest version of the dependency.
dependencies:
- name: testdependency # The name of the dependency. (required)
type: web # The type of the dependency. (required)
currentVersion: 1.2.3 # The current version of the dependency. (required)
url: 'http://example.com' # The url that gets called. (required)
An url gets called to receive a json document containing the latest version.
dependencies:
- name: testdependency # The name of the dependency. (required)
type: webjson # The type of the dependency. (required)
currentVersion: 1.2.3 # The current version of the dependency. (required)
url: 'http://example.com' # The url that gets called. (required)
path: args.versions.0.version # The path to the latest version. (defaults to '')
prefix: v # The prefix of the semantic versions.
# (v1.2.3 instead of 1.2.3)
# Defaults to ''
An url gets called to receive a (single) yaml document containing the latest version.
dependencies:
- name: testdependency # The name of the dependency. (required)
type: webyaml # The type of the dependency. (required)
currentVersion: 1.2.3 # The current version of the dependency. (required)
url: 'http://example.com' # The url that gets called. (required)
path: args.versions.0.version # The path to the latest version. (defaults to '')
prefix: v # The prefix of the semantic versions.
# (v1.2.3 instead of 1.2.3)
# Defaults to ''
Uses a GitHub repository to receive the latest version. The version is gathered from the latest (non pre-)release (or tag) that has the right prefix.
dependencies:
- name: gitdependency # The name of the dependency. (required)
type: github # The type of the dependency. (required)
currentVersion: v1.2.3 # The current version of the dependency. (required)
repo: 'fischerscode/uptodate' # The repository. (required)
isTag: true # Wether the version is determined by the latest
# tag rather then release (defaults to false)
path: tag_name # The path to the latest version. (defaults to tag_name)
prefix: v # The prefix of the semantic versions.
# Is set, releases/tags not matching the prefix are ignored.
# (v1.2.3 instead of 1.2.3)
# Defaults to ''
Uses a Helm repository to receive the latest version. The version is gathered from by the yaml path.
dependencies:
- name: helmdependency # The name of the dependency. (required)
type: helm # The type of the dependency. (required)
currentVersion: v1.2.3 # The current version of the dependency. (required)
repo: 'https://helm.traefik.io/traefik' # The repository. (required)
chart: traefik # The chart. (required)
prefix: v # The prefix of the semantic versions.
# (v1.2.3 instead of 1.2.3)
# Defaults to ''
path: 'entries.traefik.0.version' # The path to the latest version. (defaults to 'entries.$chart.0.version')