Update Action to Node 16 and handle set-output deprecation (#109)

* update: action runtime to node16

* chore: pin dependencies

* fix: build error with new TS version

* add: editorconfig

* chore: update all actions used in workflows

* update: readme action sample versions

* chore: bump developer dependencies

* chore: bump developer dependencies

* fix: eslint issues

* fix: broken buildah copy logic

* chore: address review feedback version bump
This commit is contained in:
K3rnelPan1c 2022-12-23 15:30:57 +00:00 committed by GitHub
parent 4b8d36793b
commit 5177407148
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
20 changed files with 3587 additions and 4880 deletions

15
.editorconfig Normal file
View file

@ -0,0 +1,15 @@
root = true
[*]
charset = utf-8
tab_width = 4
indent_size = 4
end_of_line = lf
indent_style = space
max_line_length = 120
insert_final_newline = true
trim_trailing_whitespace = true
[*.{yml,yaml}]
tab_width = 2
indent_size = 2

View file

@ -26,7 +26,7 @@ jobs:
# Checkout buildah action github repository
- name: Checkout Buildah action
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
path: "buildah-build"

View file

@ -9,10 +9,10 @@ jobs:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- run: npm ci
- run: npm run lint
check-dist:
name: Check Distribution
runs-on: ubuntu-20.04
@ -20,7 +20,7 @@ jobs:
BUNDLE_FILE: "dist/index.js"
BUNDLE_COMMAND: "npm run bundle"
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Install
run: npm ci
@ -30,18 +30,18 @@ jobs:
with:
bundle_file: ${{ env.BUNDLE_FILE }}
bundle_command: ${{ env.BUNDLE_COMMAND }}
check-inputs-outputs:
name: Check Input and Output enums
runs-on: ubuntu-20.04
env:
IO_FILE: ./src/generated/inputs-outputs.ts
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Install dependencies
run: npm ci
- name: Verify Input and Output enums
uses: redhat-actions/common/action-io-generator@v1
with:

View file

@ -25,7 +25,7 @@ jobs:
# Checkout buildah action github repository
- name: Checkout Buildah action
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
path: "buildah-build"

View file

@ -1,7 +1,7 @@
# This workflow will perform a test whenever there
# is some change in code done to ensure that the changes
# are not buggy and we are getting the desired output.
name: Build with docker/metadata-action@v2
name: Build with docker/metadata-action
on:
push:
pull_request:
@ -25,11 +25,11 @@ jobs:
# Checkout buildah action github repository
- name: Checkout Buildah action
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Docker Metadata
id: docker-metadata
uses: docker/metadata-action@v3
uses: docker/metadata-action@v4
with:
images: |
${{ env.IMAGE_NAME }}
@ -103,11 +103,11 @@ jobs:
# Checkout buildah action github repository
- name: Checkout Buildah action
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Docker Metadata
id: docker-metadata
uses: docker/metadata-action@v3
uses: docker/metadata-action@v4
with:
images: |
${{ env.IMAGE_NAME }}
@ -128,31 +128,18 @@ jobs:
# Checkout spring-petclinic github repository
- name: Checkout spring-petclinic project
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
repository: "spring-projects/spring-petclinic"
path: ${{ env.PROJECT_DIR }}
# If none of these files has changed, we assume that the contents of
# .m2/repository can be fetched from the cache.
- name: Hash Maven files
working-directory: ${{ env.PROJECT_DIR }}
run: |
echo "MVN_HASH=${{ hashFiles('**/pom.xml', '.mvn/**/*', 'mvnw*') }}" >> $GITHUB_ENV
# Download the m2 repository from the cache to speed up the build.
- name: Check for Maven cache
id: check-mvn-cache
uses: actions/cache@v3
with:
path: ${{ env.MVN_REPO_DIR }}
key: ${{ env.MVN_HASH }}
# Setup java.
- name: Setup Java
uses: actions/setup-java@v1
uses: actions/setup-java@v3
with:
java-version: 11
distribution: 'temurin'
java-version: '17'
cache: 'maven'
# Run maven to build the project
- name: Maven
@ -160,14 +147,6 @@ jobs:
run: |
mvn package -ntp -B
# If there was no cache hit above, store the output into the cache now.
- name: Save Maven repo into cache
if: ${{ steps.check-mvn-cache.outputs.cache-hit }} != 'true'
uses: actions/cache@v3
with:
path: ${{ env.MVN_REPO_DIR }}
key: ${{ env.MVN_HASH }}
# Build image using Buildah action
- name: Build Image
id: build_image

View file

@ -14,7 +14,7 @@ jobs:
name: Check links in markdown
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: gaurav-nelson/github-action-markdown-link-check@v1
with:
use-verbose-mode: true

View file

@ -26,7 +26,7 @@ jobs:
# Checkout buildah action github repository
- name: Checkout Buildah action
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
path: "buildah-build"
@ -94,7 +94,7 @@ jobs:
# Checkout buildah action github repository
- name: Checkout Buildah action
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
path: "buildah-build"
@ -112,7 +112,7 @@ jobs:
run: |
cat > Containerfile<<EOF
FROM docker.io/alpine:3.14
FROM docker.io/alpine:3.16
RUN echo "hello world"
@ -161,7 +161,7 @@ jobs:
# Checkout buildah action github repository
- name: Checkout Buildah action
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
path: "buildah-build"
@ -177,31 +177,18 @@ jobs:
# Checkout spring-petclinic github repository
- name: Checkout spring-petclinic project
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
repository: "spring-projects/spring-petclinic"
path: ${{ env.PROJECT_DIR }}
# If none of these files has changed, we assume that the contents of
# .m2/repository can be fetched from the cache.
- name: Hash Maven files
working-directory: ${{ env.PROJECT_DIR }}
run: |
echo "MVN_HASH=${{ hashFiles('**/pom.xml', '.mvn/**/*', 'mvnw*') }}" >> $GITHUB_ENV
# Download the m2 repository from the cache to speed up the build.
- name: Check for Maven cache
id: check-mvn-cache
uses: actions/cache@v3
with:
path: ${{ env.MVN_REPO_DIR }}
key: ${{ env.MVN_HASH }}
# Setup java.
- name: Setup Java
uses: actions/setup-java@v1
uses: actions/setup-java@v3
with:
java-version: 11
distribution: 'temurin'
java-version: '17'
cache: 'maven'
# Run maven to build the project
- name: Maven
@ -209,14 +196,6 @@ jobs:
run: |
mvn package -ntp -B
# If there was no cache hit above, store the output into the cache now.
- name: Save Maven repo into cache
if: ${{ steps.check-mvn-cache.outputs.cache-hit }} != 'true'
uses: actions/cache@v3
with:
path: ${{ env.MVN_REPO_DIR }}
key: ${{ env.MVN_HASH }}
- name: Build Image
id: build_image_multiarch
uses: ./buildah-build/

View file

@ -27,7 +27,7 @@ jobs:
# Checkout buildah action github repository
- name: Checkout Buildah action
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
path: "buildah-build"
@ -38,31 +38,18 @@ jobs:
# Checkout spring-petclinic github repository
- name: Checkout spring-petclinic project
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
repository: "spring-projects/spring-petclinic"
path: ${{ env.PROJECT_DIR }}
# If none of these files has changed, we assume that the contents of
# .m2/repository can be fetched from the cache.
- name: Hash Maven files
working-directory: ${{ env.PROJECT_DIR }}
run: |
echo "MVN_HASH=${{ hashFiles('**/pom.xml', '.mvn/**/*', 'mvnw*') }}" >> $GITHUB_ENV
# Download the m2 repository from the cache to speed up the build.
- name: Check for Maven cache
id: check-mvn-cache
uses: actions/cache@v3
with:
path: ${{ env.MVN_REPO_DIR }}
key: ${{ env.MVN_HASH }}
# Setup java.
- name: Setup Java
uses: actions/setup-java@v1
uses: actions/setup-java@v3
with:
java-version: 11
distribution: 'temurin'
java-version: '17'
cache: 'maven'
# Run maven to build the project
- name: Maven
@ -70,14 +57,6 @@ jobs:
run: |
mvn package -ntp -B
# If there was no cache hit above, store the output into the cache now.
- name: Save Maven repo into cache
if: ${{ steps.check-mvn-cache.outputs.cache-hit }} != 'true'
uses: actions/cache@v3
with:
path: ${{ env.MVN_REPO_DIR }}
key: ${{ env.MVN_HASH }}
# Build image using Buildah action
- name: Build Image
id: build_image

View file

@ -16,9 +16,10 @@ jobs:
- uses: actions/checkout@v2
- name: Setup Node
uses: actions/setup-node@v2
uses: actions/setup-node@v3
with:
node-version: '14'
node-version: '16'
cache: 'npm'
- name: Install CRDA
uses: redhat-actions/openshift-tools-installer@v1

3
.gitignore vendored
View file

@ -1,2 +1,3 @@
node_modules/
out/
out/
.idea/

View file

@ -126,7 +126,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Buildah Action
uses: redhat-actions/buildah-build@v2
@ -166,7 +166,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- run: mvn package

View file

@ -90,5 +90,5 @@ outputs:
image-with-tag:
description: 'Name of the image tagged with the first tag present'
runs:
using: 'node12'
using: 'node16'
main: 'dist/index.js'

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

File diff suppressed because one or more lines are too long

4257
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,8 +1,8 @@
{
"name": "buildah-build",
"version": "1.0.0",
"version": "2.0",
"engines": {
"node": "12"
"node": "16"
},
"description": "Action for building OCI-compatible images using buildah",
"repository": {
@ -21,21 +21,21 @@
"author": "Red Hat",
"license": "MIT",
"dependencies": {
"@actions/core": "^1.9.1",
"@actions/exec": "^1.0.4",
"@actions/io": "^1.0.2",
"ini": "^2.0.0"
"@actions/core": "1.10.0",
"@actions/exec": "1.1.1",
"@actions/io": "1.1.2",
"ini": "3.0.1"
},
"devDependencies": {
"@redhat-actions/action-io-generator": "^1.5.0",
"@redhat-actions/eslint-config": "^1.3.2",
"@redhat-actions/tsconfig": "^1.1.1",
"@types/ini": "^1.3.30",
"@types/node": "^12",
"@typescript-eslint/eslint-plugin": "^4.28.2",
"@typescript-eslint/parser": "^4.28.2",
"@vercel/ncc": "^0.25.1",
"eslint": "^7.30.0",
"typescript": "^4.3.5"
"@redhat-actions/action-io-generator": "1.5.0",
"@redhat-actions/eslint-config": "1.3.2",
"@redhat-actions/tsconfig": "1.2.0",
"@types/ini": "1.3.31",
"@types/node": "16.18.7",
"@typescript-eslint/eslint-plugin": "5.46.0",
"@typescript-eslint/parser": "5.46.0",
"@vercel/ncc": "0.34.0",
"eslint": "8.29.0",
"typescript": "4.9.4"
}
}

View file

@ -66,9 +66,17 @@ export class BuildahCli implements Buildah {
}
async buildUsingDocker(
image: string, context: string, containerFiles: string[], buildArgs: string[],
useOCI: boolean, labels: string[], layers: string,
extraArgs: string[], tlsVerify: boolean, arch?: string, platform?: string
image: string,
context: string,
containerFiles: string[],
buildArgs: string[],
useOCI: boolean,
labels: string[],
layers: string,
extraArgs: string[],
tlsVerify: boolean,
arch?: string,
platform?: string
): Promise<CommandResult> {
const args: string[] = [ "bud" ];
if (arch) {
@ -122,8 +130,9 @@ export class BuildahCli implements Buildah {
core.debug("copy");
core.debug(container);
for (const content of contentToCopy) {
const args: string[] = [ "copy", container, content ];
core.debug("content: " + contentToCopy.join(" "));
if (contentToCopy.length > 0) {
const args: string[] = [ "copy", container ].concat(contentToCopy);
if (contentPath) {
args.push(contentPath);
}

View file

@ -87,8 +87,17 @@ export async function run(): Promise<void> {
const builtImage = [];
if (containerFiles.length !== 0) {
builtImage.push(...await doBuildUsingContainerFiles(cli, newImage, workspace, containerFiles, useOCI,
archs, platforms, labelsList, buildahExtraArgs));
builtImage.push(...await doBuildUsingContainerFiles(
cli,
newImage,
workspace,
containerFiles,
useOCI,
archs,
platforms,
labelsList,
buildahExtraArgs
));
}
else {
if (platforms.length > 0) {
@ -133,8 +142,15 @@ export async function run(): Promise<void> {
}
async function doBuildUsingContainerFiles(
cli: BuildahCli, newImage: string, workspace: string, containerFiles: string[], useOCI: boolean, archs: string[],
platforms: string[], labels: string[], extraArgs: string[]
cli: BuildahCli,
newImage: string,
workspace: string,
containerFiles: string[],
useOCI: boolean,
archs: string[],
platforms: string[],
labels: string[],
extraArgs: string[]
): Promise<string[]> {
if (containerFiles.length === 1) {
core.info(`Performing build from Containerfile`);
@ -161,8 +177,16 @@ async function doBuildUsingContainerFiles(
tagSuffix = `-${removeIllegalCharacters(arch)}`;
}
await cli.buildUsingDocker(
`${newImage}${tagSuffix}`, context, containerFileAbsPaths, buildArgs,
useOCI, labels, layers, extraArgs, tlsVerify, arch, undefined
`${newImage}${tagSuffix}`,
context,
containerFileAbsPaths,
buildArgs,
useOCI,
labels,
layers,
extraArgs,
tlsVerify,
arch
);
builtImage.push(`${newImage}${tagSuffix}`);
}
@ -173,8 +197,17 @@ async function doBuildUsingContainerFiles(
tagSuffix = `-${removeIllegalCharacters(platform)}`;
}
await cli.buildUsingDocker(
`${newImage}${tagSuffix}`, context, containerFileAbsPaths, buildArgs,
useOCI, labels, layers, extraArgs, tlsVerify, undefined, platform
`${newImage}${tagSuffix}`,
context,
containerFileAbsPaths,
buildArgs,
useOCI,
labels,
layers,
extraArgs,
tlsVerify,
undefined,
platform
);
builtImage.push(`${newImage}${tagSuffix}`);
}
@ -182,15 +215,31 @@ async function doBuildUsingContainerFiles(
else if (archs.length === 1 || platforms.length === 1) {
await cli.buildUsingDocker(
newImage, context, containerFileAbsPaths, buildArgs,
useOCI, labels, layers, extraArgs, tlsVerify, archs[0], platforms[0]
newImage,
context,
containerFileAbsPaths,
buildArgs,
useOCI,
labels,
layers,
extraArgs,
tlsVerify,
archs[0],
platforms[0]
);
builtImage.push(newImage);
}
else {
await cli.buildUsingDocker(
newImage, context, containerFileAbsPaths, buildArgs,
useOCI, labels, layers, extraArgs, tlsVerify
newImage,
context,
containerFileAbsPaths,
buildArgs,
useOCI,
labels,
layers,
extraArgs,
tlsVerify
);
builtImage.push(newImage);
}
@ -199,7 +248,12 @@ async function doBuildUsingContainerFiles(
}
async function doBuildFromScratch(
cli: BuildahCli, newImage: string, useOCI: boolean, archs: string[], labels: string[], extraArgs: string[]
cli: BuildahCli,
newImage: string,
useOCI: boolean,
archs: string[],
labels: string[],
extraArgs: string[]
): Promise<string[]> {
core.info(`Performing build from scratch`);

View file

@ -55,7 +55,9 @@ export async function findFuseOverlayfsPath(): Promise<string | undefined> {
fuseOverlayfsPath = await io.which("fuse-overlayfs");
}
catch (err) {
core.debug(err);
if (err instanceof Error) {
core.debug(err.message);
}
}
return fuseOverlayfsPath;