This commit is contained in:
Parry 2024-03-09 19:33:47 -08:00 committed by GitHub
commit fc642407a8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 58 additions and 24 deletions

View File

@ -36,6 +36,10 @@ jobs:
server-username: MAVEN_USERNAME server-username: MAVEN_USERNAME
server-password: MAVEN_CENTRAL_TOKEN server-password: MAVEN_CENTRAL_TOKEN
gpg-passphrase: MAVEN_GPG_PASSPHRASE gpg-passphrase: MAVEN_GPG_PASSPHRASE
env:
MAVEN_USERNAME: MAVEN_USERNAME
MAVEN_CENTRAL_TOKEN: MAVEN_CENTRAL_TOKEN
MAVEN_GPG_PASSPHRASE: MAVEN_GPG_PASSPHRASE
- name: Validate settings.xml - name: Validate settings.xml
run: | run: |
$xmlPath = Join-Path $HOME ".m2" "settings.xml" $xmlPath = Join-Path $HOME ".m2" "settings.xml"
@ -43,11 +47,11 @@ jobs:
[xml]$xml = Get-Content $xmlPath [xml]$xml = Get-Content $xmlPath
$servers = $xml.settings.servers.server $servers = $xml.settings.servers.server
if (($servers[0].id -ne 'maven') -or ($servers[0].username -ne '${env.MAVEN_USERNAME}') -or ($servers[0].password -ne '${env.MAVEN_CENTRAL_TOKEN}')) { if (($servers[0].id -ne 'maven') -or ($servers[0].username -ne 'MAVEN_USERNAME') -or ($servers[0].password -ne 'MAVEN_CENTRAL_TOKEN')) {
throw "Generated XML file is incorrect" throw "Generated XML file is incorrect"
} }
if (($servers[1].id -ne 'gpg.passphrase') -or ($servers[1].passphrase -ne '${env.MAVEN_GPG_PASSPHRASE}')) { if (($servers[1].id -ne 'gpg.passphrase') -or ($servers[1].passphrase -ne 'MAVEN_GPG_PASSPHRASE')) {
throw "Generated XML file is incorrect" throw "Generated XML file is incorrect"
} }
@ -77,6 +81,10 @@ jobs:
server-username: MAVEN_USERNAME server-username: MAVEN_USERNAME
server-password: MAVEN_CENTRAL_TOKEN server-password: MAVEN_CENTRAL_TOKEN
gpg-passphrase: MAVEN_GPG_PASSPHRASE gpg-passphrase: MAVEN_GPG_PASSPHRASE
env:
MAVEN_USERNAME: MAVEN_USERNAME
MAVEN_CENTRAL_TOKEN: MAVEN_CENTRAL_TOKEN
MAVEN_GPG_PASSPHRASE: MAVEN_GPG_PASSPHRASE
- name: Validate settings.xml is overwritten - name: Validate settings.xml is overwritten
run: | run: |
$xmlPath = Join-Path $HOME ".m2" "settings.xml" $xmlPath = Join-Path $HOME ".m2" "settings.xml"
@ -114,6 +122,10 @@ jobs:
server-password: MAVEN_CENTRAL_TOKEN server-password: MAVEN_CENTRAL_TOKEN
overwrite-settings: false overwrite-settings: false
gpg-passphrase: MAVEN_GPG_PASSPHRASE gpg-passphrase: MAVEN_GPG_PASSPHRASE
env:
MAVEN_USERNAME: MAVEN_USERNAME
MAVEN_CENTRAL_TOKEN: MAVEN_CENTRAL_TOKEN
MAVEN_GPG_PASSPHRASE: MAVEN_GPG_PASSPHRASE
- name: Validate that settings.xml is not overwritten - name: Validate that settings.xml is not overwritten
run: | run: |
$xmlPath = Join-Path $HOME ".m2" "settings.xml" $xmlPath = Join-Path $HOME ".m2" "settings.xml"
@ -145,6 +157,10 @@ jobs:
server-password: MAVEN_CENTRAL_TOKEN server-password: MAVEN_CENTRAL_TOKEN
gpg-passphrase: MAVEN_GPG_PASSPHRASE gpg-passphrase: MAVEN_GPG_PASSPHRASE
settings-path: ${{ runner.temp }} settings-path: ${{ runner.temp }}
env:
MAVEN_USERNAME: MAVEN_USERNAME
MAVEN_CENTRAL_TOKEN: MAVEN_CENTRAL_TOKEN
MAVEN_GPG_PASSPHRASE: MAVEN_GPG_PASSPHRASE
- name: Validate settings.xml location - name: Validate settings.xml location
run: | run: |
$path = Join-Path $env:RUNNER_TEMP "settings.xml" $path = Join-Path $env:RUNNER_TEMP "settings.xml"

View File

@ -1,8 +1,8 @@
import * as io from '@actions/io';
import * as core from '@actions/core'; import * as core from '@actions/core';
import * as io from '@actions/io';
import * as fs from 'fs'; import * as fs from 'fs';
import * as path from 'path';
import os from 'os'; import os from 'os';
import * as path from 'path';
import * as auth from '../src/auth'; import * as auth from '../src/auth';
import {M2_DIR, MVN_SETTINGS_FILE} from '../src/constants'; import {M2_DIR, MVN_SETTINGS_FILE} from '../src/constants';
@ -10,6 +10,14 @@ import {M2_DIR, MVN_SETTINGS_FILE} from '../src/constants';
const m2Dir = path.join(__dirname, M2_DIR); const m2Dir = path.join(__dirname, M2_DIR);
const settingsFile = path.join(m2Dir, MVN_SETTINGS_FILE); const settingsFile = path.join(m2Dir, MVN_SETTINGS_FILE);
// escape xml special characters
function escapeXml(unsafeStr: string) {
return unsafeStr
.replace(/&/g, '&')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;');
}
describe('auth tests', () => { describe('auth tests', () => {
let spyOSHomedir: jest.SpyInstance; let spyOSHomedir: jest.SpyInstance;
let spyInfo: jest.SpyInstance; let spyInfo: jest.SpyInstance;
@ -157,19 +165,22 @@ describe('auth tests', () => {
const username = 'USER'; const username = 'USER';
const password = '&<>"\'\'"><&'; const password = '&<>"\'\'"><&';
process.env['username'] = username;
process.env['password'] = password;
const expectedSettings = `<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" const expectedSettings = `<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers> <servers>
<server> <server>
<id>${id}</id> <id>${escapeXml(id)}</id>
<username>\${env.${username}}</username> <username>${escapeXml(username)}</username>
<password>\${env.&amp;&lt;&gt;"''"&gt;&lt;&amp;}</password> <password>${escapeXml(password)}</password>
</server> </server>
</servers> </servers>
</settings>`; </settings>`;
expect(auth.generate(id, username, password)).toEqual(expectedSettings); expect(auth.generate(id, 'username', 'password')).toEqual(expectedSettings);
}); });
it('generates valid settings.xml with additional configuration', () => { it('generates valid settings.xml with additional configuration', () => {
@ -178,23 +189,27 @@ describe('auth tests', () => {
const password = '&<>"\'\'"><&'; const password = '&<>"\'\'"><&';
const gpgPassphrase = 'PASSPHRASE'; const gpgPassphrase = 'PASSPHRASE';
process.env['username'] = username;
process.env['password'] = password;
process.env['gpgPassphrase'] = gpgPassphrase;
const expectedSettings = `<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" const expectedSettings = `<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers> <servers>
<server> <server>
<id>${id}</id> <id>${escapeXml(id)}</id>
<username>\${env.${username}}</username> <username>${escapeXml(username)}</username>
<password>\${env.&amp;&lt;&gt;"''"&gt;&lt;&amp;}</password> <password>${escapeXml(password)}</password>
</server> </server>
<server> <server>
<id>gpg.passphrase</id> <id>gpg.passphrase</id>
<passphrase>\${env.${gpgPassphrase}}</passphrase> <passphrase>${escapeXml(gpgPassphrase)}</passphrase>
</server> </server>
</servers> </servers>
</settings>`; </settings>`;
expect(auth.generate(id, username, password, gpgPassphrase)).toEqual( expect(auth.generate(id, 'username', 'password', 'gpgPassphrase')).toEqual(
expectedSettings expectedSettings
); );
}); });

8
dist/setup/index.js vendored
View File

@ -122928,9 +122928,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
}; };
Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.generate = exports.createAuthenticationSettings = exports.configureAuthentication = void 0; exports.generate = exports.createAuthenticationSettings = exports.configureAuthentication = void 0;
const path = __importStar(__nccwpck_require__(71017));
const core = __importStar(__nccwpck_require__(42186)); const core = __importStar(__nccwpck_require__(42186));
const io = __importStar(__nccwpck_require__(47351)); const io = __importStar(__nccwpck_require__(47351));
const path = __importStar(__nccwpck_require__(71017));
const fs = __importStar(__nccwpck_require__(57147)); const fs = __importStar(__nccwpck_require__(57147));
const os = __importStar(__nccwpck_require__(22037)); const os = __importStar(__nccwpck_require__(22037));
const xmlbuilder2_1 = __nccwpck_require__(70151); const xmlbuilder2_1 = __nccwpck_require__(70151);
@ -122982,8 +122982,8 @@ function generate(id, username, password, gpgPassphrase) {
server: [ server: [
{ {
id: id, id: id,
username: `\${env.${username}}`, username: process.env[username],
password: `\${env.${password}}` password: process.env[password]
} }
] ]
} }
@ -122992,7 +122992,7 @@ function generate(id, username, password, gpgPassphrase) {
if (gpgPassphrase) { if (gpgPassphrase) {
const gpgServer = { const gpgServer = {
id: 'gpg.passphrase', id: 'gpg.passphrase',
passphrase: `\${env.${gpgPassphrase}}` passphrase: process.env[gpgPassphrase]
}; };
xmlObj.settings.servers.server.push(gpgServer); xmlObj.settings.servers.server.push(gpgServer);
} }

View File

@ -182,7 +182,7 @@ steps:
jdkFile: ${{ runner.temp }}/java_package.tar.gz jdkFile: ${{ runner.temp }}/java_package.tar.gz
java-version: '11.0.0' java-version: '11.0.0'
architecture: x64 architecture: x64
- run: java -cp java HelloWorldApp - run: java -cp java HelloWorldApp
``` ```
@ -285,7 +285,10 @@ jobs:
server-password: MAVEN_CENTRAL_TOKEN # env variable for token in deploy server-password: MAVEN_CENTRAL_TOKEN # env variable for token in deploy
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Value of the GPG private key to import gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Value of the GPG private key to import
gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase
env:
MAVEN_USERNAME: ${{ vars.MAVEN_USERNAME }} # set the env variable for username
MAVEN_CENTRAL_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} # set the env variable for token
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} # set the env variable for GPG private key passphrase
- name: Publish to Apache Maven Central - name: Publish to Apache Maven Central
run: mvn deploy run: mvn deploy
env: env:
@ -527,7 +530,7 @@ steps:
## Java-version file ## Java-version file
If the `java-version-file` input is specified, the action will try to extract the version from the file and install it. If the `java-version-file` input is specified, the action will try to extract the version from the file and install it.
Action is able to recognize all variants of the version description according to [jenv](https://github.com/jenv/jenv). Action is able to recognize all variants of the version description according to [jenv](https://github.com/jenv/jenv).
Valid entry options: Valid entry options:
``` ```
major versions: 8, 11, 16, 17, 21 major versions: 8, 11, 16, 17, 21

View File

@ -1,6 +1,6 @@
import * as path from 'path';
import * as core from '@actions/core'; import * as core from '@actions/core';
import * as io from '@actions/io'; import * as io from '@actions/io';
import * as path from 'path';
import * as fs from 'fs'; import * as fs from 'fs';
import * as os from 'os'; import * as os from 'os';
@ -84,8 +84,8 @@ export function generate(
server: [ server: [
{ {
id: id, id: id,
username: `\${env.${username}}`, username: process.env[username],
password: `\${env.${password}}` password: process.env[password]
} }
] ]
} }
@ -95,7 +95,7 @@ export function generate(
if (gpgPassphrase) { if (gpgPassphrase) {
const gpgServer = { const gpgServer = {
id: 'gpg.passphrase', id: 'gpg.passphrase',
passphrase: `\${env.${gpgPassphrase}}` passphrase: process.env[gpgPassphrase]
}; };
xmlObj.settings.servers.server.push(gpgServer); xmlObj.settings.servers.server.push(gpgServer);
} }