Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Split products #822

Merged
merged 20 commits into from
Oct 31, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci-integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,8 @@ jobs:
run: podman exec agama bash -c "cd /checkout; ./setup-service.sh"

- name: Set a testing Agama configuration
# copy a simplified ALP config file, it skips the product selection at the beginning
run: podman exec agama bash -c "cp /checkout/playwright/config/agama.yaml /checkout/service/etc/agama.yaml"
# use just one product, it skips the product selection at the beginning
run: podman exec agama bash -c "rm /checkout/products.d/{leap16,ALP-Dolomite}.yaml"

- name: Show NetworkManager log
run: podman exec agama journalctl -u NetworkManager
Expand Down
19 changes: 19 additions & 0 deletions .github/workflows/obs-staging-products.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: Submit agama-products

on:
# runs on pushes targeting the default branch
push:
branches:
- master
paths:
# run only when a Rust source is changed
- products.d/**

jobs:
update_staging:
uses: ./.github/workflows/obs-staging-shared.yml
# pass all secrets
secrets: inherit
with:
project_name: systemsmanagement:Agama:Staging
package_name: agama-products-opensuse
103 changes: 103 additions & 0 deletions products.d/ALP-Dolomite.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
id: ALP-Dolomite
name: SUSE ALP Dolomite
description: 'SUSE ALP Dolomite is a minimum immutable OS core, focused on
security to provide the bare minimum to run workloads and services as
containers or virtual machines.'
software:
installation_repositories:
- url: https://updates.suse.com/SUSE/Products/ALP-Dolomite/1.0/x86_64/product/
archs: x86_64
- url: https://updates.suse.com/SUSE/Products/ALP-Dolomite/1.0/aarch64/product/
archs: aarch64
- url: https://updates.suse.com/SUSE/Products/ALP-Dolomite/1.0/s390x/product/
archs: s390
- url: https://updates.suse.com/SUSE/Products/ALP-Dolomite/1.0/ppc64le/product/
archs: ppc

mandatory_patterns:
- alp_base_zypper
- alp_cockpit
- alp_hardware
optional_patterns: null # no optional pattern shared
mandatory_packages:
- package: device-mapper # Apparently needed if devices at /dev/mapper are used at boot (eg. FDE)
- package: fde-tools # Needed for FDE with TPM, hardcoded here temporarily
archs: aarch64, x86_64
- package: libtss2-tcti-device0
- package: ppc64-diag # Needed for hardware-based installations
archs: ppc64
optional_packages: null
base_product: ALP-Dolomite

security:
tpm_luks_open: true
lsm: selinux
available_lsms:
# apparmor:
# patterns:
# - apparmor
selinux:
patterns:
- alp_selinux
policy: enforcing
none:
patterns: null

storage:
space_policy: delete
encryption:
method: luks2
pbkd_function: pbkdf2
volumes:
- "/"
volume_templates:
- mount_path: "/"
filesystem: btrfs
btrfs:
snapshots: true
read_only: true
default_subvolume: "@"
subvolumes:
- path: root
- path: home
- path: opt
- path: srv
- path: boot/writable
- path: usr/local
- path: var
copy_on_write: false
# Architecture specific subvolume
- path: boot/grub2/arm64-efi
archs: aarch64
- path: boot/grub2/i386-pc
archs: x86_64
- path: boot/grub2/powerpc-ieee1275
archs: ppc,!board_powernv
- path: boot/grub2/s390x-emu
archs: s390
- path: boot/grub2/x86_64-efi
archs: x86_64
size:
auto: true
outline:
required: true
filesystems:
- btrfs
snapshots_configurable: false
auto_size:
base_min: 5 GiB
base_max: 25 GiB
max_fallback_for:
- "/var"
- mount_path: "/var"
filesystem: btrfs
mount_options:
- "x-initrd.mount"
- "nodatacow"
size:
auto: false
min: 5 GiB
outline:
required: false
filesystems:
- btrfs
5 changes: 5 additions & 0 deletions products.d/agama-products-opensuse.changes
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
-------------------------------------------------------------------
Mon Oct 30 14:38:51 UTC 2023 - Josef Reidinger <jreidinger@suse.com>

- Initial split of products (gh#openSUSE/agama#602,
gh#openSUSE/agama#822)
66 changes: 66 additions & 0 deletions products.d/agama-products-opensuse.spec
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#
# spec file for package agama-products-opensuse
#
# Copyright (c) 2023 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#

Name: agama-products-opensuse
# This will be set by osc services, that will run after this.
Version: 0
Release: 0
Summary: Definition of openSUSE products for the Agama installer
License: GPL-2.0-only
Url: https://github.com/opensuse/agama
BuildArch: noarch
Source0: tumbleweed.yaml
Source1: ALP-Dolomite.yaml
Source2: leap16.yaml

%description
Products definition for Agama installer. This one is for opensuse products.

%package -n agama-products-ALP-Dolomite
# This will be set by osc services, that will run after this.
Version: 0
Release: 0
Summary: Definition of Dolomite product for the Agama installer
License: GPL-2.0-only
Url: https://github.com/opensuse/agama
BuildArch: noarch

%description -n agama-products-ALP-Dolomite
Products definition for Agama installer. This one is for ALP Dolomite product.

%prep

%build

%install
install -D -d -m 0755 %{buildroot}%{_datadir}/agama/products.d
install -m 0644 %{SOURCE0} %{buildroot}%{_datadir}/agama/products.d
install -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/agama/products.d
install -m 0644 %{SOURCE2} %{buildroot}%{_datadir}/agama/products.d

%files
%dir %{_datadir}/agama
%dir %{_datadir}/agama/products.d
%{_datadir}/agama/products.d/tumbleweed.yaml
%{_datadir}/agama/products.d/leap16.yaml

%files -n agama-products-ALP-Dolomite
%dir %{_datadir}/agama
%dir %{_datadir}/agama/products.d
%{_datadir}/agama/products.d/ALP-Dolomite.yaml

%changelog
91 changes: 91 additions & 0 deletions products.d/leap16.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
id: Leap16
name: openSUSE Leap 16.0
archs: x86_64,aarch64
description: '[Experimental project] openSUSE Leap 16 is built on top of the next generation Adaptable Linux Platform (ALP) from SUSE.'
software:
installation_repositories:
- url: https://download.opensuse.org/repositories/openSUSE:/Leap:/16.0/images/repo/Leap-16.0-x86_64-Media1/
archs: x86_64
- url: https://download.opensuse.org/repositories/openSUSE:/Leap:/16.0/images/repo/Leap-16.0-aarch64-Media1/
archs: aarch64
mandatory_patterns:
- alp_base
- alp_base_zypper
- alp_cockpit
- alp-container_runtime
- alp_defaults
optional_patterns: null # no optional pattern shared
mandatory_packages:
- package: device-mapper # Apparently needed if devices at /dev/mapper are used at boot (eg. FDE)
- package: fde-tools # Needed for FDE with TPM, hardcoded here temporarily
archs: aarch64, x86_64
- package: libtss2-tcti-device0
optional_packages: null
base_product: Leap16

security:
tpm_luks_open: true
lsm: selinux
available_lsms:
# apparmor:
# patterns:
# - apparmor
selinux:
patterns:
- alp_selinux
policy: enforcing
none:
patterns: null

storage:
space_policy: delete
encryption:
method: luks2
pbkd_function: pbkdf2
volumes:
- "/"
volume_templates:
- mount_path: "/"
filesystem: btrfs
btrfs:
snapshots: true
read_only: true
default_subvolume: "@"
subvolumes:
- path: root
- path: home
- path: opt
- path: srv
- path: boot/writable
- path: usr/local
- path: boot/grub2/arm64-efi
archs: aarch64
- path: boot/grub2/i386-pc
archs: x86_64
- path: boot/grub2/powerpc-ieee1275
archs: ppc,!board_powernv
- path: boot/grub2/s390x-emu
archs: s390
- path: boot/grub2/x86_64-efi
archs: x86_64
- path: var
copy_on_write: false
size:
auto: false
min: 5 GiB
outline:
required: true
filesystems:
- btrfs
snapshots_configurable: false
- filesystem: xfs
size:
auto: false
outline:
required: false
filesystems:
- btrfs
- ext2
- ext3
- ext4
- xfs
Loading
Loading