- Remove the `getLastRelease` plugin type - Retrieve the last release based on Git tags - Create the next release Git tag before calling the `publish` plugins BREAKING CHANGE: Remove the `getLastRelease` plugin type The `getLastRelease` plugins will not be called anymore. BREAKING CHANGE: Git repository authentication is now mandatory The Git authentication is now mandatory and must be set via `GH_TOKEN`, `GITHUB_TOKEN`, `GL_TOKEN`, `GITLAB_TOKEN` or `GIT_CREDENTIALS` as described in [CI configuration](https://github.com/semantic-release/semantic-release/blob/caribou/docs/usage/ci-configuration.md#authentication).
30 lines
1.4 KiB
JavaScript
30 lines
1.4 KiB
JavaScript
const {parse, format} = require('url');
|
|
const {isUndefined} = require('lodash');
|
|
const gitUrlParse = require('git-url-parse');
|
|
|
|
const GIT_TOKENS = ['GH_TOKEN', 'GITHUB_TOKEN', 'GL_TOKEN', 'GITLAB_TOKEN', 'GIT_CREDENTIALS'];
|
|
|
|
/**
|
|
* Generate the git repository URL with creadentials.
|
|
* If the `gitCredentials` is defined, returns a http or https URL with Basic Authentication (`https://username:passowrd@hostname:port/path.git`).
|
|
* If the `gitCredentials` is undefined, returns the `repositoryUrl`. In that case it's expected for the user to have setup the Git authentication on the CI (for example via SSH keys).
|
|
*
|
|
* @param {String} gitCredentials Basic HTTP Authentication credentials, can be `username:password` or a token for certain Git providers.
|
|
* @param {String} repositoryUrl The git repository URL.
|
|
* @return {String} The formatted Git repository URL.
|
|
*/
|
|
module.exports = repositoryUrl => {
|
|
const envVar = GIT_TOKENS.find(envVar => !isUndefined(process.env[envVar]));
|
|
const gitCredentials = ['GL_TOKEN', 'GITLAB_TOKEN'].includes(envVar)
|
|
? `gitlab-ci-token:${process.env[envVar]}`
|
|
: process.env[envVar];
|
|
|
|
if (!gitCredentials) {
|
|
return repositoryUrl;
|
|
}
|
|
|
|
const {protocols} = gitUrlParse(repositoryUrl);
|
|
const protocol = protocols.includes('https') ? 'https' : protocols.includes('http') ? 'http' : 'https';
|
|
return format({...parse(`${gitUrlParse(repositoryUrl).toString(protocol)}.git`), ...{auth: gitCredentials}});
|
|
};
|