Merge pull request #201 from mathieubergeron/fix-parse-secret-containing-equal-character
Fix parsing of secrets containing '=' characterpull/203/head
commit
bef45c0027
|
@ -3,9 +3,9 @@ import * as path from 'path';
|
||||||
import * as semver from 'semver';
|
import * as semver from 'semver';
|
||||||
import * as buildx from '../src/buildx';
|
import * as buildx from '../src/buildx';
|
||||||
import * as docker from '../src/docker';
|
import * as docker from '../src/docker';
|
||||||
import * as exec from '@actions/exec';
|
|
||||||
import * as context from '../src/context';
|
import * as context from '../src/context';
|
||||||
|
|
||||||
|
const tmpNameSync = path.join('/tmp/.docker-build-push-jest', '.tmpname-jest').split(path.sep).join(path.posix.sep);
|
||||||
const digest = 'sha256:bfb45ab72e46908183546477a08f8867fc40cebadd00af54b071b097aed127a9';
|
const digest = 'sha256:bfb45ab72e46908183546477a08f8867fc40cebadd00af54b071b097aed127a9';
|
||||||
|
|
||||||
jest.spyOn(context, 'tmpDir').mockImplementation((): string => {
|
jest.spyOn(context, 'tmpDir').mockImplementation((): string => {
|
||||||
|
@ -17,7 +17,7 @@ jest.spyOn(context, 'tmpDir').mockImplementation((): string => {
|
||||||
});
|
});
|
||||||
|
|
||||||
jest.spyOn(context, 'tmpNameSync').mockImplementation((): string => {
|
jest.spyOn(context, 'tmpNameSync').mockImplementation((): string => {
|
||||||
return path.join('/tmp/.docker-build-push-jest', '.tmpname-jest').split(path.sep).join(path.posix.sep);
|
return tmpNameSync;
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('getImageID', () => {
|
describe('getImageID', () => {
|
||||||
|
@ -115,3 +115,16 @@ describe('parseVersion', () => {
|
||||||
expect(await buildx.parseVersion(stdout)).toEqual(expected);
|
expect(await buildx.parseVersion(stdout)).toEqual(expected);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('getSecret', () => {
|
||||||
|
it('writes correct secret content', async () => {
|
||||||
|
const key = 'MY_KEY';
|
||||||
|
const secret = 'c3RyaW5nLXdpdGgtZXF1YWxzCg==';
|
||||||
|
const secretArgs = await buildx.getSecret(`${key}=${secret}`);
|
||||||
|
console.log(`secretArgs: ${secretArgs}`);
|
||||||
|
expect(secretArgs).toEqual(`id=${key},src=${tmpNameSync}`);
|
||||||
|
const secretContent = await fs.readFileSync(tmpNameSync, 'utf-8');
|
||||||
|
console.log(`secretValue: ${secretContent}`);
|
||||||
|
expect(secretContent).toEqual(secret);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as buildx from '../src/buildx';
|
|
||||||
import * as context from '../src/context';
|
import * as context from '../src/context';
|
||||||
|
|
||||||
jest.spyOn(context, 'defaultContext').mockImplementation((): string => {
|
jest.spyOn(context, 'defaultContext').mockImplementation((): string => {
|
||||||
|
@ -107,7 +106,7 @@ describe('getArgs', () => {
|
||||||
'0.4.2',
|
'0.4.2',
|
||||||
new Map<string, string>([
|
new Map<string, string>([
|
||||||
['context', '.'],
|
['context', '.'],
|
||||||
['secrets', 'GIT_AUTH_TOKEN=abcdefghijklmno0123456789'],
|
['secrets', 'GIT_AUTH_TOKEN=abcdefghijklmno=0123456789'],
|
||||||
]),
|
]),
|
||||||
[
|
[
|
||||||
'buildx',
|
'buildx',
|
||||||
|
@ -139,7 +138,7 @@ describe('getArgs', () => {
|
||||||
['context', 'https://github.com/docker/build-push-action.git#heads/master'],
|
['context', 'https://github.com/docker/build-push-action.git#heads/master'],
|
||||||
['tag', 'localhost:5000/name/app:latest'],
|
['tag', 'localhost:5000/name/app:latest'],
|
||||||
['platforms', 'linux/amd64,linux/arm64'],
|
['platforms', 'linux/amd64,linux/arm64'],
|
||||||
['secrets', 'GIT_AUTH_TOKEN=abcdefghijklmno0123456789'],
|
['secrets', 'GIT_AUTH_TOKEN=abcdefghijklmno=0123456789'],
|
||||||
['file', './test/Dockerfile'],
|
['file', './test/Dockerfile'],
|
||||||
['builder', 'builder-git-context-2'],
|
['builder', 'builder-git-context-2'],
|
||||||
['push', 'true']
|
['push', 'true']
|
||||||
|
|
|
@ -4248,7 +4248,9 @@ function getImageID() {
|
||||||
exports.getImageID = getImageID;
|
exports.getImageID = getImageID;
|
||||||
function getSecret(kvp) {
|
function getSecret(kvp) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const [key, value] = kvp.split('=');
|
const delimiterIndex = kvp.indexOf('=');
|
||||||
|
const key = kvp.substring(0, delimiterIndex);
|
||||||
|
const value = kvp.substring(delimiterIndex + 1);
|
||||||
const secretFile = context.tmpNameSync({
|
const secretFile = context.tmpNameSync({
|
||||||
tmpdir: context.tmpDir()
|
tmpdir: context.tmpDir()
|
||||||
});
|
});
|
||||||
|
|
|
@ -18,7 +18,9 @@ export async function getImageID(): Promise<string | undefined> {
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getSecret(kvp: string): Promise<string> {
|
export async function getSecret(kvp: string): Promise<string> {
|
||||||
const [key, value] = kvp.split('=');
|
const delimiterIndex = kvp.indexOf('=');
|
||||||
|
const key = kvp.substring(0, delimiterIndex);
|
||||||
|
const value = kvp.substring(delimiterIndex + 1);
|
||||||
const secretFile = context.tmpNameSync({
|
const secretFile = context.tmpNameSync({
|
||||||
tmpdir: context.tmpDir()
|
tmpdir: context.tmpDir()
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue