This commit is contained in:
ClementTsang
2022-06-02 01:00:08 -04:00
parent ec98bf9ab1
commit cefca971df
4 changed files with 84 additions and 1 deletions

33
.github/workflows/test.yml vendored Normal file
View File

@@ -0,0 +1,33 @@
# A simple test to test the functionality the action.
name: Test
on:
pull_request:
workflow_dispatch:
push:
branches: [master]
jobs:
test-always-true:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Run
uses: ./
with:
base-image: docker://rust:slim-buster
derived-image: docker://rust:slim-buster
test-always-false:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Run
uses: ./
with:
base-image: docker://ghcr.io/clementtsang/cargo-deb-arm
derived-image: docker://rust:slim-buster

View File

@@ -1,5 +1,26 @@
# docker-check-base-image-diff
A Github Action that checks for Docker base image updates. Leverages skopeo and jq.
A Github Action that checks whether a derived image does not consist of a base image. Leverages
[`skopeo`](https://github.com/containers/skopeo) and [`jq`](https://stedolan.github.io/jq/).
Based on [lucacome's docker-image-update-checker](https://github.com/lucacome/docker-image-update-checker).
## Usage
Note that this action _assumes_ that `skopeo` is installed; this appears to be true for GitHub's Ubuntu runners.
### Inputs
#### `base-image`
A required argument, this represents the "base" image you want to check against.
As this is based on `skopeo`, it expects a string representing a container, and following a certain format
(e.g. `docker://rust:slim-buster`). For more information, see [the `skopeo` README](https://github.com/containers/skopeo#skopeo-).
### Outputs
A required argument, this represents the "derived" image you want to check.
As this is based on `skopeo`, it expects a string representing a container, and following a certain format
(e.g. `docker://rust:slim-buster`). For more information, see [the `skopeo` README](https://github.com/containers/skopeo#skopeo-).

23
action.yml Normal file
View File

@@ -0,0 +1,23 @@
name: "Docker Check Base Image Diff"
description: "A Github Action that checks whether a derived image does not consist of a base image."
author: Clement Tsang <ClementTsang>
inputs:
base-image:
description: "Base Docker image - follows skopeo format (e.g. docker://rust:slim-buster)"
required: true
derived-image:
description: "Derived Docker image - follows skopeo format (e.g. docker://rust:slim-buster)"
required: true
outputs:
differs:
description: "True or false"
value: ${{ steps.check.outputs.result }}
runs:
using: "composite"
steps:
- id: check
shell: bash
run: |
result=$(${{ github.action_path }}/check.sh ${{ inputs.base-image }} ${{ inputs.derived-image }})
echo "::set-output name=result::${result}"

6
check.sh Executable file
View File

@@ -0,0 +1,6 @@
#!/bin/bash
BASE_LAYERS="$(skopeo inspect $1 | jq '.Layers')"
DERIVED_LAYERS="$(skopeo inspect $2 | jq '.Layers')"
jq '.base - .derived | .!=[]' <<< "{\"base\": $BASE_LAYERS, \"derived\": $DERIVED_LAYERS}"