mirror of
https://gitea.com/actions/setup-java.git
synced 2026-08-07 02:31:20 +00:00
Fix JetBrains GitHub token resolution (#1224)
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -80,8 +80,11 @@ function response(
|
|||||||
describe('getAvailableVersions', () => {
|
describe('getAvailableVersions', () => {
|
||||||
let spyHttpClient: any;
|
let spyHttpClient: any;
|
||||||
let spyCoreError: any;
|
let spyCoreError: any;
|
||||||
|
const originalGitHubToken = process.env.GITHUB_TOKEN;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
delete process.env.GITHUB_TOKEN;
|
||||||
|
(core.getInput as jest.Mock).mockReturnValue('');
|
||||||
spyHttpClient = jest.spyOn(HttpClient.prototype, 'getJson');
|
spyHttpClient = jest.spyOn(HttpClient.prototype, 'getJson');
|
||||||
spyHttpClient.mockReturnValue({
|
spyHttpClient.mockReturnValue({
|
||||||
statusCode: 200,
|
statusCode: 200,
|
||||||
@@ -95,6 +98,11 @@ describe('getAvailableVersions', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
|
if (originalGitHubToken === undefined) {
|
||||||
|
delete process.env.GITHUB_TOKEN;
|
||||||
|
} else {
|
||||||
|
process.env.GITHUB_TOKEN = originalGitHubToken;
|
||||||
|
}
|
||||||
jest.resetAllMocks();
|
jest.resetAllMocks();
|
||||||
jest.clearAllMocks();
|
jest.clearAllMocks();
|
||||||
jest.restoreAllMocks();
|
jest.restoreAllMocks();
|
||||||
@@ -191,6 +199,92 @@ describe('getAvailableVersions', () => {
|
|||||||
expect(spyHttpClient).toHaveBeenCalledTimes(2);
|
expect(spyHttpClient).toHaveBeenCalledTimes(2);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('uses the token input for every paginated GitHub Releases request', async () => {
|
||||||
|
(core.getInput as jest.Mock).mockReturnValue('input-token');
|
||||||
|
spyHttpClient
|
||||||
|
.mockResolvedValueOnce({
|
||||||
|
statusCode: 200,
|
||||||
|
headers: nextPageHeader(2),
|
||||||
|
result: [release('jbr-release-21.0.11b1163.116', false)]
|
||||||
|
})
|
||||||
|
.mockResolvedValueOnce({
|
||||||
|
statusCode: 200,
|
||||||
|
headers: {},
|
||||||
|
result: [release('jbr-release-21.0.10b1087.6', false)]
|
||||||
|
});
|
||||||
|
const distribution = new JetBrainsDistribution({
|
||||||
|
version: '21',
|
||||||
|
architecture: 'x64',
|
||||||
|
packageType: 'jdk',
|
||||||
|
checkLatest: false
|
||||||
|
});
|
||||||
|
|
||||||
|
await distribution['getAvailableVersions']();
|
||||||
|
|
||||||
|
expect(spyHttpClient).toHaveBeenNthCalledWith(1, JETBRAINS_RELEASES_URL, {
|
||||||
|
Accept: 'application/vnd.github+json',
|
||||||
|
Authorization: 'Bearer input-token'
|
||||||
|
});
|
||||||
|
expect(spyHttpClient).toHaveBeenNthCalledWith(
|
||||||
|
2,
|
||||||
|
`${JETBRAINS_RELEASES_URL}&page=2`,
|
||||||
|
{
|
||||||
|
Accept: 'application/vnd.github+json',
|
||||||
|
Authorization: 'Bearer input-token'
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('prefers the token input over the environment fallback', async () => {
|
||||||
|
(core.getInput as jest.Mock).mockReturnValue('input-token');
|
||||||
|
process.env.GITHUB_TOKEN = 'environment-token';
|
||||||
|
const distribution = new JetBrainsDistribution({
|
||||||
|
version: '21',
|
||||||
|
architecture: 'x64',
|
||||||
|
packageType: 'jdk',
|
||||||
|
checkLatest: false
|
||||||
|
});
|
||||||
|
|
||||||
|
await distribution['getAvailableVersions']();
|
||||||
|
|
||||||
|
expect(spyHttpClient).toHaveBeenCalledWith(JETBRAINS_RELEASES_URL, {
|
||||||
|
Accept: 'application/vnd.github+json',
|
||||||
|
Authorization: 'Bearer input-token'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('falls back to GITHUB_TOKEN when the token input is empty', async () => {
|
||||||
|
process.env.GITHUB_TOKEN = 'environment-token';
|
||||||
|
const distribution = new JetBrainsDistribution({
|
||||||
|
version: '21',
|
||||||
|
architecture: 'x64',
|
||||||
|
packageType: 'jdk',
|
||||||
|
checkLatest: false
|
||||||
|
});
|
||||||
|
|
||||||
|
await distribution['getAvailableVersions']();
|
||||||
|
|
||||||
|
expect(spyHttpClient).toHaveBeenCalledWith(JETBRAINS_RELEASES_URL, {
|
||||||
|
Accept: 'application/vnd.github+json',
|
||||||
|
Authorization: 'Bearer environment-token'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('omits authorization when no GitHub token is available', async () => {
|
||||||
|
const distribution = new JetBrainsDistribution({
|
||||||
|
version: '21',
|
||||||
|
architecture: 'x64',
|
||||||
|
packageType: 'jdk',
|
||||||
|
checkLatest: false
|
||||||
|
});
|
||||||
|
|
||||||
|
await distribution['getAvailableVersions']();
|
||||||
|
|
||||||
|
expect(spyHttpClient).toHaveBeenCalledWith(JETBRAINS_RELEASES_URL, {
|
||||||
|
Accept: 'application/vnd.github+json'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('stops pagination when a raw GitHub page is empty', async () => {
|
it('stops pagination when a raw GitHub page is empty', async () => {
|
||||||
spyHttpClient
|
spyHttpClient
|
||||||
.mockResolvedValueOnce({
|
.mockResolvedValueOnce({
|
||||||
|
|||||||
Vendored
+5
-2
@@ -30839,7 +30839,7 @@ const DISTRIBUTIONS_ONLY_MAJOR_VERSION = (/* unused pure expression or super */
|
|||||||
/* harmony export */ Vt: () => (/* binding */ getBooleanInput),
|
/* harmony export */ Vt: () => (/* binding */ getBooleanInput),
|
||||||
/* harmony export */ lN: () => (/* binding */ isJdkCacheEnabled)
|
/* harmony export */ lN: () => (/* binding */ isJdkCacheEnabled)
|
||||||
/* harmony export */ });
|
/* harmony export */ });
|
||||||
/* unused harmony exports getVersionFromToolcachePath, extractJdkFile, cacheJdkDir, getJavaVersionFromReleaseFile, getDownloadArchiveExtension, isVersionSatisfies, getToolcachePath, isGhes, getVersionFromFileContent, convertVersionToSemver, getArtifactFingerprint, getGitHubHttpHeaders, MAX_PAGINATION_PAGES, getNextPageUrlFromLinkHeader, validatePaginationUrl, renameWinArchive, getLatestMajorVersion */
|
/* unused harmony exports getVersionFromToolcachePath, extractJdkFile, cacheJdkDir, getJavaVersionFromReleaseFile, getDownloadArchiveExtension, isVersionSatisfies, getToolcachePath, isGhes, getVersionFromFileContent, convertVersionToSemver, getArtifactFingerprint, getGitHubToken, getGitHubHttpHeaders, MAX_PAGINATION_PAGES, getNextPageUrlFromLinkHeader, validatePaginationUrl, renameWinArchive, getLatestMajorVersion */
|
||||||
/* harmony import */ var os__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(857);
|
/* harmony import */ var os__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(857);
|
||||||
/* harmony import */ var os__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(os__WEBPACK_IMPORTED_MODULE_0__);
|
/* harmony import */ var os__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(os__WEBPACK_IMPORTED_MODULE_0__);
|
||||||
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(6928);
|
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(6928);
|
||||||
@@ -31266,8 +31266,11 @@ function getArtifactFingerprint(headers) {
|
|||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
function getGitHubToken() {
|
||||||
|
return core.getInput('token') || process.env.GITHUB_TOKEN;
|
||||||
|
}
|
||||||
function getGitHubHttpHeaders() {
|
function getGitHubHttpHeaders() {
|
||||||
const resolvedToken = core.getInput('token') || process.env.GITHUB_TOKEN;
|
const resolvedToken = getGitHubToken();
|
||||||
const auth = !resolvedToken ? undefined : `token ${resolvedToken}`;
|
const auth = !resolvedToken ? undefined : `token ${resolvedToken}`;
|
||||||
const headers = {
|
const headers = {
|
||||||
accept: 'application/vnd.github.VERSION.raw'
|
accept: 'application/vnd.github.VERSION.raw'
|
||||||
|
|||||||
Vendored
+5
-3
@@ -77,10 +77,12 @@ class JetBrainsDistribution extends _base_installer_js__WEBPACK_IMPORTED_MODULE_
|
|||||||
console.time('Retrieving available versions for JBR took'); // eslint-disable-line no-console
|
console.time('Retrieving available versions for JBR took'); // eslint-disable-line no-console
|
||||||
}
|
}
|
||||||
const rawVersions = [];
|
const rawVersions = [];
|
||||||
const bearerToken = process.env.GITHUB_TOKEN;
|
const bearerToken = (0,_util_js__WEBPACK_IMPORTED_MODULE_5__/* .getGitHubToken */ .lK)();
|
||||||
const requestHeaders = {};
|
const requestHeaders = {
|
||||||
|
Accept: 'application/vnd.github+json'
|
||||||
|
};
|
||||||
if (bearerToken) {
|
if (bearerToken) {
|
||||||
requestHeaders['Authorization'] = `Bearer ${bearerToken}`;
|
requestHeaders.Authorization = `Bearer ${bearerToken}`;
|
||||||
}
|
}
|
||||||
let releasesUrl = JETBRAINS_RELEASES_URL;
|
let releasesUrl = JETBRAINS_RELEASES_URL;
|
||||||
let pageCount = 0;
|
let pageCount = 0;
|
||||||
|
|||||||
Vendored
+5
-1
@@ -31265,6 +31265,7 @@ function validateToolchainIds(versions, versionFile, toolchainIds) {
|
|||||||
/* harmony export */ ZY: () => (/* binding */ convertVersionToSemver),
|
/* harmony export */ ZY: () => (/* binding */ convertVersionToSemver),
|
||||||
/* harmony export */ aT: () => (/* binding */ isGhes),
|
/* harmony export */ aT: () => (/* binding */ isGhes),
|
||||||
/* harmony export */ ag: () => (/* binding */ getDownloadArchiveExtension),
|
/* harmony export */ ag: () => (/* binding */ getDownloadArchiveExtension),
|
||||||
|
/* harmony export */ lK: () => (/* binding */ getGitHubToken),
|
||||||
/* harmony export */ lN: () => (/* binding */ isJdkCacheEnabled),
|
/* harmony export */ lN: () => (/* binding */ isJdkCacheEnabled),
|
||||||
/* harmony export */ n2: () => (/* binding */ renameWinArchive),
|
/* harmony export */ n2: () => (/* binding */ renameWinArchive),
|
||||||
/* harmony export */ rC: () => (/* binding */ getNextPageUrlFromLinkHeader),
|
/* harmony export */ rC: () => (/* binding */ getNextPageUrlFromLinkHeader),
|
||||||
@@ -31699,8 +31700,11 @@ function getArtifactFingerprint(headers) {
|
|||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
function getGitHubToken() {
|
||||||
|
return _actions_core__WEBPACK_IMPORTED_MODULE_4__/* .getInput */ .V4('token') || process.env.GITHUB_TOKEN;
|
||||||
|
}
|
||||||
function getGitHubHttpHeaders() {
|
function getGitHubHttpHeaders() {
|
||||||
const resolvedToken = _actions_core__WEBPACK_IMPORTED_MODULE_4__/* .getInput */ .V4('token') || process.env.GITHUB_TOKEN;
|
const resolvedToken = getGitHubToken();
|
||||||
const auth = !resolvedToken ? undefined : `token ${resolvedToken}`;
|
const auth = !resolvedToken ? undefined : `token ${resolvedToken}`;
|
||||||
const headers = {
|
const headers = {
|
||||||
accept: 'application/vnd.github.VERSION.raw'
|
accept: 'application/vnd.github.VERSION.raw'
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import {
|
|||||||
import {
|
import {
|
||||||
cacheJdkDir,
|
cacheJdkDir,
|
||||||
extractJdkFile,
|
extractJdkFile,
|
||||||
|
getGitHubToken,
|
||||||
getNextPageUrlFromLinkHeader,
|
getNextPageUrlFromLinkHeader,
|
||||||
isVersionSatisfies,
|
isVersionSatisfies,
|
||||||
MAX_PAGINATION_PAGES,
|
MAX_PAGINATION_PAGES,
|
||||||
@@ -108,10 +109,12 @@ export class JetBrainsDistribution extends JavaBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const rawVersions: IJetBrainsRawVersion[] = [];
|
const rawVersions: IJetBrainsRawVersion[] = [];
|
||||||
const bearerToken = process.env.GITHUB_TOKEN;
|
const bearerToken = getGitHubToken();
|
||||||
const requestHeaders: OutgoingHttpHeaders = {};
|
const requestHeaders: OutgoingHttpHeaders = {
|
||||||
|
Accept: 'application/vnd.github+json'
|
||||||
|
};
|
||||||
if (bearerToken) {
|
if (bearerToken) {
|
||||||
requestHeaders['Authorization'] = `Bearer ${bearerToken}`;
|
requestHeaders.Authorization = `Bearer ${bearerToken}`;
|
||||||
}
|
}
|
||||||
let releasesUrl: string | null = JETBRAINS_RELEASES_URL;
|
let releasesUrl: string | null = JETBRAINS_RELEASES_URL;
|
||||||
let pageCount = 0;
|
let pageCount = 0;
|
||||||
|
|||||||
+5
-1
@@ -544,8 +544,12 @@ export function getArtifactFingerprint(
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getGitHubToken(): string | undefined {
|
||||||
|
return core.getInput('token') || process.env.GITHUB_TOKEN;
|
||||||
|
}
|
||||||
|
|
||||||
export function getGitHubHttpHeaders(): OutgoingHttpHeaders {
|
export function getGitHubHttpHeaders(): OutgoingHttpHeaders {
|
||||||
const resolvedToken = core.getInput('token') || process.env.GITHUB_TOKEN;
|
const resolvedToken = getGitHubToken();
|
||||||
const auth = !resolvedToken ? undefined : `token ${resolvedToken}`;
|
const auth = !resolvedToken ? undefined : `token ${resolvedToken}`;
|
||||||
|
|
||||||
const headers: OutgoingHttpHeaders = {
|
const headers: OutgoingHttpHeaders = {
|
||||||
|
|||||||
Reference in New Issue
Block a user