Skip to content

No sarif upload

No sarif upload #31

name: Container CI
on:
workflow_dispatch:
push:
branches: [ "main" ]
# Publish semver tags as releases.
tags: [ 'v*.*.*' ]
pull_request:
branches: [ "main" ]
env:
IMAGES: |
docker.io/pgschk/alpine-toolkit
ghcr.io/pgschk/alpine-toolkit
jobs:
build:
strategy:
fail-fast: false
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
# This is used to complete the identity challenge
# with sigstore/fulcio when running outside of PRs.
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Docker Metadata
id: docker-metadata
uses: docker/metadata-action@v4
with:
images: |
${{ env.IMAGES }}
tags: |
type=edge
type=sha
type=ref,event=branch
type=ref,event=pr
type=schedule
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}},enable=${{ !startsWith(github.ref, 'refs/tags/v0.') }}
- name: Docker Metadata Extended image
id: docker-metadata-extended
uses: docker/metadata-action@v4
with:
images: |
${{ env.IMAGES }}
tags: |
type=edge
type=sha
type=ref,event=branch
type=ref,event=pr
type=schedule
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}},enable=${{ !startsWith(github.ref, 'refs/tags/v0.') }}
flavor: |
latest=auto
suffix=-extended,onlatest=true
- name: Read extended packages file
id: get-extended-packages
run: echo "extended-packages=$(tr '\n' ' ' < EXTENDED_PACKAGES)" >> $GITHUB_OUTPUT
# Build image using Buildah action
- name: Build Image
id: build_image
uses: redhat-actions/buildah-build@v2
with:
layers: false
tags: ${{ steps.docker-metadata.outputs.tags }}
labels: ${{ steps.docker-metadata.outputs.labels }}
containerfiles: |
./Dockerfile
extra-args: |
--pull
# Build enhanced image using Buildah action
- name: Build extended Image
id: build_image_extended
uses: redhat-actions/buildah-build@v2
with:
layers: false
tags: ${{ steps.docker-metadata-extended.outputs.tags }}
labels: ${{ steps.docker-metadata-extended.outputs.labels }}
containerfiles: |
./Dockerfile
extra-args: |
--pull
build-args: |
EXTRA_PACKAGES=${{ steps.get-extended-packages.outputs.extended-packages }}
- name: Echo Outputs
run: |
echo "Image: ${{ steps.build_image.outputs.image }}"
echo "Tags: ${{ steps.build_image.outputs.tags }}"
echo "Tagged Image: ${{ steps.build_image.outputs.image-with-tag }}"
echo "Extended Image: ${{ steps.build_image_extended.outputs.image }}"
echo "Tags: ${{ steps.build_image_extended.outputs.tags }}"
echo "Tagged Image: ${{ steps.build_image_extended.outputs.image-with-tag }}"
# Check if image is build
- name: Check images created
run: buildah images | grep '${{ env.IMAGES }}'
- name: Check image metadata
run: |
set -x
buildah inspect ${{ steps.build_image.outputs.image-with-tag }} | jq '.OCIv1.config.Labels."org.opencontainers.image.title"'
buildah inspect ${{ steps.build_image.outputs.image-with-tag }} | jq '.OCIv1.config.Labels."org.opencontainers.image.description"'
buildah inspect ${{ steps.build_image.outputs.image-with-tag }} | jq '.Docker.config.Labels."org.opencontainers.image.title"'
buildah inspect ${{ steps.build_image.outputs.image-with-tag }} | jq '.Docker.config.Labels."org.opencontainers.image.description"'
buildah inspect ${{ steps.build_image_extended.outputs.image-with-tag }} | jq '.OCIv1.config.Labels."org.opencontainers.image.title"'
buildah inspect ${{ steps.build_image_extended.outputs.image-with-tag }} | jq '.OCIv1.config.Labels."org.opencontainers.image.description"'
buildah inspect ${{ steps.build_image_extended.outputs.image-with-tag }} | jq '.Docker.config.Labels."org.opencontainers.image.title"'
buildah inspect ${{ steps.build_image_extended.outputs.image-with-tag }} | jq '.Docker.config.Labels."org.opencontainers.image.description"'
- name: Export image to docker
run: |
buildah push ${{ steps.build_image.outputs.image-with-tag }} docker-daemon:${{ steps.build_image.outputs.image-with-tag }}
buildah push ${{ steps.build_image_extended.outputs.image-with-tag }} docker-daemon:${{ steps.build_image_extended.outputs.image-with-tag }}
- name: Podman log in to docker.io
uses: redhat-actions/podman-login@v1
with:
registry: docker.io
username: ${{ github.actor }}
password: ${{ secrets.DOCKER_LOGIN }}
- name: Podman log in to ghcr.io
uses: redhat-actions/podman-login@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Docker log in to docker.io
uses: docker/login-action@v3
with:
registry: docker.io
username: ${{ github.actor }}
password: ${{ secrets.DOCKER_LOGIN }}
- name: Docker log in to ghcr.io
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Push Images
id: push
if: ${{ github.event_name != 'pull_request' }}
uses: redhat-actions/push-to-registry@v2
with:
image: ${{ steps.build_image.outputs.image }}
tags: ${{ steps.build_image.outputs.tags }}
- name: Push extended Images
id: push-extended
if: ${{ github.event_name != 'pull_request' }}
uses: redhat-actions/push-to-registry@v2
with:
image: ${{ steps.build_image_extended.outputs.image }}
tags: ${{ steps.build_image_extended.outputs.tags }}
- name: Print image url
if: ${{ github.event_name != 'pull_request' }}
run: |
echo "Image pushed to ${{ steps.push.outputs.registry-paths }}"
echo "Image pushed to ${{ steps.push-extended.outputs.registry-paths }}"
- uses: sigstore/cosign-installer@v3.3.0
if: ${{ github.event_name != 'pull_request' }}
- name: Sign container image (keyless)
if: ${{ github.event_name != 'pull_request' }}
run: |
cosign sign -y ${{ steps.build_image.outputs.image-with-tag }}@${{ steps.push.outputs.digest }}
env:
COSIGN_EXPERIMENTAL: 1
- name: Sign extended container image (keyless)
if: ${{ github.event_name != 'pull_request' }}
run: |
cosign sign -y ${{ steps.build_image_extended.outputs.image-with-tag }}@${{ steps.push-extended.outputs.digest }}
env:
COSIGN_EXPERIMENTAL: 1