diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 640f37d..7419361 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -15,7 +15,7 @@ env: IMAGE_REPO: 'quay.io/fedora-ostree-desktops' IMAGE_TAG: '39' VARIANT: 'Server' - FLATPAK_REMOTE_REFS: app/org.videolan.VLC/x86_64/stable runtime/org.kde.Platform/x86_64/5.15-23.08 + FLATPAK_REMOTE_REFS_DIR: flatpak_refs SECURE_BOOT_KEY_URL: 'https://github.com/ublue-os/akmods/raw/main/certs/public_key.der' ENROLLMENT_PASSWORD: 'container-installer' @@ -175,7 +175,16 @@ jobs: - name: Run ISO checks run: | mv ${{ needs['build-and-push-iso']['outputs'][format('iso_name-{0}', matrix.version)] }} deploy.iso - make test-iso VERSION=${{ matrix.version }} FLATPAK_REMOTE_REFS="${{ env.FLATPAK_REMOTE_REFS}}" + make test-iso \ + ARCH=${{ env.ARCH}} \ + IMAGE_NAME=${{ env.IMAGE_NAME}} \ + IMAGE_REPO=${{ env.IMAGE_REPO}} \ + IMAGE_TAG=${{ env.IMAGE_TAG }} \ + VERSION=${{ matrix.version }} \ + VARIANT=${{ env.VARIANT }} \ + FLATPAK_REMOTE_REFS_DIR=${{ env.FLATPAK_REMOTE_REFS_DIR }} \ + SECURE_BOOT_KEY_URL=${{ env.SECURE_BOOT_KEY_URL }} \ + ENROLLMENT_PASSWORD=${{ env.ENROLLMENT_PASSWORD }} - name: Add Kickstart and Grub options to ISO run: | diff --git a/Makefile b/Makefile index c4cb913..c222730 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,8 @@ WEB_UI = false # Flatpak FLATPAK_REMOTE_NAME = flathub FLATPAK_REMOTE_URL = https://flathub.org/repo/flathub.flatpakrepo -FLATPAK_REMOTE_REFS = +FLATPAK_REMOTE_REFS = +FLATPAK_REMOTE_REFS_DIR = # Secure boot ENROLLMENT_PASSWORD = SECURE_BOOT_KEY_URL = @@ -60,6 +61,11 @@ else _PLATFORM_ID = platform:f$(VERSION) endif +ifneq ($(FLATPAK_REMOTE_REFS_DIR),) +COLLECTED_REFS = $(foreach file,$(shell ls $(FLATPAK_REMOTE_REFS_DIR)/*),$(shell cat $(file))) +FLATPAK_REMOTE_REFS += $(sort $(COLLECTED_REFS)) +endif + ifneq ($(FLATPAK_REMOTE_REFS),) _FLATPAK_REPO_GPG = $(shell curl -L $(FLATPAK_REMOTE_URL) | grep -i '^GPGKey=' | cut -d= -f2) _FLATPAK_REPO_URL = $(shell curl -L $(FLATPAK_REMOTE_URL) | grep -i '^URL=' | cut -d= -f2) @@ -166,6 +172,8 @@ repos/%.repo: /etc/yum.repos.d/%.repo # Don't do anything for custom repos %.repo: +flatpak_list: + # Step 3: Build boot.iso using Lorax boot.iso: lorax_repo $(filter lorax_templates/%,$(_LORAX_TEMPLATES)) $(_REPO_FILES) rm -Rf $(_BASE_DIR)/results || true @@ -239,12 +247,23 @@ test-iso: sudo mount -o loop deploy.iso /mnt/iso sudo mount -t squashfs -o loop /mnt/iso/images/install.img /mnt/install - chmod +x $(foreach test,$(_TESTS),tests/iso/$(test)) + # install tests + chmod +x $(foreach test,$(filter install_%,$(_TESTS)),tests/iso/$(test)) for test in $(_TESTS); \ do \ $(foreach var,$(_VARS),$(var)=$($(var))) ./tests/iso/$${test}; \ done + # flapak tests + if [ -n "$(FLATPAK_REMOTE_REFS)" ]; \ + then \ + chmod +x $(foreach test,$(filter flatpak_%,$(_TESTS)),tests/iso/$(test)); \ + for test in $(_TESTS); \ + do \ + $(foreach var,$(_VARS),$(var)=$($(var))) ./tests/iso/$${test}; \ + done; \ + fi + # Cleanup sudo umount /mnt/install sudo umount /mnt/iso @@ -253,5 +272,5 @@ test-vm: $(eval _TESTS = $(filter-out README.md,$(shell ls tests/vm))) chmod +x $(foreach test,$(_TESTS),tests/vm/$(test)) for test in $(_TESTS); do ./tests/vm/$${test} deploy.iso; done - -.PHONY: clean install-deps test test-iso test-vm lorax_repo + +.PHONY: clean install-deps test test-iso test-vm lorax_repo flatpak_list diff --git a/README.md b/README.md index 54be4c1..f6c0280 100644 --- a/README.md +++ b/README.md @@ -38,20 +38,24 @@ See [Customizing](#customizing) for information about customizing the ISO that g The following variables can be used to customize the created ISO. ### Inputs -| Variable | Description | Default Value | -| -------------------- | ---------------------------------------------------------------------------- | ------------------------------ | -| additional_templates | Space delimited list of additional Lorax templates to include | \[empty\] | -| arch | Architecture for image to build | x86_64 | -| enrollment_password | Used for supporting secure boot (requires SECURE_BOOT_KEY_URL to be defined) | container-installer | -| extra_boot_params | Extra params used by grub to boot the anaconda installer | \[empty\] | -| image_name | Name of the source container image | base | -| image_repo | Repository containing the source container image | quay.io/fedora-ostree-desktops | -| image_tag | Tag of the source container image | *VERSION* | -| iso_name | Name of the ISO you wish to output when completed | build/deploy.iso | -| secure_boot_key_url | Secure boot key that is installed from URL location\*\* | \[empty\] | -| variant | Source container variant\* | Server | -| version | Fedora version of installer to build | 39 | -| web_ui | Enable Anaconda WebUI (experimental) | false | +| Variable | Description | Default Value | +| ---------------------- | ---------------------------------------------------------------------------- | -------------------------------------------- | +| additional_templates | Space delimited list of additional Lorax templates to include | \[empty\] | +| arch | Architecture for image to build | x86_64 | +| enrollment_password | Used for supporting secure boot (requires SECURE_BOOT_KEY_URL to be defined) | container-installer | +| extra_boot_params | Extra params used by grub to boot the anaconda installer | \[empty\] | +| flatpak_remote_name | Name of the Flatpak repo on the destination OS | flathub | +| flatpak_remote_refs | Space separated list of flatpak refs to install | \[empty\] | +| flatpak_remote_refs_dir | Directory that contains files that list the flatpak refs to install | \[empty\] | +| flatpak_remote_url | URL of the flatpakrepo file | https://flathub.org/repo/flathub.flatpakrepo | +| image_name | Name of the source container image | base | +| image_repo | Repository containing the source container image | quay.io/fedora-ostree-desktops | +| image_tag | Tag of the source container image | *VERSION* | +| iso_name | Name of the ISO you wish to output when completed | build/deploy.iso | +| secure_boot_key_url | Secure boot key that is installed from URL location\*\* | \[empty\] | +| variant | Source container variant\* | Server | +| version | Fedora version of installer to build | 39 | +| web_ui | Enable Anaconda WebUI (experimental) | false | \*Available options for VARIANT 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 kinoite diff --git a/action.yml b/action.yml index a31dd46..f2eb50f 100644 --- a/action.yml +++ b/action.yml @@ -39,6 +39,10 @@ inputs: description: Space delimited list of refs to the flatpak packages to install required: false default: "" + flatpak_remote_refs_dir: + description: Directory that contains files that list the flatpak refs to install + required: false + default: "" flatpak_remote_url: description: The URL of the Flatpak remote flatpakrepo file required: false @@ -152,19 +156,20 @@ runs: fi docker run --privileged --volume ${{ github.workspace }}:/github/workspace/ ${cache} ghcr.io/jasonn3/build-container-installer:${tag} \ ADDITIONAL_TEMPLATES="${{ inputs.additional_templates }}" \ - ARCH=${{ inputs.arch }} \ - DNF_CACHE=/cache/dnf \ - ENROLLMENT_PASSWORD=${{ inputs.enrollment_password }} \ - FLATPAK_REMOTE_NAME=${{ inputs.flatpak_remote_name }} \ + ARCH="${{ inputs.arch }}" \ + DNF_CACHE="/cache/dnf" \ + ENROLLMENT_PASSWORD="${{ inputs.enrollment_password }}" \ + FLATPAK_REMOTE_NAME="${{ inputs.flatpak_remote_name }}" \ FLATPAK_REMOTE_REFS="${{ inputs.flatpak_remote_refs }}" \ - FLATPAK_REMOTE_URL=${{ inputs.flatpak_remote_url }} \ - IMAGE_NAME=${{ inputs.image_name }} \ - IMAGE_REPO=${{ inputs.image_repo }} \ - IMAGE_TAG=${{ inputs.image_tag || inputs.version }} \ - SECURE_BOOT_KEY_URL=${{ inputs.secure_boot_key_url }} \ - VARIANT=${{ inputs.variant }} \ - VERSION=${{ inputs.version }} \ - WEB_UI=${{ inputs.web_ui }} + FLATPAK_REMOTE_REFS_DIR="${{ inputs.flatpak_remote_refs_dir }}" \ + FLATPAK_REMOTE_URL="${{ inputs.flatpak_remote_url }}" \ + IMAGE_NAME="${{ inputs.image_name }}" \ + IMAGE_REPO="${{ inputs.image_repo }}" \ + IMAGE_TAG="${{ inputs.image_tag || inputs.version }}" \ + SECURE_BOOT_KEY_URL="${{ inputs.secure_boot_key_url }}" \ + VARIANT="${{ inputs.variant }}" \ + VERSION="${{ inputs.version }}" \ + WEB_UI="${{ inputs.web_ui }}" - name: Save dnf cache env: diff --git a/flatpak_refs/VLC b/flatpak_refs/VLC new file mode 100644 index 0000000..6e4a3fd --- /dev/null +++ b/flatpak_refs/VLC @@ -0,0 +1,2 @@ +app/org.videolan.VLC/x86_64/stable +runtime/org.kde.Platform/x86_64/5.15-23.08 \ No newline at end of file diff --git a/lorax_templates/flatpak_set_repo.tmpl b/lorax_templates/flatpak_set_repo.tmpl index 9cd006b..8feda96 100644 --- a/lorax_templates/flatpak_set_repo.tmpl +++ b/lorax_templates/flatpak_set_repo.tmpl @@ -4,4 +4,8 @@ append etc/anaconda/conf.d/anaconda.conf "flatpak_remote = ${flatpak_remote_name % else: replace "flatpak_manager\.add_remote\(\".*\", \".*\"\)" "flatpak_manager.add_remote(\"${flatpak_remote_name}\", \"${_flatpak_repo_url}\")" /usr/lib64/python*/site-packages/pyanaconda/modules/payloads/payload/rpm_ostree/flatpak_installation.py replace "flatpak_manager\.replace_installed_refs_remote\(\".*\"\)" "flatpak_manager.replace_installed_refs_remote(\"${flatpak_remote_name}\")" /usr/lib64/python*/site-packages/pyanaconda/modules/payloads/payload/rpm_ostree/flatpak_installation.py +% endif + +%if flatpak_remote_name != 'fedora' +systemctl disable flatpak-add-fedora-repos.service % endif \ No newline at end of file diff --git a/tests/iso/verify_flatpakrepo_updated.sh b/tests/iso/flatpak_repo_updated.sh similarity index 100% rename from tests/iso/verify_flatpakrepo_updated.sh rename to tests/iso/flatpak_repo_updated.sh diff --git a/tests/iso/os-release.sh b/tests/iso/install_os-release.sh similarity index 100% rename from tests/iso/os-release.sh rename to tests/iso/install_os-release.sh diff --git a/tests/vm/flatpak.yml b/tests/vm/flatpak_update.yml similarity index 100% rename from tests/vm/flatpak.yml rename to tests/vm/flatpak_update.yml