Add feature to pass extra args when pushing image (#19)

If a user wants to pass few extra args to push
command when pushing image, then they can pass
using 'extra-args' input parameter.

Signed-off-by: divyansh42 <diagrawa@redhat.com>
This commit is contained in:
Divyanshu Agrawal 2021-02-08 20:07:42 +05:30 committed by GitHub
parent e7b5c08b38
commit 870f44bc9b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 41 additions and 3 deletions

View file

@ -92,6 +92,8 @@ jobs:
registry: ${{ env.IMAGE_REGISTRY }}/${{ secrets.REGISTRY_USER }} registry: ${{ env.IMAGE_REGISTRY }}/${{ secrets.REGISTRY_USER }}
username: ${{ secrets.REGISTRY_USER }} username: ${{ secrets.REGISTRY_USER }}
password: ${{ secrets.REGISTRY_PASSWORD }} password: ${{ secrets.REGISTRY_PASSWORD }}
extra-args: |
--disable-content-trust
- name: Echo outputs - name: Echo outputs
run: | run: |

View file

@ -68,7 +68,16 @@ Refer to the [`podman push`](http://docs.podman.io/en/latest/markdown/podman-man
<td>digestfile</td> <td>digestfile</td>
<td>No</td> <td>No</td>
<td>After copying the image, write the digest of the resulting image to the file. By default, the filename will be determined from the image and tag. <td>After copying the image, write the digest of the resulting image to the file. By default, the filename will be determined from the image and tag.
The contents of this file are the <code>digest</code> output. The contents of this file are the <code>digest</code> output.</td>
</tr>
<tr>
<td>extra-args</td>
<td>No</td>
<td>Extra args to be passed to podman push.
Separate arguments by newline. Do not use quotes.</td>
</tr>
</table> </table>
## Action Outputs ## Action Outputs

View file

@ -31,6 +31,11 @@ inputs:
By default, the filename will be determined from the image and tag. By default, the filename will be determined from the image and tag.
The contents of this file are the digest output. The contents of this file are the digest output.
required: false required: false
extra-args:
description: |
Extra args to be passed to podman push.
Separate arguments by newline. Do not use quotes - @actions/exec will do the quoting for you.
required: false
outputs: outputs:
digest: digest:

2
dist/index.js vendored

File diff suppressed because one or more lines are too long

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View file

@ -3,6 +3,7 @@ import * as exec from "@actions/exec";
import * as io from "@actions/io"; import * as io from "@actions/io";
import * as fs from "fs"; import * as fs from "fs";
import * as path from "path"; import * as path from "path";
import { splitByNewline } from "./util";
interface ExecResult { interface ExecResult {
exitCode: number; exitCode: number;
@ -44,6 +45,15 @@ async function run(): Promise<void> {
const tlsVerify = core.getInput("tls-verify"); const tlsVerify = core.getInput("tls-verify");
const digestFileInput = core.getInput("digestfile"); const digestFileInput = core.getInput("digestfile");
const inputExtraArgsStr = core.getInput("extra-args");
let podmanExtraArgs: string[] = [];
if (inputExtraArgsStr) {
// transform the array of lines into an array of arguments
// by splitting over lines, then over spaces, then trimming.
const lines = splitByNewline(inputExtraArgsStr);
podmanExtraArgs = lines.flatMap((line) => line.split(" ")).map((arg) => arg.trim());
}
imageToPush = `${imageInput}`; imageToPush = `${imageInput}`;
const registryPathList: string[] = []; const registryPathList: string[] = [];
@ -159,6 +169,10 @@ async function run(): Promise<void> {
registryPath, registryPath,
]; ];
if (podmanExtraArgs.length > 0) {
args.push(...podmanExtraArgs);
}
// check if tls-verify is not set to null // check if tls-verify is not set to null
if (tlsVerify) { if (tlsVerify) {
args.push(`--tls-verify=${tlsVerify}`); args.push(`--tls-verify=${tlsVerify}`);

8
src/util.ts Normal file
View file

@ -0,0 +1,8 @@
/***************************************************************************************************
* Copyright (c) Red Hat, Inc. All rights reserved.
* Licensed under the MIT License. See LICENSE file in the project root for license information.
**************************************************************************************************/
export function splitByNewline(s: string): string[] {
return s.split(/\r?\n/);
}