Skip to content

setup(repo): initial commit #2

setup(repo): initial commit

setup(repo): initial commit #2

name: "New changes validation"
on:
pull_request: # yamllint disable-line rule:empty-values
permissions:
contents: "read"
packages: "read"
env:
REGISTRY: "ghcr.io"
IMAGE_NAME: "articola-tools/dockerfile-linter"
jobs:
validate-dockerfile-linter-image:
runs-on: "ubuntu-latest"
# NOTE: building and running Docker image of Dockerfile linter take around 5 minutes.
# If this job takes more than 15 minutes, it means that something is wrong.
timeout-minutes: 15
steps:
- name: "Checkout ${{ github.event.repository.name }}"
uses: "actions/checkout@v4"
- name: "Set up Docker Buildx"
uses: "docker/setup-buildx-action@v3"
- name: "Login to Docker registry"
uses: "docker/login-action@v3"
with:
registry: "${{ env.REGISTRY }}"
username: "${{ github.actor }}"
password: "${{ secrets.GITHUB_TOKEN }}"
- name: "Build Dockerfile linter Docker image"
uses: "docker/build-push-action@v6"
with:
push: false
load: true
# NOTE: using another name to don't allow docker to download image from the internet in the next step.
tags: "local/dockerfile-linter-pr:latest"
cache-from: "type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest"
cache-to: "type=inline"
- name: "Run local Dockerfile linter"
run: "docker run --rm -v ${{ github.workspace }}:/linter_workdir/repo local/dockerfile-linter-pr:latest"
- name: "Run Trivy vulnerability scanner"
uses: "aquasecurity/[email protected]"
env:
# NOTE: this is needed because sometimes GHCR hits the rate limit, and AWS will be used instead.
TRIVY_DB_REPOSITORY: "ghcr.io/aquasecurity/trivy-db,public.ecr.aws/aquasecurity/trivy-db"
with:
image-ref: "local/dockerfile-linter-pr:latest"
format: "table"
exit-code: "1"
ignore-unfixed: true
vuln-type: "os,library"
severity: "CRITICAL,HIGH,MEDIUM,LOW"
scanners: "vuln,secret,misconfig"