Compare commits
3 Commits
master
...
1194/githu
Author | SHA1 | Date | |
---|---|---|---|
|
a07b2ee339 | ||
|
8f7456f6ed | ||
|
2569f0bd91 |
@ -3,16 +3,6 @@ const {isNil} = require('lodash');
|
|||||||
const hostedGitInfo = require('hosted-git-info');
|
const hostedGitInfo = require('hosted-git-info');
|
||||||
const {verifyAuth} = require('./git');
|
const {verifyAuth} = require('./git');
|
||||||
|
|
||||||
const GIT_TOKENS = {
|
|
||||||
GIT_CREDENTIALS: undefined,
|
|
||||||
GH_TOKEN: undefined,
|
|
||||||
GITHUB_TOKEN: undefined,
|
|
||||||
GL_TOKEN: 'gitlab-ci-token:',
|
|
||||||
GITLAB_TOKEN: 'gitlab-ci-token:',
|
|
||||||
BB_TOKEN: 'x-token-auth:',
|
|
||||||
BITBUCKET_TOKEN: 'x-token-auth:',
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine the the git repository URL to use to push, either:
|
* Determine the the git repository URL to use to push, either:
|
||||||
* - The `repositoryUrl` as is if allowed to push
|
* - The `repositoryUrl` as is if allowed to push
|
||||||
@ -25,6 +15,18 @@ const GIT_TOKENS = {
|
|||||||
* @return {String} The formatted Git repository URL.
|
* @return {String} The formatted Git repository URL.
|
||||||
*/
|
*/
|
||||||
module.exports = async ({cwd, env, options: {repositoryUrl, branch}}) => {
|
module.exports = async ({cwd, env, options: {repositoryUrl, branch}}) => {
|
||||||
|
const GIT_TOKENS = {
|
||||||
|
GIT_CREDENTIALS: undefined,
|
||||||
|
GH_TOKEN: undefined,
|
||||||
|
// GitHub Actions require the "x-access-token:" prefix for git access
|
||||||
|
// https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#http-based-git-access-by-an-installation
|
||||||
|
GITHUB_TOKEN: isNil(env.GITHUB_ACTION) ? undefined : 'x-access-token:',
|
||||||
|
GL_TOKEN: 'gitlab-ci-token:',
|
||||||
|
GITLAB_TOKEN: 'gitlab-ci-token:',
|
||||||
|
BB_TOKEN: 'x-token-auth:',
|
||||||
|
BITBUCKET_TOKEN: 'x-token-auth:',
|
||||||
|
};
|
||||||
|
|
||||||
const info = hostedGitInfo.fromUrl(repositoryUrl, {noGitPlus: true});
|
const info = hostedGitInfo.fromUrl(repositoryUrl, {noGitPlus: true});
|
||||||
const {protocol, ...parsed} = parse(repositoryUrl);
|
const {protocol, ...parsed} = parse(repositoryUrl);
|
||||||
|
|
||||||
@ -43,6 +45,13 @@ module.exports = async ({cwd, env, options: {repositoryUrl, branch}}) => {
|
|||||||
const envVar = Object.keys(GIT_TOKENS).find(envVar => !isNil(env[envVar]));
|
const envVar = Object.keys(GIT_TOKENS).find(envVar => !isNil(env[envVar]));
|
||||||
const gitCredentials = `${GIT_TOKENS[envVar] || ''}${env[envVar] || ''}`;
|
const gitCredentials = `${GIT_TOKENS[envVar] || ''}${env[envVar] || ''}`;
|
||||||
|
|
||||||
|
console.log(`-------- envVar -------- `);
|
||||||
|
console.log(envVar);
|
||||||
|
console.log(`-------- GIT_TOKENS[envVar] -------- `);
|
||||||
|
console.log(GIT_TOKENS[envVar]);
|
||||||
|
console.log(`-------- env[envVar].substr(5) -------- `);
|
||||||
|
console.log((env[envVar] || '').substr(5));
|
||||||
|
|
||||||
if (gitCredentials) {
|
if (gitCredentials) {
|
||||||
// If credentials are set via environment variables, convert the URL to http/https and add basic auth, otherwise return `repositoryUrl` as is
|
// If credentials are set via environment variables, convert the URL to http/https and add basic auth, otherwise return `repositoryUrl` as is
|
||||||
const [match, auth, host, path] = /^(?!.+:\/\/)(?:(.*)@)?(.*?):(.*)$/.exec(repositoryUrl) || [];
|
const [match, auth, host, path] = /^(?!.+:\/\/)(?:(.*)@)?(.*?):(.*)$/.exec(repositoryUrl) || [];
|
||||||
|
@ -244,6 +244,19 @@ test('Return the "https" formatted URL if "gitCredentials" is defined with "BITB
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Return the "https" formatted URL if "GITHUB_ACTION" is set', async t => {
|
||||||
|
const {cwd} = await gitRepo();
|
||||||
|
|
||||||
|
t.is(
|
||||||
|
await getAuthUrl({
|
||||||
|
cwd,
|
||||||
|
env: {...env, GITHUB_ACTION: 'foo', GITHUB_TOKEN: 'token'},
|
||||||
|
options: {branch: 'master', repositoryUrl: 'git@host.null:owner/repo.git'},
|
||||||
|
}),
|
||||||
|
'https://x-access-token:token@host.null/owner/repo.git'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
test('Handle "https" URL with group and subgroup, with "GIT_CREDENTIALS"', async t => {
|
test('Handle "https" URL with group and subgroup, with "GIT_CREDENTIALS"', async t => {
|
||||||
const {cwd} = await gitRepo();
|
const {cwd} = await gitRepo();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user