GithubRefs: Allow arbitrary ref types
GitHub's reference list API does not actually restrict the specified type, so don't artificially restrict it. The API does not actually make a distinction between the "type" and "prefix" at all, but this is maintained for backwards compatibility. The two are simply concatenated.
This commit is contained in:
@@ -18,9 +18,8 @@ tags) from GitHub following a certain naming scheme
|
|||||||
|
|
||||||
=head1 DESCRIPTION
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
This plugin reads the list of branches or tags using GitHub's REST API. The name
|
This plugin reads the list of branches or tags using GitHub's REST API. This
|
||||||
of the reference must follow a particular prefix. This list is stored in the
|
list is stored in the nix-store and used as an input to declarative jobsets.
|
||||||
nix-store and used as an input to declarative jobsets.
|
|
||||||
|
|
||||||
=head1 CONFIGURATION
|
=head1 CONFIGURATION
|
||||||
|
|
||||||
@@ -34,7 +33,7 @@ The declarative project C<spec.json> file must contains an input such as
|
|||||||
|
|
||||||
"pulls": {
|
"pulls": {
|
||||||
"type": "github_refs",
|
"type": "github_refs",
|
||||||
"value": "[owner] [repo] heads|tags - [prefix]",
|
"value": "[owner] [repo] [type] - [prefix]",
|
||||||
"emailresponsible": false
|
"emailresponsible": false
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,12 +41,11 @@ In the above snippet, C<[owner]> is the repository owner and C<[repo]> is the
|
|||||||
repository name. Also note a literal C<->, which is placed there for the future
|
repository name. Also note a literal C<->, which is placed there for the future
|
||||||
use.
|
use.
|
||||||
|
|
||||||
C<heads|tags> denotes that one of these two is allowed, that is, the third
|
C<[type]> is the type of ref to list. Typical values are "heads", "tags", and
|
||||||
position should hold either the C<heads> or the C<tags> keyword. In case of the former, the plugin
|
"pull". "." will include all types.
|
||||||
will fetch all branches, while in case of the latter, it will fetch the tags.
|
|
||||||
|
|
||||||
C<prefix> denotes the prefix the reference name must start with, in order to be
|
C<prefix> denotes the prefix the reference name must start with, in order to be
|
||||||
included.
|
included. "." will include all references.
|
||||||
|
|
||||||
For example, C<"value": "nixos hydra heads - release/"> refers to
|
For example, C<"value": "nixos hydra heads - release/"> refers to
|
||||||
L<https://github.com/nixos/hydra> repository, and will fetch all branches that
|
L<https://github.com/nixos/hydra> repository, and will fetch all branches that
|
||||||
@@ -102,8 +100,6 @@ sub fetchInput {
|
|||||||
return undef if $input_type ne "github_refs";
|
return undef if $input_type ne "github_refs";
|
||||||
|
|
||||||
my ($owner, $repo, $type, $fut, $prefix) = split ' ', $value;
|
my ($owner, $repo, $type, $fut, $prefix) = split ' ', $value;
|
||||||
die "type field is neither 'heads' nor 'tags', but '$type'"
|
|
||||||
unless $type eq 'heads' or $type eq 'tags';
|
|
||||||
|
|
||||||
my $auth = $self->{config}->{github_authorization}->{$owner};
|
my $auth = $self->{config}->{github_authorization}->{$owner};
|
||||||
my $githubEndpoint = $self->{config}->{github_endpoint} // "https://api.github.com";
|
my $githubEndpoint = $self->{config}->{github_endpoint} // "https://api.github.com";
|
||||||
|
|||||||
Reference in New Issue
Block a user