Alien-Build-Plugin-Download-GitHub
view release on metacpan or search on metacpan
This will be used as the prefer hook.
true value (not code reference)
Use Alien::Build::Plugin::Prefer::SortVersions.
false value
Don't set any preference at all. The order returned from GitHub will
be used if no other prefer plugins are specified. This may be
reasonable for at least some GitHub repositories. This is the
default.
asset
Download from assets instead of via tag. This option is incompatible
with tags_only.
asset_name
Regular expression which the asset name should match. The default is
qr/\.tar\.gz$/.
asset_format
The format of the asset. This is passed to
Alien::Build::Plugin::Extract::Negotiate so any format supported by
that is valid.
[version 0.10]
If this is set to none then no extractor will be added. This allows for
you to write your own extractor code, or use a non-standard one.
asset_convert_version
This is an optional code reference which can be used to modify the
version. For example, if the release version is prefixed with a v You
could do this:
plugin 'Download::GitHub' => (
github_user => 'PerlAlien',
github_repo => 'dontpanic',
asset => 1,
asset_convert_version => sub {
my $version = shift;
$version =~ s/^v//;
$version;
},
);
ENVIRONMENT
ALIEN_BUILD_GITHUB_TOKEN GITHUB_TOKEN GITHUB_PAT
If one of these environment variables are set, then the GitHub API
Personal Access Token (PAT) will be used when connecting to the
GitHub API.
For security reasons, the PAT will be removed from the log. Some
Fetch plugins (for example the curl plugin) will log HTTP requests
headers so this will make sure that your PAT is not displayed in the
log.
ALIEN_BUILD_PLUGIN_DOWNLOAD_GITHUB_DEBUG
Setting this to a true value will send additional diagnostics to the
log during the indexing phase of the fetch.
CAVEATS
This plugin does not support, and will not work if ALIEN_DOWNLOAD_RULE
is set to either digest_and_encrypt or digest.
The GitHub API is rate limited. Once you've reach that limit, this
plugin will be inoperative for a period of time until the limits reset.
When using the GitHub API unauthenticated the limit is especially low.
This is usually not a problem when used in production where you only
need to use the API once for each Alien, but it can become a problem
when testing an Alien that uses this plugin in CI or via cpantesters.
In this situation you can set the ALIEN_BUILD_GITHUB_TOKEN environment
variable (or commonly used but unofficial GITHUB_TOKEN or GITHUB_PAT),
and this plugin will use that in making API requests. If you are using
GitHub Actions for CI, then you can use the secrets.GITHUB_TOKEN macro
to get a PAT.
If you do this it is recommended that you make some precautions where
possible:
Limit permissions
Create a PAT with the bare minimum access permissions. Consider
creating a separate GitHub account without access to anything, and
use it to generate the PAT.
Limit scope of usage
The PAT is only needed (if it is needed at all) during the build
stage of a share install. If you are doing this in GitHub Actions you
can just set the environment variable for that stage:
perl Makefile.PL
env ALIEN_BUILD_GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} make
make test
Or if you are using Dist::Zilla
dzil listdeps --missing | cpanm -n
env ALIEN_BUILD_GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} dzil test
AUTHOR
Author: Graham Ollis <plicease@cpan.org>
Contributors:
Roy Storey (KIWIROY)
COPYRIGHT AND LICENSE
This software is copyright (c) 2019-2022 by Graham Ollis.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
( run in 0.699 second using v1.01-cache-2.11-cpan-39bf76dae61 )