Add support for gitlab deploy token (#8867)
* feat: Added ability to work with GitLab deploy tokens: https://docs.gitlab.com/ee/user/project/deploy_tokens/ Deploy tokens can be specified two ways: 1) GIT CONFIG: git config --add gitlab.deploytoken.user USERNAME && git config --add gitlab.deploytoken.token TOKEN 2) Auth.json: "gitlab-token": { "gitlab.com": {"username": "USERNAME", "token": "TOKEN"} }pull/8901/head
parent
ec3f18ee92
commit
a074819a51
|
@ -85,9 +85,13 @@ gitlab.com the domain names must be also specified with the
|
||||||
|
|
||||||
## gitlab-token
|
## gitlab-token
|
||||||
|
|
||||||
A list of domain names and private tokens. For example using `{"gitlab.com":
|
A list of domain names and private tokens. Private token can be either simple
|
||||||
|
string, or array with username and token. For example using `{"gitlab.com":
|
||||||
"privatetoken"}` as the value of this option will use `privatetoken` to access
|
"privatetoken"}` as the value of this option will use `privatetoken` to access
|
||||||
private repositories on gitlab. Please note: If the package is not hosted at
|
private repositories on gitlab. Using `{"gitlab.com": {"username": "gitlabuser",
|
||||||
|
"token": "privatetoken"}}` will use both username and token for gitlab deploy
|
||||||
|
token functionality (https://docs.gitlab.com/ee/user/project/deploy_tokens/)
|
||||||
|
Please note: If the package is not hosted at
|
||||||
gitlab.com the domain names must be also specified with the
|
gitlab.com the domain names must be also specified with the
|
||||||
[`gitlab-domains`](06-config.md#gitlab-domains) option.
|
[`gitlab-domains`](06-config.md#gitlab-domains) option.
|
||||||
|
|
||||||
|
|
|
@ -135,7 +135,9 @@ abstract class BaseIO implements IOInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($gitlabToken as $domain => $token) {
|
foreach ($gitlabToken as $domain => $token) {
|
||||||
$this->checkAndSetAuthentication($domain, $token, 'private-token');
|
$username = is_array($token) && array_key_exists("username", $token) ? $token["username"] : $token;
|
||||||
|
$password = is_array($token) && array_key_exists("token", $token) ? $token["token"] : 'private-token';
|
||||||
|
$this->checkAndSetAuthentication($domain, $username, $password);
|
||||||
}
|
}
|
||||||
|
|
||||||
// reload http basic credentials from config if available
|
// reload http basic credentials from config if available
|
||||||
|
|
|
@ -71,17 +71,28 @@ class GitLab
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if available use token from composer config
|
// if available use deploy token from git config
|
||||||
$authTokens = $this->config->get('gitlab-token');
|
if (0 === $this->process->execute('git config gitlab.deploytoken.user', $tokenUser) && 0 === $this->process->execute('git config gitlab.deploytoken.token', $tokenPassword)) {
|
||||||
|
$this->io->setAuthentication($originUrl, trim($tokenUser), trim($tokenPassword));
|
||||||
if (isset($authTokens[$originUrl])) {
|
|
||||||
$this->io->setAuthentication($originUrl, $authTokens[$originUrl], 'private-token');
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if available use token from composer config
|
||||||
|
$authTokens = $this->config->get('gitlab-token');
|
||||||
|
|
||||||
|
if (isset($authTokens[$originUrl])) {
|
||||||
|
$token = $authTokens[$originUrl];
|
||||||
|
}
|
||||||
|
|
||||||
if (isset($authTokens[$bcOriginUrl])) {
|
if (isset($authTokens[$bcOriginUrl])) {
|
||||||
$this->io->setAuthentication($originUrl, $authTokens[$bcOriginUrl], 'private-token');
|
$token = $authTokens[$bcOriginUrl];
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isset($token)){
|
||||||
|
$username = is_array($token) && array_key_exists("username", $token) ? $token["username"] : $token;
|
||||||
|
$password = is_array($token) && array_key_exists("token", $token) ? $token["token"] : 'private-token';
|
||||||
|
$this->io->setAuthentication($originUrl, $username, $password);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue