mirror of
https://github.com/JasonN3/build-container-installer.git
synced 2025-12-25 19:07:54 +01:00
135 lines
5.1 KiB
YAML
135 lines
5.1 KiB
YAML
name: Build Container Installer
|
|
description: Generates an ISO for installing an OSTree stored in a container image
|
|
|
|
inputs:
|
|
arch:
|
|
description: Architecture for image to build
|
|
required: true
|
|
default: x86_64
|
|
image_name:
|
|
description: Name of the source container image
|
|
required: true
|
|
default: base
|
|
image_repo:
|
|
description: Repository containing the source container image
|
|
required: true
|
|
default: quay.io/fedora-ostree-desktops
|
|
variant:
|
|
description: "Source container variant. Available options can be found by running `dnf provides system-release`. Variant will be the third item in the package name. Example: `fedora-release-kinoite-39-34.noarch` will be kinonite"
|
|
required: true
|
|
default: Server
|
|
version:
|
|
description: Fedora version of installer to build
|
|
required: true
|
|
default: "39"
|
|
image_tag:
|
|
description: Tag of the source container image. Defaults to the installer version
|
|
required: false
|
|
web_ui:
|
|
description: Enable Anaconda WebUI
|
|
required: false
|
|
default: "false"
|
|
enrollment_password:
|
|
description: Used for supporting secure boot (requires SECURE_BOOT_KEY_URL to be defined)
|
|
required: false
|
|
default: "container-installer"
|
|
secure_boot_key_url:
|
|
description: Secure boot key that is installed from URL location
|
|
required: false
|
|
action_version:
|
|
description: Version of the action container to run
|
|
deprecationMessage: No longer used. github.action_ref replaces the need for this. Will be removed in a future version.
|
|
required: false
|
|
enable_cache_dnf:
|
|
description: Whether to enable caching for dnf
|
|
required: false
|
|
default: "true"
|
|
dnf_cache_key:
|
|
description: Overrides the dnf cache key
|
|
required: false
|
|
enable_cache_skopeo:
|
|
description: Whether to enable caching for skopeo
|
|
required: false
|
|
default: "true"
|
|
skopeo_cache_key:
|
|
description: Overrides the skopeo cache key
|
|
required: false
|
|
additional_templates:
|
|
description: Space delimetered list of additional Lorax templates to include
|
|
required: false
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Make cache directory
|
|
shell: bash
|
|
run: |
|
|
sudo mkdir /cache
|
|
sudo chmod 777 /cache
|
|
|
|
- name: Load dnf cache
|
|
id: load_dnf_cache
|
|
env:
|
|
dnf_cache_key: dnf-${{ inputs.version }}
|
|
if: inputs.enable_cache_dnf == 'true'
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
path: /cache/dnf
|
|
key: ${{ inputs.dnf_cache_key || env.dnf_cache_key }}
|
|
|
|
- name: Load skopeo cache
|
|
id: load_skopeo_cache
|
|
env:
|
|
skopeo_cache_key: skopeo-${{ inputs.image_name }}-${{ inputs.version || inputs.image_tag }}
|
|
if: inputs.enable_cache_skopeo == 'true'
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
path: /cache/skopeo
|
|
key: ${{ inputs.skopeo_cache_key || env.skopeo_cache_key }}
|
|
|
|
- name: Ensure cache directories exist
|
|
shell: bash
|
|
run: |
|
|
mkdir /cache/dnf || true
|
|
mkdir /cache/dnf_new || true
|
|
mkdir /cache/skopeo || true
|
|
|
|
- name: Run docker image
|
|
shell: bash
|
|
run: |
|
|
# Check if running inside of the action repo
|
|
if [[ -z "${{ github.action_ref }}" ]]; then if [[ "${{ github.ref_name }}" =~ (.*)/merge ]]; then tag=pr-${BASH_REMATCH[1]}; else tag=${{ github.ref_name }}; fi; fi
|
|
if [[ -z "${tag}" ]]; then tag=${{ github.action_ref }}; fi
|
|
if [[ "${{ inputs.enable_cache_dnf }}" == "true" ]]; then cache="${cache} -v /cache/dnf:/cache/dnf"; fi
|
|
if [[ "${{ inputs.enable_cache_skopeo }}" == "true" ]]; then cache="${cache} -v /cache/skopeo:/cache/skopeo"; fi
|
|
if [[ "${{ steps.load_dnf_cache.outputs.cache-hit}}" == "false" ]]; then cache="${cache} -v /cache/dnf_new:/cache/dnf_new"; fi
|
|
docker run --privileged --volume ${{ github.workspace }}:/github/workspace/ ${cache} ghcr.io/jasonn3/build-container-installer:${tag} \
|
|
ARCH=${{ inputs.arch }} \
|
|
IMAGE_NAME=${{ inputs.image_name }} \
|
|
IMAGE_REPO=${{ inputs.image_repo }} \
|
|
VARIANT=${{ inputs.variant }} \
|
|
VERSION=${{ inputs.version }} \
|
|
IMAGE_TAG=${{ inputs.image_tag || inputs.version }} \
|
|
WEB_UI=${{ inputs.web_ui }} \
|
|
ENROLLMENT_PASSWORD=${{ inputs.enrollment_password }} \
|
|
SECURE_BOOT_KEY_URL=${{ inputs.secure_boot_key_url }} \
|
|
"ADDITIONAL_TEMPLATES=${{ inputs.additional_templates }}" \
|
|
DNF_CACHE=/cache/dnf
|
|
|
|
- name: Save dnf cache
|
|
env:
|
|
dnf_cache_key: dnf-${{ inputs.version }}
|
|
if: inputs.enable_cache_dnf == 'true' && steps.load_dnf_cache.outputs.cache-hit == 'false'
|
|
uses: actions/cache/save@v4
|
|
with:
|
|
path: /cache/dnf_new
|
|
key: ${{ inputs.dnf_cache_key || env.dnf_cache_key }}
|
|
|
|
- name: Save skopeo cache
|
|
env:
|
|
skopeo_cache_key: skopeo-${{ inputs.image_name }}-${{ inputs.version || inputs.image_tag }}
|
|
if: inputs.enable_cache_skopeo == 'true' && steps.load_skopeo_cache.outputs.cache-hit == 'false'
|
|
uses: actions/cache/save@v4
|
|
with:
|
|
path: /cache/skopeo
|
|
key: ${{ inputs.skopeo_cache_key || env.skopeo_cache_key }}
|