forked from suse-edge/Factory
Compare commits
118 Commits
kiwi_build
...
3.2
Author | SHA256 | Date | |
---|---|---|---|
e5d02732a8 | |||
df13448a90 | |||
6fd885aa56 | |||
873b7ca8d6 | |||
9e18ce3842 | |||
9e14ce3cc2 | |||
dcb31ca578 | |||
9549266bdc | |||
c839af5ce7 | |||
15a0932fc3 | |||
0e99df3355 | |||
|
e4faea0759 | ||
|
76b5fe17d0 | ||
|
9eba6bc6b4 | ||
|
baf71f063c | ||
|
c913d6e401 | ||
|
2ba58603bb | ||
210428c35d | |||
1ddffe1b99 | |||
de188dbf78 | |||
c18be9138b | |||
d35bf98093 | |||
2ad24ea18b | |||
36fc92cdab | |||
75ed39ad43 | |||
ce1c54a27d | |||
7fba32e3c7 | |||
221d73486b | |||
cac6dd4b86 | |||
9e88e00e19 | |||
6fdde33f5b | |||
3b5b37b76d | |||
a96355f32a | |||
82164551ae | |||
47e9ef98c1 | |||
1a21c64747 | |||
df206f8fb9 | |||
c6a40c532e | |||
92d5b55269 | |||
8fefb7311e | |||
efefa20f5a | |||
50d3ae722f | |||
189db31b7f | |||
af930ae49c | |||
625b0da057 | |||
17b108ef3d
|
|||
d0e1e065a5
|
|||
1d9ae4aa3d
|
|||
2553da6659
|
|||
3d6c9be9ed | |||
e6561f36ed | |||
fa1da01c29 | |||
cf3153e074 | |||
94d4faf0f9 | |||
943fe7cda4
|
|||
10757d70e3
|
|||
74a858e8dc
|
|||
09f0242287
|
|||
51ea0c0499
|
|||
e4363afaf9
|
|||
4b20cf74d9
|
|||
2b4c6c3cce
|
|||
a223185628 | |||
79dff5fce2 | |||
f7a87ceaf0 | |||
71e3e0b40a | |||
4da1ed42d2 | |||
2ba0efdb93 | |||
f0ec2699b4 | |||
1390d88af7 | |||
9dfaedadf9
|
|||
81c1b981c2 | |||
b71760b245 | |||
f5e4126dad | |||
26e34cc386 | |||
af59834eaf | |||
5ff222b69b | |||
14b56eabbe | |||
d91b28fb5b | |||
4aa46388cf | |||
dfa68ba86e
|
|||
075e2a209c
|
|||
2928b2076e
|
|||
39338dd6ac
|
|||
dfc8bb30d9 | |||
33f56e8b23 | |||
744d04b40a
|
|||
5e098df843 | |||
7555048917 | |||
e92a50d110 | |||
da2ad77951
|
|||
be4fae4b18 | |||
f5cc155d16 | |||
a5633fd239 | |||
d719b5b6e5 | |||
dda8040420 | |||
dc44cb42bf | |||
ee82509ce9 | |||
bfd031153d | |||
a8bd38569b | |||
cfe2e92d13 | |||
40010f5c4f | |||
729dbefe78 | |||
6b530a91d9
|
|||
996ee3b221 | |||
5c2204ba3e | |||
f1bf24e9dd | |||
4ad7e30ea7 | |||
e9b3caf318 | |||
ed9a5df069 | |||
a66325901d | |||
8b6dce500e | |||
fc3da390e9
|
|||
fcbe8b9452
|
|||
044e5be211
|
|||
10f6ffd6c0
|
|||
9ff2fc03b9
|
|||
f971f64dd3
|
23
.gitea/workflows/check_manifest.yaml
Normal file
23
.gitea/workflows/check_manifest.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
name: Check Release Manifest Local Charts Versions
|
||||
on:
|
||||
pull_request:
|
||||
branches-ignore:
|
||||
- "devel"
|
||||
|
||||
|
||||
jobs:
|
||||
sync-pr-project:
|
||||
name: "Check Release Manifest Local Charts Versions"
|
||||
runs-on: tumbleweed
|
||||
steps:
|
||||
# Waiting on PR to get merged for support in upstream action/checkout action
|
||||
- uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256'
|
||||
name: Checkout repository
|
||||
with:
|
||||
object-format: 'sha256'
|
||||
- name: Setup dependencies
|
||||
run: |
|
||||
zypper in -y python3-ruamel.yaml
|
||||
- name: Check release manifest
|
||||
run: |
|
||||
python3 .obs/manifest-check.py --check
|
62
.gitea/workflows/pr_project.yaml
Normal file
62
.gitea/workflows/pr_project.yaml
Normal file
@@ -0,0 +1,62 @@
|
||||
name: Build PR in OBS
|
||||
on:
|
||||
pull_request_target:
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
- synchronize
|
||||
- closed
|
||||
branches-ignore:
|
||||
- "devel"
|
||||
|
||||
concurrency:
|
||||
group: ${{ gitea.workflow }}-${{ gitea.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
sync-pr-project:
|
||||
name: "Build PR in OBS"
|
||||
runs-on: tumbleweed
|
||||
steps:
|
||||
- name: Setup OSC
|
||||
run: |
|
||||
zypper in -y python3-jinja2
|
||||
mkdir -p ~/.config/osc
|
||||
cat >~/.config/osc/oscrc <<'EOF'
|
||||
[general]
|
||||
apiurl = https://api.opensuse.org
|
||||
|
||||
[https://api.opensuse.org]
|
||||
user=${{ vars.OBS_USERNAME }}
|
||||
pass=${{ secrets.OBS_PASSWORD }}
|
||||
EOF
|
||||
# Waiting on PR to get merged for support in upstream action/checkout action
|
||||
- uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256'
|
||||
name: Checkout repository
|
||||
with:
|
||||
object-format: 'sha256'
|
||||
- name: "[if PR is closed] Delete project in OBS"
|
||||
run: |
|
||||
if [ "${{ gitea.event.action }}" = "closed" ]; then
|
||||
PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')"
|
||||
osc rdelete -f -r -m "PR closed" "${PROJECT}:Staging:PR-${{ gitea.event.number }}"
|
||||
fi
|
||||
- name: "Setup PR project in OBS"
|
||||
env:
|
||||
SCM_URL: ${{ gitea.event.pull_request.head.repo.clone_url }}#${{ gitea.head_ref }}
|
||||
run: |
|
||||
if [ "${{ gitea.event.action }}" != "closed" ]; then
|
||||
PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')"
|
||||
python3 .obs/render_meta.py --pr ${{ gitea.event.number }} --scm-url "${SCM_URL}" | osc meta prj "${PROJECT}:Staging:PR-${{ gitea.event.number }}" -F -
|
||||
echo "Project created ${PROJECT}:Staging:PR-${{ gitea.event.number }}"
|
||||
echo "Follow build at: https://build.opensuse.org/project/monitor/${PROJECT}:Staging:PR-${{ gitea.event.number }}"
|
||||
fi
|
||||
- env:
|
||||
GIT_SHA: ${{ gitea.event.pull_request.head.sha }}
|
||||
name: "Wait for OBS to build the project"
|
||||
run: |
|
||||
if [ "${{ gitea.event.action }}" != "closed" ]; then
|
||||
PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')"
|
||||
export OBS_PROJECT="${PROJECT}:Staging:PR-${{ gitea.event.number }}"
|
||||
python3 .obs/wait_obs.py
|
||||
fi
|
35
.gitea/workflows/sync_config.yaml
Normal file
35
.gitea/workflows/sync_config.yaml
Normal file
@@ -0,0 +1,35 @@
|
||||
name: Synchronize Project Config
|
||||
on:
|
||||
push:
|
||||
branches-ignore:
|
||||
- "devel"
|
||||
paths:
|
||||
- "_config"
|
||||
- ".gitea/workflows/sync_config.yaml"
|
||||
|
||||
jobs:
|
||||
sync-prjconf:
|
||||
name: "Update prjconf in OBS"
|
||||
runs-on: tumbleweed
|
||||
steps:
|
||||
- name: Setup OSC
|
||||
run: |
|
||||
mkdir -p ~/.config/osc
|
||||
cat >~/.config/osc/oscrc <<'EOF'
|
||||
[general]
|
||||
apiurl = https://api.opensuse.org
|
||||
|
||||
[https://api.opensuse.org]
|
||||
user=${{ vars.OBS_USERNAME }}
|
||||
pass=${{ secrets.OBS_PASSWORD }}
|
||||
EOF
|
||||
# Waiting on PR to get merged for support in upstream action/checkout action
|
||||
- uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256'
|
||||
name: Checkout repository
|
||||
with:
|
||||
object-format: 'sha256'
|
||||
- run: |
|
||||
PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')"
|
||||
if [ "$(osc meta prjconf "${PROJECT}" | sha256sum)" != "$(cat _config | sha256sum)" ] ; then
|
||||
osc meta prjconf "${PROJECT}" -F _config
|
||||
fi
|
45
.gitea/workflows/sync_meta.yaml
Normal file
45
.gitea/workflows/sync_meta.yaml
Normal file
@@ -0,0 +1,45 @@
|
||||
name: Synchronize Project Metadata
|
||||
on:
|
||||
push:
|
||||
branches-ignore:
|
||||
- "devel"
|
||||
paths:
|
||||
- "*" # Will trigger on new directories and changes to files in root of repository
|
||||
- ".gitea/workflows/sync_meta.yaml"
|
||||
- ".obs/common.py"
|
||||
|
||||
jobs:
|
||||
sync-prj-meta:
|
||||
runs-on: tumbleweed
|
||||
steps:
|
||||
- name: Setup OSC
|
||||
run: |
|
||||
zypper in -y python3-jinja2
|
||||
mkdir -p ~/.config/osc
|
||||
cat >~/.config/osc/oscrc <<'EOF'
|
||||
[general]
|
||||
apiurl = https://api.opensuse.org
|
||||
|
||||
[https://api.opensuse.org]
|
||||
user=${{ vars.OBS_USERNAME }}
|
||||
pass=${{ secrets.OBS_PASSWORD }}
|
||||
EOF
|
||||
# Waiting on PR to get merged for support in upstream action/checkout action
|
||||
- uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256'
|
||||
name: Checkout repository
|
||||
with:
|
||||
object-format: 'sha256'
|
||||
- name: "Update or create OBS Project"
|
||||
run: |
|
||||
PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')"
|
||||
set -o pipefail
|
||||
if meta="$(osc meta prj "${PROJECT}" 2>/dev/null | sha256sum)"; then
|
||||
new_meta="$(python3 .obs/render_meta.py)"
|
||||
if [ "${meta}" != "$(echo "${new_meta}" | sha256sum)" ]; then
|
||||
echo "${new_meta}" | osc meta prj "${PROJECT}" -F -
|
||||
fi
|
||||
python3 .obs/sync_packages.py
|
||||
else
|
||||
# Create the projects
|
||||
bash .obs/create_projects.sh
|
||||
fi
|
@@ -1,5 +1,4 @@
|
||||
#!/usr/bin/env python3
|
||||
import yaml
|
||||
import subprocess
|
||||
import argparse
|
||||
import os
|
||||
@@ -7,30 +6,6 @@ import os.path
|
||||
|
||||
from common import PROJECT, REPOSITORY, BRANCH
|
||||
|
||||
def add_package_to_workflow(name: str):
|
||||
modified = False
|
||||
with open(".obs/workflows.yml", "r") as wf_file:
|
||||
workflows = yaml.safe_load(wf_file)
|
||||
if not any(
|
||||
x
|
||||
for x in workflows["staging_build"]["steps"]
|
||||
if x["branch_package"]["source_package"] == name
|
||||
):
|
||||
workflows["staging_build"]["steps"].append(
|
||||
{
|
||||
"branch_package": {
|
||||
"source_project": PROJECT,
|
||||
"target_project": f"{PROJECT}:Staging",
|
||||
"source_package": name,
|
||||
}
|
||||
}
|
||||
)
|
||||
modified = True
|
||||
if modified:
|
||||
with open(".obs/workflows.yml", "w") as wf_file:
|
||||
yaml.dump(workflows, wf_file)
|
||||
|
||||
|
||||
def add_package_to_project(name: str):
|
||||
package_meta = f"""<package name="{name}" project="{PROJECT}">
|
||||
<title/>
|
||||
@@ -53,7 +28,6 @@ def add_package(package_name: str):
|
||||
os.exit(1)
|
||||
|
||||
add_package_to_project(package_name)
|
||||
add_package_to_workflow(package_name)
|
||||
|
||||
|
||||
def main():
|
||||
@@ -65,7 +39,7 @@ def main():
|
||||
add_package(args.package)
|
||||
|
||||
|
||||
print("Package created in OBS, you can now push the modified workflow file")
|
||||
print("Package created in OBS !")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
@@ -1,3 +1,3 @@
|
||||
PROJECT = "isv:SUSE:Edge:Factory"
|
||||
PROJECT = "isv:SUSE:Edge:3.2"
|
||||
REPOSITORY = "https://src.opensuse.org/suse-edge/Factory"
|
||||
BRANCH = "main"
|
||||
BRANCH = "3.2"
|
||||
|
37
.obs/create_projects.sh
Normal file
37
.obs/create_projects.sh
Normal file
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
|
||||
show_help() {
|
||||
echo "Usage: $(basename $0) [--internal]"
|
||||
echo "options:"
|
||||
echo "-h, --help display this help and exit"
|
||||
echo "-i, --internal create project as internal"
|
||||
exit 0
|
||||
}
|
||||
|
||||
while [[ "$#" -gt 0 ]]; do
|
||||
case $1 in
|
||||
-h|--help) show_help;;
|
||||
-i|--internal) internal="--internal" ;;
|
||||
*) echo "Unknown parameter passed: $1";show_help ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')"
|
||||
EXTRA_OSC_ARGS=""
|
||||
if [ -n "$internal" ]; then
|
||||
PROJECT="ISV${PROJECT:3}"
|
||||
EXTRA_OSC_ARGS="-A https://api.suse.de"
|
||||
|
||||
python3 .obs/render_meta.py ${internal} Snapshot | osc ${EXTRA_OSC_ARGS} meta prj "${PROJECT}:Snapshot" -F -
|
||||
osc ${EXTRA_OSC_ARGS} meta prjconf "${PROJECT}:Snapshot" -F _config
|
||||
fi
|
||||
|
||||
python3 .obs/render_meta.py ${internal} ToTest | osc ${EXTRA_OSC_ARGS} meta prj "${PROJECT}:ToTest" -F -
|
||||
python3 .obs/render_meta.py ${internal} | osc ${EXTRA_OSC_ARGS} meta prj "${PROJECT}" -F -
|
||||
osc ${EXTRA_OSC_ARGS} meta prjconf "${PROJECT}:ToTest" -F _config
|
||||
osc ${EXTRA_OSC_ARGS} meta prjconf "${PROJECT}" -F _config
|
||||
|
||||
if [ -z "$internal" ]; then
|
||||
python3 .obs/sync_packages.py
|
||||
fi
|
@@ -1,5 +1,4 @@
|
||||
#!/usr/bin/env python3
|
||||
import yaml
|
||||
import subprocess
|
||||
import argparse
|
||||
import os
|
||||
@@ -8,18 +7,6 @@ import os.path
|
||||
from common import PROJECT
|
||||
|
||||
|
||||
def delete_package_from_workflow(name: str):
|
||||
with open(".obs/workflows.yml", "r") as wf_file:
|
||||
workflows = yaml.safe_load(wf_file)
|
||||
workflows["staging_build"]["steps"] = [
|
||||
x
|
||||
for x in workflows["staging_build"]["steps"]
|
||||
if x["branch_package"]["source_package"] != name
|
||||
]
|
||||
with open(".obs/workflows.yml", "w") as wf_file:
|
||||
yaml.dump(workflows, wf_file)
|
||||
|
||||
|
||||
def delete_package_from_project(name: str):
|
||||
p = subprocess.run(["osc", "rdelete", PROJECT, name, "-m \"Deleted via delete_package.py\"" ], stdout=subprocess.PIPE)
|
||||
print(p.stdout)
|
||||
@@ -33,7 +20,6 @@ def delete_package(package_name: str):
|
||||
os.exit(1)
|
||||
|
||||
delete_package_from_project(package_name)
|
||||
delete_package_from_workflow(package_name)
|
||||
|
||||
|
||||
def main():
|
||||
|
84
.obs/manifest-check.py
Executable file
84
.obs/manifest-check.py
Executable file
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import ruamel.yaml
|
||||
import pathlib
|
||||
import argparse
|
||||
import sys
|
||||
|
||||
yaml = ruamel.yaml.YAML()
|
||||
|
||||
def get_chart_version(chart_name: str) -> str:
|
||||
with open(f"./{chart_name}/Chart.yaml") as f:
|
||||
chart = yaml.load(f)
|
||||
return chart["version"]
|
||||
|
||||
def get_charts(chart):
|
||||
if not chart["chart"].startswith("%%CHART_REPO%%"):
|
||||
# Not a locally managed chart
|
||||
return {}
|
||||
|
||||
chart_name = chart["chart"][len("%%CHART_REPO%%/%%IMG_PREFIX%%"):]
|
||||
charts = { chart_name: chart["version"] }
|
||||
for child_chart in chart.get("dependencyCharts", []) + chart.get("addonCharts", []):
|
||||
charts.update(get_charts(child_chart))
|
||||
return charts
|
||||
|
||||
def get_charts_list():
|
||||
with open("./release-manifest-image/release_manifest.yaml") as f:
|
||||
manifest = yaml.load(f)
|
||||
charts = {}
|
||||
for chart in manifest["spec"]["components"]["workloads"]["helm"]:
|
||||
charts.update(get_charts(chart))
|
||||
return charts
|
||||
|
||||
def check_charts(fix: bool) -> bool:
|
||||
success = True
|
||||
charts = get_charts_list()
|
||||
to_fix = {}
|
||||
for chart in charts:
|
||||
expected_version = get_chart_version(chart)
|
||||
if expected_version != charts[chart]:
|
||||
success = False
|
||||
to_fix[f'%%CHART_REPO%%/%%IMG_PREFIX%%{chart}'] = expected_version
|
||||
print(f"{chart}: Expected: {expected_version}, Got: {charts[chart]}")
|
||||
if fix and not success:
|
||||
fix_charts(to_fix)
|
||||
return True
|
||||
return success
|
||||
|
||||
def fix_charts(to_fix):
|
||||
manifest_path = pathlib.Path("./release-manifest-image/release_manifest.yaml")
|
||||
manifest = yaml.load(manifest_path)
|
||||
yaml.indent(mapping=2, sequence=4, offset=2)
|
||||
yaml.width = 4096
|
||||
for chart_index, chart in enumerate(manifest["spec"]["components"]["workloads"]["helm"]):
|
||||
changed = False
|
||||
if chart["chart"] in to_fix.keys():
|
||||
changed = True
|
||||
chart["version"] = to_fix[chart["chart"]]
|
||||
for subchart_index, subchart in enumerate(chart.get("addonCharts", [])):
|
||||
if subchart["chart"] in to_fix.keys():
|
||||
changed = True
|
||||
subchart["version"] = to_fix[subchart["chart"]]
|
||||
chart["addonCharts"][subchart_index] = subchart
|
||||
for subchart_index, subchart in enumerate(chart.get("dependencyCharts", [])):
|
||||
if subchart["chart"] in to_fix.keys():
|
||||
changed = True
|
||||
subchart["version"] = to_fix[subchart["chart"]]
|
||||
chart["dependencyCharts"][subchart_index] = subchart
|
||||
if changed:
|
||||
manifest["spec"]["components"]["workloads"]["helm"][chart_index] = chart
|
||||
yaml.dump(manifest, manifest_path)
|
||||
|
||||
def main():
|
||||
print("Checking charts versions in release manifest")
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('-c', '--check', action='store_true')
|
||||
args = parser.parse_args()
|
||||
if not check_charts(not args.check):
|
||||
sys.exit(1)
|
||||
else:
|
||||
print("All local charts in release manifest are using the right version")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
62
.obs/render_meta.py
Normal file
62
.obs/render_meta.py
Normal file
@@ -0,0 +1,62 @@
|
||||
import argparse
|
||||
|
||||
from jinja2 import Template
|
||||
from common import PROJECT
|
||||
|
||||
def render(base_project, subproject, internal, scm_url=None):
|
||||
version = base_project.rsplit(':', 1)[-1]
|
||||
context = {
|
||||
"base_project": subproject == "",
|
||||
"title": f"SUSE Edge {version} {subproject}".rstrip(),
|
||||
}
|
||||
if subproject == "ToTest":
|
||||
context["project"] = f"{base_project}:ToTest"
|
||||
context["description"] = (
|
||||
f"This project doesn't build, it stores a snapshot of SUSE Edge {version} "
|
||||
"project currently going through the automated test layer"
|
||||
)
|
||||
if "Factory" in base_project or internal:
|
||||
context["release_project"] = f"{base_project}:Snapshot"
|
||||
elif subproject == "Snapshot":
|
||||
context["project"] = f"{base_project}:Snapshot"
|
||||
context["release_project"] = f"{base_project.rsplit(':', 1)[0]}:Containers"
|
||||
context["for_release"] = True
|
||||
context["description"] = (
|
||||
f"This project doesn't build, it stores a snapshot of SUSE Edge {version} "
|
||||
"project that passed automated test layer"
|
||||
)
|
||||
elif subproject == "":
|
||||
context["project"] = base_project
|
||||
context["release_project"] = f"{base_project}:ToTest"
|
||||
else: # PR case direct python call
|
||||
context["base_project"] = True
|
||||
context["project"] = f"{base_project}:{subproject}"
|
||||
if scm_url is not None:
|
||||
context["scm_url"] = scm_url
|
||||
|
||||
with open("_meta") as meta:
|
||||
template = Template(meta.read())
|
||||
return template.render(context)
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
prog='ProgramName',
|
||||
description='What the program does',
|
||||
epilog='Text at the bottom of help')
|
||||
parser.add_argument("subproject", default="", choices=["", "ToTest", "Snapshot"], nargs="?")
|
||||
parser.add_argument("--internal", action="store_true")
|
||||
parser.add_argument("--pr")
|
||||
parser.add_argument("--scm-url")
|
||||
args = parser.parse_args()
|
||||
base_project = PROJECT.replace("isv", "ISV", 1) if args.internal else PROJECT
|
||||
|
||||
print(render(
|
||||
base_project=base_project,
|
||||
subproject=args.subproject if args.pr is None else f"Staging:PR-{args.pr}",
|
||||
internal=args.internal,
|
||||
scm_url=args.scm_url,
|
||||
))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
@@ -9,7 +9,7 @@ from common import PROJECT
|
||||
|
||||
def get_obs_packages() -> Set[str]:
|
||||
packages = subprocess.run(["osc", "ls", PROJECT], encoding='utf-8' , capture_output=True)
|
||||
return set(packages.stdout.splitlines())
|
||||
return { p for p in packages.stdout.splitlines() if ":" not in p }
|
||||
|
||||
def get_local_packages() -> Set[str]:
|
||||
p = pathlib.Path('.')
|
||||
|
83
.obs/wait_obs.py
Normal file
83
.obs/wait_obs.py
Normal file
@@ -0,0 +1,83 @@
|
||||
import xml.etree.ElementTree as ET
|
||||
import subprocess
|
||||
import time
|
||||
import os
|
||||
import sys
|
||||
|
||||
from collections import Counter
|
||||
|
||||
def get_buildstatus(project: str) -> ET.Element:
|
||||
for _ in range(5):
|
||||
try:
|
||||
output = subprocess.check_output(["osc", "pr", "--xml", project])
|
||||
return ET.fromstring(output)
|
||||
except subprocess.CalledProcessError:
|
||||
continue
|
||||
print("Failed to get buildstatus from OBS")
|
||||
|
||||
def do_wait(project:str, commit:str) -> ET.Element:
|
||||
last_state = None
|
||||
while True:
|
||||
time.sleep(5)
|
||||
status = get_buildstatus(project)
|
||||
if last_state == status.get("state"):
|
||||
continue
|
||||
else:
|
||||
last_state = status.get("state")
|
||||
|
||||
scminfo = { e.text for e in status.findall(".//scminfo") }
|
||||
if len(scminfo) != 1 or scminfo.pop() != commit:
|
||||
print("Waiting for OBS to sync with SCM")
|
||||
continue
|
||||
|
||||
if not all([ e.get('state') == "published" and e.get('dirty') is None for e in status.findall("./result")]):
|
||||
print("Waiting for OBS to finish building")
|
||||
continue
|
||||
|
||||
return status
|
||||
|
||||
def print_results(status: ET.Element) -> bool:
|
||||
results = {}
|
||||
failed = []
|
||||
for e in status.findall("./result"):
|
||||
repo = results.get(e.get("repository"), {})
|
||||
repo[e.get("arch")] = e
|
||||
results[e.get("repository")] = repo
|
||||
|
||||
for repo in results.keys():
|
||||
print(f"{repo}:")
|
||||
depth=1
|
||||
for arch in results[repo].keys():
|
||||
counts = Counter()
|
||||
if repo != "charts":
|
||||
print(f"\t{arch}:")
|
||||
depth=2
|
||||
for package in results[repo][arch].findall("./status"):
|
||||
if package.get("code") in ["excluded", "disabled"]:
|
||||
continue
|
||||
if package.get("code") in ["failed", "unresolvable", "broken"]:
|
||||
details = package.findtext("details")
|
||||
if details:
|
||||
failed.append(f"{package.get('package')} ({arch}): {details}")
|
||||
else:
|
||||
failed.append(f"{package.get('package')} ({arch})")
|
||||
counts[package.get("code")] += 1
|
||||
for (code, count) in counts.items():
|
||||
print("\t"*depth, f"{code}: {count}")
|
||||
|
||||
failed.sort()
|
||||
if failed:
|
||||
print("\nPackages failing: ")
|
||||
for fail in failed:
|
||||
print("\t", fail)
|
||||
return len(failed)
|
||||
|
||||
def main():
|
||||
project = os.environ.get("OBS_PROJECT")
|
||||
sha = os.environ.get("GIT_SHA")
|
||||
print(f"Waiting for OBS to build {project} for commit {sha}")
|
||||
status = do_wait(project, sha)
|
||||
sys.exit(print_results(status))
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
@@ -1,240 +0,0 @@
|
||||
staging_build:
|
||||
filters:
|
||||
event: pull_request
|
||||
steps:
|
||||
- branch_package:
|
||||
source_package: endpoint-copier-operator
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: endpoint-copier-operator-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: endpoint-copier-operator-chart
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: akri
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: akri-agent-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: akri-chart
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: akri-controller-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: akri-dashboard-extension-chart
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: akri-debug-echo-discovery-handler-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: akri-onvif-discovery-handler-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: akri-opcua-discovery-handler-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: akri-udev-discovery-handler-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: akri-webhook-configuration-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: obs-service-set_version
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: cosign
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: frr-k8s
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: cluster-api
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: cluster-api-operator
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: kubectl
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: upgrade-controller
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: cluster-api-provider-rke2
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: nm-configurator
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: kube-rbac-proxy
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: edge-image-builder
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: metallb
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: hauler
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: ip-address-manager
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: baremetal-operator
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: cluster-api-provider-metal3
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: cdi-chart
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: cluster-api-controller-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: cluster-api-provider-metal3-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: metallb-chart
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: cluster-api-operator-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: sriov-crd-chart
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: upgrade-controller-chart
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: edge-image-builder-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: ironic-ipa-downloader-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: cluster-api-provider-rke2-controlplane-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: upgrade-controller-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: metal3-chart
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: baremetal-operator-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: cluster-api-provider-rke2-bootstrap-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: sriov-network-operator-chart
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: metallb-controller-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: ip-address-manager-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: metallb-speaker-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: ironic-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: cri-tools
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: crudini
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: fakeroot
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: ipcalc
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: autoconf
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: rancher-turtles-airgap-resources-chart
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: rancher-turtles-chart
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: kube-rbac-proxy-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: ironic-ipa-ramdisk
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: kubevirt-dashboard-extension-chart
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
||||
- branch_package:
|
||||
source_package: kiwi-builder-image
|
||||
source_project: isv:SUSE:Edge:Factory
|
||||
target_project: isv:SUSE:Edge:Factory:Staging
|
10
.pre-commit-config.yaml
Normal file
10
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
repos:
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: check-manifest
|
||||
name: "Check release-manifest"
|
||||
entry: .obs/manifest-check.py
|
||||
language: python
|
||||
additional_dependencies: ['ruamel.yaml']
|
||||
pass_filenames: false
|
||||
always_run: true
|
15
README.md
15
README.md
@@ -5,15 +5,6 @@ Contains the definition of the packages built on OBS for the SUSE Edge Solution
|
||||
This repository is linked to an OBS project: <https://build.opensuse.org/project/show/isv:SUSE:Edge:Factory>
|
||||
Every directory in this repository represents a package in that OBS project, those should be synced automatically from this repository.
|
||||
|
||||
## Adding a package
|
||||
|
||||
To add a package, first create a directory with your package as you intend it in OBS.
|
||||
|
||||
Then run the `.obs/add_package.py` script to create the package in the OBS project and add the required elements to the synchronization workflow.
|
||||
This script is using the `osc` command behind the scenes, so ensure you have it installed and correctly configured, as well as you have the correct permissions to create a new package in the project.
|
||||
|
||||
You will then get asked to push your changes.
|
||||
|
||||
## Testing a fork or a development branch
|
||||
|
||||
You can create a project in your home space in OBS, use the same prjconf as the one of "isv:SUSE:Edge:Factory", and copy the repositories part of the metadata (adjust self references).
|
||||
@@ -23,16 +14,14 @@ Then add a scmsync stanza to your metadata like this (adjust repository path and
|
||||
<scmsync>https://src.opensuse.org/suse-edge/Factory#main</scmsync>
|
||||
```
|
||||
|
||||
This is done automatically for any PR filed against this repository.
|
||||
|
||||
## Cutting a release version branch
|
||||
|
||||
1. Do the appropriate git branch command
|
||||
2. Change the project path in `.obs/common.py` file (e.g. from `isv:SUSE:Edge:Factory` to `isv:SUSE:Edge:3.2`)
|
||||
3. Change the branch reference in `.obs/common.py` file (e.g. from `main` to `3.2`)
|
||||
4. Edit the `.obs/workflows.yml` file to change the references to the correct projects
|
||||
5. Commit those changes to the new branch and push the new branch
|
||||
6. Create the base and to-test projects (e.g. `isv:SUSE:Edge:3.2` and `isv:SUSE:Edge:3.2:ToTest`), use the `isv:SUSE:Edge:Factory` projects as example for metadata part
|
||||
7. Use the prjconf of Factory in all those projects
|
||||
8. Run the `.obs/sync_packages.py` script to create all the packages in the base project
|
||||
9. Go take a few cups of coffee/tea/mate/... while waiting for OBS to build everything
|
||||
10. Once built do an `osc release` of the project for it to be copied over in the `ToTest` section
|
||||
11. Hand over to QA to test whatever is in `ToTest`. (You can continue to work on the base branch if needed meanwhile)
|
||||
|
155
_config
Normal file
155
_config
Normal file
@@ -0,0 +1,155 @@
|
||||
Prefer: -libqpid-proton10 -python311-urllib3_1
|
||||
|
||||
Macros:
|
||||
%__python3 /usr/bin/python3.11
|
||||
%registry_url %(echo %{vendor} | cut -d '/' -f 3 | sed 's/build/registry/')
|
||||
:Macros
|
||||
|
||||
%if "%{sub %{lower %_project} 1 14}" != "isv:suse:edge:" || "%{sub %_project 15 21}" == "Factory"
|
||||
# Here we are in Factory like project so set chart major version to 999
|
||||
Macros:
|
||||
%chart_major 999
|
||||
:Macros
|
||||
%else
|
||||
# Here we are in version branch, so set the image prefix and chart major accordingly
|
||||
Macros:
|
||||
%project_branch %(echo %{_project} | cut -d ':' -f 4)
|
||||
%img_prefix %{project_branch}/
|
||||
%chart_major %(echo %{project_branch} | awk '{split($1,a,"."); print a[1]*100 + a[2]}')
|
||||
:Macros
|
||||
%endif
|
||||
|
||||
%if %{sub %_project 1 3} == ISV
|
||||
Macros:
|
||||
%img_repo registry.suse.com/edge
|
||||
%chart_repo oci://registry.suse.com/edge
|
||||
%manifest_repo registry.suse.com/edge
|
||||
%support_level l3
|
||||
:Macros
|
||||
%else
|
||||
Macros:
|
||||
%img_repo registry.opensuse.org/isv/suse/edge/containers/images
|
||||
%manifest_repo registry.opensuse.org/isv/suse/edge/containers/images
|
||||
%chart_repo oci://registry.opensuse.org/isv/suse/edge/containers/charts
|
||||
%support_level techpreview
|
||||
:Macros
|
||||
%endif
|
||||
|
||||
%if "%_repository" == "charts" || "%_repository" == "test_manifest_images"
|
||||
Macros:
|
||||
%img_repo %(echo %{registry_url}:%{_project}:images | tr ":" "/" | tr '[:upper:]' '[:lower:]')
|
||||
%manifest_repo %(echo %{registry_url}:%{_project}:test_manifest_images | tr ":" "/" | tr '[:upper:]' '[:lower:]')
|
||||
%chart_repo oci://%(echo %{registry_url}:%{_project}:charts | tr ":" "/" | tr '[:upper:]' '[:lower:]')
|
||||
:Macros
|
||||
%endif
|
||||
|
||||
# Missing deps for testsuite
|
||||
BuildFlags: excludebuild:autoconf:el
|
||||
BuildFlags: excludebuild:autoconf:testsuite
|
||||
|
||||
# Only build manifest embedding images here
|
||||
%if "%_repository" == "test_manifest_images"
|
||||
BuildFlags: onlybuild:edge-image-builder-image
|
||||
BuildFlags: onlybuild:release-manifest-image
|
||||
# Exclude the images selected by the following section
|
||||
# as the standard repository is a dependency
|
||||
%ifarch aarch64
|
||||
BuildFlags: excludebuild:baremetal-operator-image
|
||||
BuildFlags: excludebuild:endpoint-copier-operator-image
|
||||
BuildFlags: excludebuild:ironic-image
|
||||
BuildFlags: excludebuild:ironic-ipa-downloader-image
|
||||
BuildFlags: excludebuild:kube-rbac-proxy-image
|
||||
BuildFlags: excludebuild:metallb-controller-image
|
||||
BuildFlags: excludebuild:metallb-speaker-image
|
||||
%endif
|
||||
%else
|
||||
# Only a subset of stack is arm64 ready
|
||||
%ifarch aarch64
|
||||
BuildFlags: onlybuild:autoconf
|
||||
BuildFlags: onlybuild:baremetal-operator
|
||||
BuildFlags: onlybuild:baremetal-operator-image
|
||||
BuildFlags: onlybuild:ca-certificates-suse
|
||||
BuildFlags: onlybuild:cosign
|
||||
BuildFlags: onlybuild:crudini
|
||||
BuildFlags: onlybuild:edge-image-builder
|
||||
BuildFlags: onlybuild:edge-image-builder-image
|
||||
BuildFlags: onlybuild:endpoint-copier-operator
|
||||
BuildFlags: onlybuild:endpoint-copier-operator-image
|
||||
BuildFlags: onlybuild:fakeroot
|
||||
BuildFlags: onlybuild:hauler
|
||||
BuildFlags: onlybuild:ipcalc
|
||||
BuildFlags: onlybuild:ironic-image
|
||||
BuildFlags: onlybuild:ironic-ipa-downloader-image
|
||||
BuildFlags: onlybuild:ironic-ipa-ramdisk
|
||||
BuildFlags: onlybuild:kube-rbac-proxy
|
||||
BuildFlags: onlybuild:kube-rbac-proxy-image
|
||||
BuildFlags: onlybuild:metallb
|
||||
BuildFlags: onlybuild:metallb-controller-image
|
||||
BuildFlags: onlybuild:metallb-speaker-image
|
||||
BuildFlags: onlybuild:nm-configurator
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%if "%_repository" == "images" || "%_repository" == "test_manifest_images"
|
||||
Prefer: container:sles15-image
|
||||
Type: docker
|
||||
Repotype: none
|
||||
Patterntype: none
|
||||
BuildEngine: podman
|
||||
Prefer: sles-release
|
||||
BuildFlags: dockerarg:SLE_VERSION=15.6
|
||||
|
||||
# Publish multi-arch container images only once all archs have been built
|
||||
PublishFlags: archsync
|
||||
%endif
|
||||
|
||||
%if "%_repository" == "images_6.0"
|
||||
Prefer: container:sles15-image
|
||||
Type: docker
|
||||
BuildEngine: podman
|
||||
Repotype: none
|
||||
Patterntype: none
|
||||
BuildFlags: dockerarg:SLE_VERSION=16.0
|
||||
BuildFlags: onlybuild:kiwi-builder-image
|
||||
|
||||
# Publish multi-arch container images only once all archs have been built
|
||||
PublishFlags: archsync
|
||||
|
||||
# Exclude the images selected by the aarch64 section
|
||||
%ifarch aarch64
|
||||
BuildFlags: excludebuild:baremetal-operator-image
|
||||
BuildFlags: excludebuild:edge-image-builder-image
|
||||
BuildFlags: excludebuild:endpoint-copier-operator-image
|
||||
BuildFlags: excludebuild:ironic-image
|
||||
BuildFlags: excludebuild:ironic-ipa-downloader-image
|
||||
BuildFlags: excludebuild:kube-rbac-proxy-image
|
||||
BuildFlags: excludebuild:metallb-controller-image
|
||||
BuildFlags: excludebuild:metallb-speaker-image
|
||||
%endif
|
||||
|
||||
%else
|
||||
BuildFlags: excludebuild:kiwi-builder-image
|
||||
%endif
|
||||
|
||||
|
||||
|
||||
%if "%_repository" == "charts" || "%_repository" == "phantomcharts" || "%_repository" == "releasecharts"
|
||||
Type: helm
|
||||
Repotype: helm
|
||||
Patterntype: none
|
||||
Required: perl-YAML-LibYAML
|
||||
%endif
|
||||
|
||||
%if "%_repository" == "standard"
|
||||
# for build openstack-ironic-image
|
||||
BuildFlags: allowrootforbuild
|
||||
%endif
|
||||
|
||||
# Enable reproducible builds
|
||||
# https://en.opensuse.org/openSUSE:Reproducible_Builds\#With_OBS
|
||||
Macros:
|
||||
%source_date_epoch_from_changelog Y
|
||||
%clamp_mtime_to_source_date_epoch Y
|
||||
%use_source_date_epoch_as_buildtime Y
|
||||
%_buildhost reproducible
|
||||
:Macros
|
74
_meta
Normal file
74
_meta
Normal file
@@ -0,0 +1,74 @@
|
||||
{#-
|
||||
This template is rendered by the render_meta.py script
|
||||
it is not automatically enforced by OBS
|
||||
-#}
|
||||
{%- set maintainers = [
|
||||
"edge-engineering",
|
||||
] -%}
|
||||
<project name="{{ project }}">
|
||||
<title>{{ title }}</title>
|
||||
{%- if description is defined %}
|
||||
<description>{{ description }}</description>
|
||||
{%- else %}
|
||||
<description/>
|
||||
{%- endif %}
|
||||
{%- if scm_url is defined %}
|
||||
<scmsync>{{ scm_url }}</scmsync>
|
||||
{%- endif %}
|
||||
{%- for maintainer in maintainers %}
|
||||
<person userid="{{ maintainer }}" role="maintainer"/>
|
||||
{%- endfor %}
|
||||
{%- if not base_project %}
|
||||
<build>
|
||||
<disable/>
|
||||
<enable repository="charts"/>
|
||||
<enable repository="test_manifest_images"/>
|
||||
</build>
|
||||
<publish>
|
||||
<disable repository="phantomcharts"/>
|
||||
</publish>
|
||||
<repository name="phantomcharts">
|
||||
<arch>x86_64</arch>
|
||||
</repository>
|
||||
{%- endif %}
|
||||
{%- for repository in ["images", "images_6.0", "test_manifest_images"] %}
|
||||
<repository name="{{ repository }}">
|
||||
{%- if release_project is defined and repository != "test_manifest_images" %}
|
||||
<releasetarget project="{{ release_project }}" repository="images" trigger="manual"/>
|
||||
{%- endif %}
|
||||
<path project="SUSE:Registry" repository="standard"/>
|
||||
{%- if repository == "images_6.0" %}
|
||||
<path project="SUSE:CA" repository="16.0"/>
|
||||
<path project="SUSE:ALP:Products:Marble:6.0" repository="standard"/>
|
||||
{%- else %}
|
||||
<path project="SUSE:CA" repository="SLE_15_SP6"/>
|
||||
<path project="{{ project }}" repository="standard"/>
|
||||
{%- endif %}
|
||||
<arch>x86_64</arch>
|
||||
<arch>aarch64</arch>
|
||||
</repository>
|
||||
{%- endfor %}
|
||||
<repository name="standard" block="local">
|
||||
{%- if release_project is defined and not for_release %}
|
||||
<releasetarget project="{{ release_project }}" repository="standard" trigger="manual"/>
|
||||
{%- endif %}
|
||||
<path project="Cloud:OpenStack:2024.2" repository="15.6"/>
|
||||
<path project="SUSE:SLE-15-SP6:Update" repository="standard"/>
|
||||
<arch>x86_64</arch>
|
||||
<arch>aarch64</arch>
|
||||
</repository>
|
||||
<repository name="charts"{{ ' rebuild="local"' if not base_project }}>
|
||||
{%- if release_project is defined and not for_release %}
|
||||
<releasetarget project="{{ release_project }}" repository="phantomcharts" trigger="manual"/>
|
||||
{%- endif %}
|
||||
<path project="{{ project }}" repository="standard"/>
|
||||
<arch>x86_64</arch>
|
||||
</repository>
|
||||
{%- if for_release %}
|
||||
<repository name="releasecharts" rebuild="local">
|
||||
<releasetarget project="{{ release_project }}" repository="charts" trigger="manual"/>
|
||||
<path project="{{ project }}" repository="standard"/>
|
||||
<arch>x86_64</arch>
|
||||
</repository>
|
||||
{%- endif %}
|
||||
</project>
|
@@ -1,5 +1,5 @@
|
||||
#!BuildTag: %%IMG_PREFIX%%akri-chart:0.12.20
|
||||
#!BuildTag: %%IMG_PREFIX%%akri-chart:0.12.20-%RELEASE%
|
||||
#!BuildTag: %%IMG_PREFIX%%akri-chart:%%CHART_MAJOR%%.0.0_up0.12.20
|
||||
#!BuildTag: %%IMG_PREFIX%%akri-chart:%%CHART_MAJOR%%.0.0_up0.12.20-%RELEASE%
|
||||
annotations:
|
||||
catalog.cattle.io/display-name: Akri
|
||||
apiVersion: v2
|
||||
@@ -8,4 +8,4 @@ description: A Helm chart for Akri
|
||||
icon: https://raw.githubusercontent.com/project-akri/akri-docs/main/art/icon/akri-icon-light.svg
|
||||
name: akri
|
||||
type: application
|
||||
version: 0.12.20
|
||||
version: "%%CHART_MAJOR%%.0.0+up0.12.20"
|
||||
|
@@ -11,5 +11,7 @@
|
||||
<param name="file">Chart.yaml</param>
|
||||
<param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
|
||||
<param name="var">IMG_PREFIX</param>
|
||||
<param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param>
|
||||
<param name="var">CHART_MAJOR</param>
|
||||
</service>
|
||||
</services>
|
||||
|
@@ -1,20 +1,21 @@
|
||||
#!BuildTag: %%IMG_PREFIX%%akri-dashboard-extension-chart:1.2.0
|
||||
#!BuildTag: %%IMG_PREFIX%%akri-dashboard-extension-chart:1.2.0-%RELEASE%
|
||||
#!BuildTag: %%IMG_PREFIX%%akri-dashboard-extension-chart:%%CHART_MAJOR%%.0.0
|
||||
#!BuildTag: %%IMG_PREFIX%%akri-dashboard-extension-chart:%%CHART_MAJOR%%.0.0_up1.2.1
|
||||
#!BuildTag: %%IMG_PREFIX%%akri-dashboard-extension-chart:%%CHART_MAJOR%%.0.0_up1.2.1-%RELEASE%
|
||||
annotations:
|
||||
catalog.cattle.io/certified: rancher
|
||||
catalog.cattle.io/display-name: Akri
|
||||
catalog.cattle.io/kube-version: '>= v1.26.0-0'
|
||||
catalog.cattle.io/kube-version: ">= v1.26.0-0"
|
||||
catalog.cattle.io/namespace: cattle-ui-plugin-system
|
||||
catalog.cattle.io/os: linux
|
||||
catalog.cattle.io/permits-os: linux, windows
|
||||
catalog.cattle.io/rancher-version: '>= 2.10.0-0'
|
||||
catalog.cattle.io/rancher-version: ">= 2.10.0-0"
|
||||
catalog.cattle.io/scope: management
|
||||
catalog.cattle.io/ui-component: plugins
|
||||
catalog.cattle.io/ui-extensions-version: '>= 3.0.0'
|
||||
catalog.cattle.io/ui-extensions-version: ">= 3.0.0 < 4.0.0"
|
||||
apiVersion: v2
|
||||
appVersion: 1.2.0
|
||||
appVersion: 302.0.0+up1.2.1
|
||||
description: 'SUSE Edge: Akri extension for Rancher Dashboard'
|
||||
icon: https://raw.githubusercontent.com/cncf/artwork/main/projects/akri/icon/color/akri-icon-color.svg
|
||||
name: akri-dashboard-extension
|
||||
type: application
|
||||
version: 1.2.0
|
||||
version: "%%CHART_MAJOR%%.0.0+up1.2.1"
|
||||
icon: https://raw.githubusercontent.com/cncf/artwork/main/projects/akri/icon/color/akri-icon-color.svg
|
||||
|
@@ -11,5 +11,7 @@
|
||||
<param name="file">Chart.yaml</param>
|
||||
<param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
|
||||
<param name="var">IMG_PREFIX</param>
|
||||
<param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param>
|
||||
<param name="var">CHART_MAJOR</param>
|
||||
</service>
|
||||
</services>
|
||||
|
@@ -38,7 +38,7 @@ Common labels
|
||||
helm.sh/chart: {{ include "extension-server.chart" . }}
|
||||
{{ include "extension-server.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | replace "+" "_" | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
@@ -60,4 +60,4 @@ Pkg annotations
|
||||
{{ $key }}: {{ $value | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
@@ -8,7 +8,7 @@ spec:
|
||||
plugin:
|
||||
name: {{ include "extension-server.fullname" . }}
|
||||
version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }}
|
||||
endpoint: https://raw.githubusercontent.com/suse-edge/dashboard-extensions/gh-pages/extensions/akri-dashboard-extension/1.2.0
|
||||
endpoint: https://raw.githubusercontent.com/suse-edge/dashboard-extensions/gh-pages/extensions/akri-dashboard-extension/302.0.0+up1.2.1
|
||||
noCache: {{ .Values.plugin.noCache }}
|
||||
noAuth: {{ .Values.plugin.noAuth }}
|
||||
metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }}
|
@@ -8,5 +8,5 @@ plugin:
|
||||
metadata:
|
||||
catalog.cattle.io/display-name: Akri
|
||||
catalog.cattle.io/rancher-version: ">= 2.10.0-0"
|
||||
catalog.cattle.io/ui-extensions-version: ">= 3.0.0"
|
||||
catalog.cattle.io/ui-extensions-version: ">= 3.0.0 < 4.0.0"
|
||||
catalog.cattle.io/kube-version: ">= v1.26.0-0"
|
||||
|
@@ -10,7 +10,9 @@
|
||||
<service name="cargo_vendor" mode="manual">
|
||||
<param name="srcdir">akri</param>
|
||||
</service>
|
||||
<service name="tar" mode="buildtime" />
|
||||
<service name="tar" mode="buildtime">
|
||||
<param name="obsinfo">akri.obsinfo</param>
|
||||
</service>
|
||||
<service name="set_version" mode="buildtime" >
|
||||
<param name="fromfile">version.txt</param>
|
||||
<param name="regex">^(.*)$</param>
|
||||
|
@@ -12,10 +12,8 @@
|
||||
<param name="without-version">yes</param>
|
||||
<param name="versionrewrite-replacement">\1</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="tar" />
|
||||
<service mode="buildtime" name="recompress">
|
||||
<param name="file">*.tar</param>
|
||||
<param name="compression">gz</param>
|
||||
<service mode="buildtime" name="tar">
|
||||
<param name="obsinfo">baremetal-operator.obsinfo</param>
|
||||
</service>
|
||||
<service name="go_modules">
|
||||
</service>
|
||||
@@ -23,7 +21,7 @@
|
||||
<param name="file">baremetal-operator.spec</param>
|
||||
<param name="var">SOURCE_COMMIT</param>
|
||||
<param name="eval">
|
||||
SOURCE_COMMIT=$(grep commit *.obsinfo | cut -d" " -f2)
|
||||
SOURCE_COMMIT=$(grep commit baremetal-operator.obsinfo | cut -d" " -f2)
|
||||
</param>
|
||||
<param name="verbose">1</param>
|
||||
</service>
|
||||
|
@@ -22,7 +22,7 @@ Release: 0.8.0
|
||||
Summary: Implements a Kubernetes API for managing bare metal hosts
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/metal3-io/baremetal-operator
|
||||
Source: baremetal-operator-%{version}.tar.gz
|
||||
Source: baremetal-operator-%{version}.tar
|
||||
Source1: vendor.tar.gz
|
||||
BuildRequires: golang(API) = 1.22
|
||||
ExcludeArch: s390
|
||||
|
@@ -1,9 +1,9 @@
|
||||
#!BuildTag: %%IMG_PREFIX%%cdi-chart:0.4.0
|
||||
#!BuildTag: %%IMG_PREFIX%%cdi-chart:0.4.0-%RELEASE%
|
||||
#!BuildTag: %%IMG_PREFIX%%cdi-chart:%%CHART_MAJOR%%.0.0_up0.4.0
|
||||
#!BuildTag: %%IMG_PREFIX%%cdi-chart:%%CHART_MAJOR%%.0.0_up0.4.0-%RELEASE%
|
||||
apiVersion: v2
|
||||
appVersion: 1.60.1
|
||||
description: A Helm chart for Containerized Data Importer (CDI)
|
||||
icon: https://raw.githubusercontent.com/cncf/artwork/main/projects/kubevirt/icon/color/kubevirt-icon-color.svg
|
||||
name: cdi
|
||||
type: application
|
||||
version: 0.4.0
|
||||
version: "%%CHART_MAJOR%%.0.0+up0.4.0"
|
||||
|
@@ -4,5 +4,7 @@
|
||||
<param name="file">Chart.yaml</param>
|
||||
<param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
|
||||
<param name="var">IMG_PREFIX</param>
|
||||
<param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param>
|
||||
<param name="var">CHART_MAJOR</param>
|
||||
</service>
|
||||
</services>
|
||||
|
@@ -1,35 +0,0 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#!BuildTag: %%IMG_PREFIX%%cluster-api-operator:%%cluster-api-operator_version%%
|
||||
#!BuildTag: %%IMG_PREFIX%%cluster-api-operator:%%cluster-api-operator_version%%-%RELEASE%
|
||||
#!BuildVersion: 15.6
|
||||
ARG SLE_VERSION
|
||||
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
||||
|
||||
FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base
|
||||
COPY --from=micro / /installroot/
|
||||
RUN zypper --installroot /installroot --non-interactive install --no-recommends cluster-api-operator shadow; zypper -n clean; rm -rf /var/log/*
|
||||
|
||||
FROM micro AS final
|
||||
# Define labels according to https://en.opensuse.org/Building_derived_containers
|
||||
# labelprefix=com.suse.application.cluster-api-operator
|
||||
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
||||
LABEL org.opencontainers.image.title="SLE cluster-api-operator Container Image"
|
||||
LABEL org.opencontainers.image.description="cluster-api-operator based on the SLE Base Container Image."
|
||||
LABEL org.opencontainers.image.version="%%cluster-api-operator_version%%"
|
||||
LABEL org.opencontainers.image.url="https://www.suse.com/products/server/"
|
||||
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%cluster-api-operator:%%cluster-api-operator_version%%-%RELEASE%"
|
||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||
LABEL com.suse.lifecycle-url="https://www.suse.com/lifecycle"
|
||||
LABEL com.suse.image-type="application"
|
||||
LABEL com.suse.release-stage="released"
|
||||
# endlabelprefix
|
||||
|
||||
COPY --from=base /installroot /
|
||||
RUN mv /usr/bin/cluster-api-operator-controller /manager
|
||||
# Use uid of nonroot user (65532) because kubernetes expects numeric user when applying pod security policies
|
||||
USER 65532
|
||||
ENTRYPOINT [ "/manager" ]
|
@@ -1,23 +0,0 @@
|
||||
<services>
|
||||
<service name="obs_scm">
|
||||
<param name="url">https://github.com/kubernetes-sigs/cluster-api-operator</param>
|
||||
<param name="scm">git</param>
|
||||
<param name="revision">v0.12.0</param>
|
||||
<param name="version">_auto_</param>
|
||||
<param name="versionformat">@PARENT_TAG@</param>
|
||||
<param name="changesgenerate">enable</param>
|
||||
<param name="changesauthor">steven.hardy@suse.com</param>
|
||||
<param name="match-tag">v*</param>
|
||||
<param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param>
|
||||
<param name="without-version">yes</param>
|
||||
<param name="versionrewrite-replacement">\1</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="tar" />
|
||||
<service mode="buildtime" name="recompress">
|
||||
<param name="file">*.tar</param>
|
||||
<param name="compression">gz</param>
|
||||
</service>
|
||||
<service name="go_modules">
|
||||
</service>
|
||||
<service mode="buildtime" name="set_version" />
|
||||
</services>
|
@@ -1,52 +0,0 @@
|
||||
#
|
||||
# spec file for package cluster-api-operator
|
||||
#
|
||||
# Copyright (c) 2023 SUSE LLC
|
||||
#
|
||||
# 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 https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
Name: cluster-api-operator
|
||||
Version: 0.12.0
|
||||
Release: 0
|
||||
Summary: Cluster API Core Controller
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/kubernetes-sigs/cluster-api-operator
|
||||
Source: cluster-api-operator-%{version}.tar.gz
|
||||
Source1: vendor.tar.gz
|
||||
BuildRequires: golang(API) = 1.21
|
||||
ExcludeArch: s390
|
||||
ExcludeArch: %{ix86}
|
||||
|
||||
%description
|
||||
|
||||
Cluster API operator
|
||||
|
||||
%prep
|
||||
%autosetup -a1 -n cluster-api-operator-%{version}
|
||||
|
||||
%build
|
||||
go build \
|
||||
-mod=vendor \
|
||||
-buildmode=pie \
|
||||
-o cluster-api-operator cmd/main.go
|
||||
|
||||
%install
|
||||
install -D -m0755 cluster-api-operator %{buildroot}%{_bindir}/cluster-api-operator-controller
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%doc README.md
|
||||
%{_bindir}/cluster-api-operator-controller
|
||||
|
||||
%changelog
|
@@ -1,36 +0,0 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#!BuildTag: %%IMG_PREFIX%%cluster-api-provider-metal3:v%%cluster-api-provider-metal3_version%%
|
||||
#!BuildTag: %%IMG_PREFIX%%cluster-api-provider-metal3:%%cluster-api-provider-metal3_version%%
|
||||
#!BuildTag: %%IMG_PREFIX%%cluster-api-provider-metal3:%%cluster-api-provider-metal3_version%%-%RELEASE%
|
||||
#!BuildVersion: 15.6
|
||||
ARG SLE_VERSION
|
||||
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
||||
|
||||
FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base
|
||||
COPY --from=micro / /installroot/
|
||||
RUN zypper --installroot /installroot --non-interactive install --no-recommends cluster-api-provider-metal3 shadow; zypper -n clean; rm -rf /var/log/*
|
||||
|
||||
FROM micro AS final
|
||||
# Define labels according to https://en.opensuse.org/Building_derived_containers
|
||||
# labelprefix=com.suse.application.cluster-api-provider-metal3
|
||||
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
||||
LABEL org.opencontainers.image.title="SLE cluster-api-provider-metal3 Container Image"
|
||||
LABEL org.opencontainers.image.description="cluster-api-provider-metal3 based on the SLE Base Container Image."
|
||||
LABEL org.opencontainers.image.version="%%cluster-api-provider-metal3_version%%"
|
||||
LABEL org.opencontainers.image.url="https://www.suse.com/products/server/"
|
||||
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%cluster-api-provider-metal3:%%cluster-api-provider-metal3_version%%-%RELEASE%"
|
||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||
LABEL com.suse.lifecycle-url="https://www.suse.com/lifecycle"
|
||||
LABEL com.suse.image-type="application"
|
||||
LABEL com.suse.release-stage="released"
|
||||
# endlabelprefix
|
||||
|
||||
COPY --from=base /installroot /
|
||||
RUN mv /usr/bin/cluster-api-provider-metal3 /manager
|
||||
# Use uid of nonroot user (65532) because kubernetes expects numeric user when applying pod security policies
|
||||
USER 65532
|
||||
ENTRYPOINT [ "/manager" ]
|
@@ -1,19 +0,0 @@
|
||||
<services>
|
||||
<service mode="buildtime" name="kiwi_metainfo_helper"/>
|
||||
<service mode="buildtime" name="docker_label_helper"/>
|
||||
<service name="replace_using_package_version" mode="buildtime">
|
||||
<param name="file">Dockerfile</param>
|
||||
<param name="regex">%%cluster-api-provider-metal3_version%%</param>
|
||||
<param name="package">cluster-api-provider-metal3</param>
|
||||
<param name="parse-version">patch</param>
|
||||
</service>
|
||||
<service name="replace_using_env" mode="buildtime">
|
||||
<param name="file">Dockerfile</param>
|
||||
<param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
|
||||
<param name="var">IMG_PREFIX</param>
|
||||
<param name="eval">IMG_REPO=$(rpm --macros=/root/.rpmmacros -E %img_repo)</param>
|
||||
<param name="var">IMG_REPO</param>
|
||||
<param name="eval">SUPPORT_LEVEL=$(rpm --macros=/root/.rpmmacros -E %support_level)</param>
|
||||
<param name="var">SUPPORT_LEVEL</param>
|
||||
</service>
|
||||
</services>
|
@@ -1,23 +0,0 @@
|
||||
<services>
|
||||
<service name="obs_scm">
|
||||
<param name="url">https://github.com/metal3-io/cluster-api-provider-metal3</param>
|
||||
<param name="scm">git</param>
|
||||
<param name="revision">v1.8.2</param>
|
||||
<param name="version">_auto_</param>
|
||||
<param name="versionformat">@PARENT_TAG@</param>
|
||||
<param name="changesgenerate">enable</param>
|
||||
<param name="changesauthor">steven.hardy@suse.com</param>
|
||||
<param name="match-tag">v*</param>
|
||||
<param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param>
|
||||
<param name="without-version">yes</param>
|
||||
<param name="versionrewrite-replacement">\1</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="tar" />
|
||||
<service mode="buildtime" name="recompress">
|
||||
<param name="file">*.tar</param>
|
||||
<param name="compression">gz</param>
|
||||
</service>
|
||||
<service name="go_modules">
|
||||
</service>
|
||||
<service mode="buildtime" name="set_version" />
|
||||
</services>
|
@@ -1,54 +0,0 @@
|
||||
#
|
||||
# spec file for package cluster-api-provider-metal3
|
||||
#
|
||||
# Copyright (c) 2023 SUSE LLC
|
||||
#
|
||||
# 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 https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
Name: cluster-api-provider-metal3
|
||||
Version: 1.8.2
|
||||
Release: 0
|
||||
Summary: Cluster API Infrastructure Provider for Metal3
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/metal3-io/cluster-api-provider-metal3
|
||||
Source: cluster-api-provider-metal3-%{version}.tar.gz
|
||||
Source1: vendor.tar.gz
|
||||
BuildRequires: golang(API) = 1.22
|
||||
ExcludeArch: s390
|
||||
ExcludeArch: %{ix86}
|
||||
|
||||
%description
|
||||
|
||||
Cluster API Provider Metal3 is one of the providers for Cluster API and enables
|
||||
users to deploy a Cluster API based cluster on top of bare metal infrastructure
|
||||
using Metal3.
|
||||
|
||||
%prep
|
||||
%autosetup -a1 -n cluster-api-provider-metal3-%{version}
|
||||
|
||||
%build
|
||||
go build \
|
||||
-mod=vendor \
|
||||
-buildmode=pie \
|
||||
-a -ldflags '-extldflags "-static"'
|
||||
|
||||
%install
|
||||
install -D -m0755 cluster-api-provider-metal3 %{buildroot}%{_bindir}/cluster-api-provider-metal3
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%doc README.md
|
||||
%{_bindir}/cluster-api-provider-metal3
|
||||
|
||||
%changelog
|
@@ -1,36 +0,0 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#!BuildTag: %%IMG_PREFIX%%cluster-api-provider-rke2-bootstrap:v%%cluster-api-provider-rke2_version%%
|
||||
#!BuildTag: %%IMG_PREFIX%%cluster-api-provider-rke2-bootstrap:%%cluster-api-provider-rke2_version%%
|
||||
#!BuildTag: %%IMG_PREFIX%%cluster-api-provider-rke2-bootstrap:%%cluster-api-provider-rke2_version%%-%RELEASE%
|
||||
#!BuildVersion: 15.6
|
||||
ARG SLE_VERSION
|
||||
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
||||
|
||||
FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base
|
||||
COPY --from=micro / /installroot/
|
||||
RUN zypper --installroot /installroot --non-interactive install --no-recommends cluster-api-provider-rke2-bootstrap shadow; zypper -n clean; rm -rf /var/log/*
|
||||
|
||||
FROM micro AS final
|
||||
# Define labels according to https://en.opensuse.org/Building_derived_containers
|
||||
# labelprefix=com.suse.application.cluster-api-provider-rke2
|
||||
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
||||
LABEL org.opencontainers.image.title="SLE cluster-api-provider-rke2 Container Image"
|
||||
LABEL org.opencontainers.image.description="cluster-api-provider-rke2 based on the SLE Base Container Image."
|
||||
LABEL org.opencontainers.image.version="%%cluster-api-provider-rke2_version%%"
|
||||
LABEL org.opencontainers.image.url="https://www.suse.com/products/server/"
|
||||
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%cluster-api-provider-rke2-bootstrap:%%cluster-api-provider-rke2_version%%-%RELEASE%"
|
||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||
LABEL com.suse.lifecycle-url="https://www.suse.com/lifecycle"
|
||||
LABEL com.suse.image-type="application"
|
||||
LABEL com.suse.release-stage="released"
|
||||
# endlabelprefix
|
||||
|
||||
COPY --from=base /installroot /
|
||||
RUN mv /usr/bin/rke2-bootstrap-manager /manager
|
||||
# Use uid of nonroot user (65532) because kubernetes expects numeric user when applying pod security policies
|
||||
USER 65532
|
||||
ENTRYPOINT [ "/manager" ]
|
@@ -1,36 +0,0 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#!BuildTag: %%IMG_PREFIX%%cluster-api-provider-rke2-controlplane:v%%cluster-api-provider-rke2_version%%
|
||||
#!BuildTag: %%IMG_PREFIX%%cluster-api-provider-rke2-controlplane:%%cluster-api-provider-rke2_version%%
|
||||
#!BuildTag: %%IMG_PREFIX%%cluster-api-provider-rke2-controlplane:%%cluster-api-provider-rke2_version%%-%RELEASE%
|
||||
#!BuildVersion: 15.6
|
||||
ARG SLE_VERSION
|
||||
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
||||
|
||||
FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base
|
||||
COPY --from=micro / /installroot/
|
||||
RUN zypper --installroot /installroot --non-interactive install --no-recommends cluster-api-provider-rke2-control-plane shadow; zypper -n clean; rm -rf /var/log/*
|
||||
|
||||
FROM micro AS final
|
||||
# Define labels according to https://en.opensuse.org/Building_derived_containers
|
||||
# labelprefix=com.suse.application.cluster-api-provider-rke2
|
||||
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
||||
LABEL org.opencontainers.image.title="SLE cluster-api-provider-rke2 Container Image"
|
||||
LABEL org.opencontainers.image.description="cluster-api-provider-rke2 based on the SLE Base Container Image."
|
||||
LABEL org.opencontainers.image.version="%%cluster-api-provider-rke2_version%%"
|
||||
LABEL org.opencontainers.image.url="https://www.suse.com/products/server/"
|
||||
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%cluster-api-provider-rke2-controlplane:%%cluster-api-provider-rke2_version%%-%RELEASE%"
|
||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||
LABEL com.suse.lifecycle-url="https://www.suse.com/lifecycle"
|
||||
LABEL com.suse.image-type="application"
|
||||
LABEL com.suse.release-stage="released"
|
||||
# endlabelprefix
|
||||
|
||||
COPY --from=base /installroot /
|
||||
RUN mv /usr/bin/rke2-control-plane-manager /manager
|
||||
# Use uid of nonroot user (65532) because kubernetes expects numeric user when applying pod security policies
|
||||
USER 65532
|
||||
ENTRYPOINT [ "/manager" ]
|
@@ -1,19 +0,0 @@
|
||||
<services>
|
||||
<service mode="buildtime" name="kiwi_metainfo_helper"/>
|
||||
<service mode="buildtime" name="docker_label_helper"/>
|
||||
<service name="replace_using_package_version" mode="buildtime">
|
||||
<param name="file">Dockerfile</param>
|
||||
<param name="regex">%%cluster-api-provider-rke2_version%%</param>
|
||||
<param name="package">cluster-api-provider-rke2-control-plane</param>
|
||||
<param name="parse-version">patch</param>
|
||||
</service>
|
||||
<service name="replace_using_env" mode="buildtime">
|
||||
<param name="file">Dockerfile</param>
|
||||
<param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
|
||||
<param name="var">IMG_PREFIX</param>
|
||||
<param name="eval">IMG_REPO=$(rpm --macros=/root/.rpmmacros -E %img_repo)</param>
|
||||
<param name="var">IMG_REPO</param>
|
||||
<param name="eval">SUPPORT_LEVEL=$(rpm --macros=/root/.rpmmacros -E %support_level)</param>
|
||||
<param name="var">SUPPORT_LEVEL</param>
|
||||
</service>
|
||||
</services>
|
@@ -1,23 +0,0 @@
|
||||
<services>
|
||||
<service name="obs_scm">
|
||||
<param name="url">https://github.com/rancher-sandbox/cluster-api-provider-rke2</param>
|
||||
<param name="scm">git</param>
|
||||
<param name="revision">v0.8.0</param>
|
||||
<param name="version">_auto_</param>
|
||||
<param name="versionformat">@PARENT_TAG@</param>
|
||||
<param name="changesgenerate">enable</param>
|
||||
<param name="changesauthor">steven.hardy@suse.com</param>
|
||||
<param name="match-tag">v*</param>
|
||||
<param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param>
|
||||
<param name="without-version">yes</param>
|
||||
<param name="versionrewrite-replacement">\1</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="tar" />
|
||||
<service mode="buildtime" name="recompress">
|
||||
<param name="file">*.tar</param>
|
||||
<param name="compression">gz</param>
|
||||
</service>
|
||||
<service name="go_modules">
|
||||
</service>
|
||||
<service mode="buildtime" name="set_version" />
|
||||
</services>
|
@@ -1,61 +0,0 @@
|
||||
#
|
||||
# spec file for package cluster-api-provider-rke2
|
||||
#
|
||||
# Copyright (c) 2023 SUSE LLC
|
||||
#
|
||||
# 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 https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
Name: cluster-api-provider-rke2
|
||||
Version: 0.8.0
|
||||
Release: 0
|
||||
Summary: Cluster API provider for RKE2
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/rancher-sandbox/cluster-api-provider-rke2
|
||||
Source: cluster-api-provider-rke2-%{version}.tar.gz
|
||||
Source1: vendor.tar.gz
|
||||
BuildRequires: golang(API) = 1.22
|
||||
ExcludeArch: s390
|
||||
ExcludeArch: %{ix86}
|
||||
|
||||
%description
|
||||
|
||||
Cluster API provider for RKE2
|
||||
|
||||
%package bootstrap
|
||||
Summary: Cluster API bootstrap controller for RKE2
|
||||
%description bootstrap
|
||||
Cluster API bootstrap controller for RKE2
|
||||
|
||||
%package control-plane
|
||||
Summary: Cluster API control-plane controller for RKE2
|
||||
%description control-plane
|
||||
Cluster API control-plane controller for RKE2
|
||||
|
||||
%prep
|
||||
%autosetup -a1 -n cluster-api-provider-rke2-%{version}
|
||||
|
||||
%build
|
||||
make managers
|
||||
|
||||
%install
|
||||
install -D -m0755 bin/rke2-bootstrap-manager %{buildroot}%{_bindir}/rke2-bootstrap-manager
|
||||
install -D -m0755 bin/rke2-control-plane-manager %{buildroot}%{_bindir}/rke2-control-plane-manager
|
||||
|
||||
%files bootstrap
|
||||
%{_bindir}/rke2-bootstrap-manager
|
||||
|
||||
%files control-plane
|
||||
%{_bindir}/rke2-control-plane-manager
|
||||
|
||||
%changelog
|
@@ -1,23 +0,0 @@
|
||||
<services>
|
||||
<service name="obs_scm">
|
||||
<param name="url">https://github.com/kubernetes-sigs/cluster-api</param>
|
||||
<param name="scm">git</param>
|
||||
<param name="revision">v1.8.4</param>
|
||||
<param name="version">_auto_</param>
|
||||
<param name="versionformat">@PARENT_TAG@</param>
|
||||
<param name="changesgenerate">enable</param>
|
||||
<param name="changesauthor">steven.hardy@suse.com</param>
|
||||
<param name="match-tag">v*</param>
|
||||
<param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param>
|
||||
<param name="without-version">yes</param>
|
||||
<param name="versionrewrite-replacement">\1</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="tar" />
|
||||
<service mode="buildtime" name="recompress">
|
||||
<param name="file">*.tar</param>
|
||||
<param name="compression">gz</param>
|
||||
</service>
|
||||
<service name="go_modules">
|
||||
</service>
|
||||
<service mode="buildtime" name="set_version" />
|
||||
</services>
|
@@ -1,51 +0,0 @@
|
||||
#
|
||||
# spec file for package cluster-api
|
||||
#
|
||||
# Copyright (c) 2023 SUSE LLC
|
||||
#
|
||||
# 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 https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
Name: cluster-api
|
||||
Version: 1.8.4
|
||||
Release: 0
|
||||
Summary: Cluster API Core Controller
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/kubernetes-sigs/cluster-api
|
||||
Source: cluster-api-%{version}.tar.gz
|
||||
Source1: vendor.tar.gz
|
||||
BuildRequires: golang(API) = 1.22
|
||||
ExcludeArch: s390
|
||||
ExcludeArch: %{ix86}
|
||||
|
||||
%description
|
||||
|
||||
Cluster API core controller
|
||||
|
||||
%prep
|
||||
%autosetup -a1 -n cluster-api-%{version}
|
||||
|
||||
%build
|
||||
go build \
|
||||
-mod=vendor \
|
||||
-buildmode=pie \
|
||||
|
||||
%install
|
||||
install -D -m0755 cluster-api %{buildroot}%{_bindir}/cluster-api-controller
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%doc README.md
|
||||
%{_bindir}/cluster-api-controller
|
||||
|
||||
%changelog
|
@@ -8,10 +8,8 @@
|
||||
<param name="versionrewrite-pattern">v(.*)</param>
|
||||
<param name="changesgenerate">enable</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="tar" />
|
||||
<service mode="buildtime" name="recompress">
|
||||
<param name="file">*.tar</param>
|
||||
<param name="compression">gz</param>
|
||||
<service mode="buildtime" name="tar">
|
||||
<param name="obsinfo">cosign.obsinfo</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="set_version" />
|
||||
<service name="go_modules">
|
||||
|
@@ -24,7 +24,7 @@ Release: 0
|
||||
Summary: Container Signing, Verification and Storage in an OCI registry
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/rancher-government-carbide/cosign
|
||||
Source: cosign-%{version}.tar.gz
|
||||
Source: cosign-%{version}.tar
|
||||
Source1: vendor.tar.gz
|
||||
BuildRequires: golang-packaging
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
#!BuildTag: %%IMG_PREFIX%%edge-image-builder:1.1.0
|
||||
#!BuildTag: %%IMG_PREFIX%%edge-image-builder:1.1.0-%RELEASE%
|
||||
#!BuildTag: %%IMG_PREFIX%%edge-image-builder:1.1.2-rc1
|
||||
#!BuildTag: %%IMG_PREFIX%%edge-image-builder:1.1.2-rc1-%RELEASE%
|
||||
#!BuildVersion: 15.6
|
||||
ARG SLE_VERSION
|
||||
FROM registry.suse.com/bci/bci-base:$SLE_VERSION
|
||||
@@ -15,11 +15,11 @@ RUN zypper --non-interactive install --no-recommends edge-image-builder qemu-x86
|
||||
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
||||
LABEL org.opencontainers.image.title="SLE edge-image-builder Container Image"
|
||||
LABEL org.opencontainers.image.description="edge-image-builder based on the SLE Base Container Image."
|
||||
LABEL org.opencontainers.image.version="1.1.0"
|
||||
LABEL org.opencontainers.image.version="1.1.2-rc1"
|
||||
LABEL org.opencontainers.image.url="https://www.suse.com/products/server/"
|
||||
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%edge-image-builder:1.1.0-%RELEASE%"
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%edge-image-builder:1.1.2-rc1-%RELEASE%"
|
||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||
|
@@ -7,10 +7,14 @@
|
||||
<param name="eval">IMG_REPO=$(rpm --macros=/root/.rpmmacros -E %img_repo)</param>
|
||||
<param name="var">IMG_REPO</param>
|
||||
<param name="file">artifacts.yaml</param>
|
||||
<param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
|
||||
<param name="var">IMG_PREFIX</param>
|
||||
<param name="eval">CHART_REPO=$(rpm --macros=/root/.rpmmacros -E %chart_repo)</param>
|
||||
<param name="var">CHART_REPO</param>
|
||||
<param name="eval">SUPPORT_LEVEL=$(rpm --macros=/root/.rpmmacros -E %support_level)</param>
|
||||
<param name="var">SUPPORT_LEVEL</param>
|
||||
<param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param>
|
||||
<param name="var">CHART_MAJOR</param>
|
||||
</service>
|
||||
</services>
|
||||
|
||||
|
@@ -1,11 +1,11 @@
|
||||
metallb:
|
||||
chart: metallb-chart
|
||||
repository: %%CHART_REPO%%/3.1
|
||||
version: 0.14.9
|
||||
repository: "%%CHART_REPO%%/%%IMG_PREFIX%%"
|
||||
version: "%%CHART_MAJOR%%.0.1+up0.14.9"
|
||||
endpoint-copier-operator:
|
||||
chart: endpoint-copier-operator-chart
|
||||
repository: %%CHART_REPO%%/3.1
|
||||
version: 0.2.1
|
||||
repository: "%%CHART_REPO%%/%%IMG_PREFIX%%"
|
||||
version: "%%CHART_MAJOR%%.0.0+up0.2.1"
|
||||
kubernetes:
|
||||
k3s:
|
||||
selinuxPackage: k3s-selinux-1.6-1.slemicro.noarch
|
||||
@@ -13,4 +13,3 @@ kubernetes:
|
||||
rke2:
|
||||
selinuxPackage: rke2-selinux
|
||||
selinuxRepository: https://rpm.rancher.io/rke2/stable/common/slemicro/noarch
|
||||
|
||||
|
@@ -1,18 +1,19 @@
|
||||
<services>
|
||||
<service name="obs_scm">
|
||||
<param name="url">https://github.com/suse-edge/edge-image-builder.git</param>
|
||||
<param name="versionformat">@PARENT_TAG@</param>
|
||||
<param name="scm">git</param>
|
||||
<param name="exclude">.git</param>
|
||||
<param name="revision">v1.1.0</param>
|
||||
<param name="revision">v1.1.2-rc1</param>
|
||||
<!-- Uncomment and set this For Pre-Release Version -->
|
||||
<param name="version">1.1.2~rc0</param>
|
||||
<!-- Uncomment and this for regular version -->
|
||||
<!-- <param name="versionformat">@PARENT_TAG@</param> -->
|
||||
<param name="versionrewrite-pattern">v(\d+).(\d+).(\d+)</param>
|
||||
<param name="versionrewrite-replacement">\1.\2.\3</param>
|
||||
<param name="changesgenerate">enable</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="tar" />
|
||||
<service mode="buildtime" name="recompress">
|
||||
<param name="file">*.tar</param>
|
||||
<param name="compression">gz</param>
|
||||
<service mode="buildtime" name="tar">
|
||||
<param name="obsinfo">edge-image-builder.obsinfo</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="set_version" />
|
||||
<service name="go_modules">
|
||||
|
@@ -17,12 +17,12 @@
|
||||
|
||||
|
||||
Name: edge-image-builder
|
||||
Version: 1.1.0
|
||||
Version: 1.1.2~rc1
|
||||
Release: 0
|
||||
Summary: Edge Image Builder
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/suse-edge/edge-image-builder
|
||||
Source: edge-image-builder-%{version}.tar.gz
|
||||
Source: edge-image-builder-%{version}.tar
|
||||
Source1: vendor.tar.gz
|
||||
BuildRequires: golang(API) go1.22
|
||||
BuildRequires: golang-packaging
|
||||
|
@@ -1,8 +1,8 @@
|
||||
#!BuildTag: %%IMG_PREFIX%%endpoint-copier-operator-chart:0.2.1
|
||||
#!BuildTag: %%IMG_PREFIX%%endpoint-copier-operator-chart:0.2.1-%RELEASE%
|
||||
#!BuildTag: %%IMG_PREFIX%%endpoint-copier-operator-chart:%%CHART_MAJOR%%.0.0_up0.2.1
|
||||
#!BuildTag: %%IMG_PREFIX%%endpoint-copier-operator-chart:%%CHART_MAJOR%%.0.0_up0.2.1-%RELEASE%
|
||||
apiVersion: v2
|
||||
appVersion: v0.2.0
|
||||
description: A Helm chart for Kubernetes
|
||||
name: endpoint-copier-operator
|
||||
type: application
|
||||
version: 0.2.1
|
||||
version: "%%CHART_MAJOR%%.0.0+up0.2.1"
|
||||
|
@@ -11,5 +11,7 @@
|
||||
<param name="file">Chart.yaml</param>
|
||||
<param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
|
||||
<param name="var">IMG_PREFIX</param>
|
||||
<param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param>
|
||||
<param name="var">CHART_MAJOR</param>
|
||||
</service>
|
||||
</services>
|
||||
|
@@ -12,10 +12,8 @@
|
||||
<param name="without-version">yes</param>
|
||||
<param name="versionrewrite-replacement">\1</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="tar" />
|
||||
<service mode="buildtime" name="recompress">
|
||||
<param name="file">*.tar</param>
|
||||
<param name="compression">gz</param>
|
||||
<service mode="buildtime" name="tar">
|
||||
<param name="obsinfo">endpoint-copier-operator.obsinfo</param>
|
||||
</service>
|
||||
<service name="go_modules">
|
||||
</service>
|
||||
|
@@ -22,7 +22,7 @@ Release: 0.2.0
|
||||
Summary: Implements a Kubernetes API for copying endpoint resources
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/suse-edge/endpoint-copier-operator
|
||||
Source: endpoint-copier-operator-%{version}.tar.gz
|
||||
Source: endpoint-copier-operator-%{version}.tar
|
||||
Source1: vendor.tar.gz
|
||||
BuildRequires: golang(API) = 1.20
|
||||
ExcludeArch: s390
|
||||
|
58
frr-image/Dockerfile
Normal file
58
frr-image/Dockerfile
Normal file
@@ -0,0 +1,58 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
#!BuildTag: %%IMG_PREFIX%%frr:8.4
|
||||
#!BuildTag: %%IMG_PREFIX%%frr:8.4-%RELEASE%
|
||||
#!BuildVersion: 15.5
|
||||
ARG SLE_VERSION
|
||||
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
||||
|
||||
FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base
|
||||
COPY --from=micro / /installroot/
|
||||
RUN zypper --installroot /installroot --non-interactive install --no-recommends tcpdump libpcap-devel iproute2 iputils strace socat frr python3 catatonit sed util-linux; zypper -n clean; rm -rf /var/log/*
|
||||
|
||||
FROM micro AS final
|
||||
# Define labels according to https://en.opensuse.org/Building_derived_containers
|
||||
# labelprefix=com.suse.application.frr
|
||||
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
||||
LABEL org.opencontainers.image.title="FRR Container Image"
|
||||
LABEL org.opencontainers.image.description="frr based on the SLE Base Container Image."
|
||||
LABEL org.opencontainers.image.version="8.4"
|
||||
LABEL org.opencontainers.image.url="https://www.suse.com/products/server/"
|
||||
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%frr:8.4-%RELEASE%"
|
||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||
LABEL com.suse.lifecycle-url="https://www.suse.com/lifecycle"
|
||||
LABEL com.suse.image-type="application"
|
||||
LABEL com.suse.release-stage="released"
|
||||
# endlabelprefix
|
||||
|
||||
COPY --from=base /installroot /
|
||||
|
||||
#Install frr
|
||||
USER root
|
||||
|
||||
ENV PYTHONDONTWRITEBYTECODE yes
|
||||
|
||||
# frr.sh is the entry point. This script examines environment
|
||||
# variables to direct operation and configure ovn
|
||||
ADD frr.sh /root/
|
||||
ADD daemons /etc/frr
|
||||
ADD frr.conf /etc/frr
|
||||
ADD vtysh.conf /etc/frr
|
||||
|
||||
RUN chown frr:frr /etc/frr/daemons /etc/frr/frr.conf
|
||||
|
||||
RUN ln -s /usr/bin/catatonit /sbin/tini
|
||||
RUN usermod -a -G frrvty frr
|
||||
|
||||
COPY docker-start /usr/libexec/frr/docker-start
|
||||
RUN cp -r /usr/libexec/frr /usr/lib/ # required because of the different path on rhel
|
||||
|
||||
WORKDIR /root
|
||||
ENTRYPOINT ["/sbin/tini", "--"]
|
||||
|
||||
COPY docker-start /usr/lib/frr/docker-start
|
||||
RUN chmod +x /usr/lib/frr/docker-start
|
||||
CMD ["/usr/lib/frr/docker-start"]
|
@@ -1,12 +1,6 @@
|
||||
<services>
|
||||
<service mode="buildtime" name="kiwi_metainfo_helper"/>
|
||||
<service mode="buildtime" name="docker_label_helper"/>
|
||||
<service name="replace_using_package_version" mode="buildtime">
|
||||
<param name="file">Dockerfile</param>
|
||||
<param name="regex">%%ip-address-manager_version%%</param>
|
||||
<param name="package">ip-address-manager</param>
|
||||
<param name="parse-version">patch</param>
|
||||
</service>
|
||||
<service name="replace_using_env" mode="buildtime">
|
||||
<param name="file">Dockerfile</param>
|
||||
<param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
|
82
frr-image/daemons
Normal file
82
frr-image/daemons
Normal file
@@ -0,0 +1,82 @@
|
||||
# This file tells the frr package which daemons to start.
|
||||
#
|
||||
# Entries are in the format: <daemon>=(yes|no|priority)
|
||||
# 0, "no" = disabled
|
||||
# 1, "yes" = highest priority
|
||||
# 2 .. 10 = lower priorities
|
||||
#
|
||||
# For daemons which support multiple instances, a 2nd line listing
|
||||
# the instances can be added. Eg for ospfd:
|
||||
# ospfd=yes
|
||||
# ospfd_instances="1,2"
|
||||
#
|
||||
# Priorities were suggested by Dancer <dancer@zeor.simegen.com>.
|
||||
# They're used to start the FRR daemons in more than one step
|
||||
# (for example start one or two at network initialization and the
|
||||
# rest later). The number of FRR daemons being small, priorities
|
||||
# must be between 1 and 9, inclusive (or the initscript has to be
|
||||
# changed). /etc/init.d/frr then can be started as
|
||||
#
|
||||
# /etc/init.d/frr <start|stop|restart|<priority>>
|
||||
#
|
||||
# where priority 0 is the same as 'stop', priority 10 or 'start'
|
||||
# means 'start all'
|
||||
#
|
||||
# Sample configurations for these daemons can be found in
|
||||
# /usr/share/doc/frr/examples/.
|
||||
#
|
||||
# ATTENTION:
|
||||
#
|
||||
# When activation a daemon at the first time, a config file, even if it is
|
||||
# empty, has to be present *and* be owned by the user and group "frr", else
|
||||
# the daemon will not be started by /etc/init.d/frr. The permissions should
|
||||
# be u=rw,g=r,o=.
|
||||
# When using "vtysh" such a config file is also needed. It should be owned by
|
||||
# group "frrvty" and set to ug=rw,o= though. Check /etc/pam.d/frr, too.
|
||||
#
|
||||
watchfrr_enable=yes
|
||||
watchfrr_options="-r '/usr/lib/frr/frr restart %s' -s '/usr/lib/frr/frr start %s' -k '/usr/lib/frr/frr stop %s'"
|
||||
#
|
||||
zebra=yes
|
||||
bgpd=yes
|
||||
ospfd=no
|
||||
ospf6d=no
|
||||
ripd=no
|
||||
ripngd=no
|
||||
isisd=no
|
||||
pimd=no
|
||||
nhrpd=no
|
||||
eigrpd=no
|
||||
sharpd=no
|
||||
pbrd=no
|
||||
staticd=yes
|
||||
bfdd=yes
|
||||
fabricd=no
|
||||
|
||||
#
|
||||
# Command line options for the daemons
|
||||
#
|
||||
zebra_options=("-A 127.0.0.1")
|
||||
bgpd_options=("-A 127.0.0.1")
|
||||
ospfd_options=("-A 127.0.0.1")
|
||||
ospf6d_options=("-A ::1")
|
||||
ripd_options=("-A 127.0.0.1")
|
||||
ripngd_options=("-A ::1")
|
||||
isisd_options=("-A 127.0.0.1")
|
||||
pimd_options=("-A 127.0.0.1")
|
||||
nhrpd_options=("-A 127.0.0.1")
|
||||
eigrpd_options=("-A 127.0.0.1")
|
||||
sharpd_options=("-A 127.0.0.1")
|
||||
pbrd_options=("-A 127.0.0.1")
|
||||
staticd_options=("-A 127.0.0.1")
|
||||
bfdd_options=("-A 127.0.0.1")
|
||||
fabricd_options=("-A 127.0.0.1")
|
||||
|
||||
#
|
||||
# If the vtysh_enable is yes, then the unified config is read
|
||||
# and applied if it exists. If no unified frr.conf exists
|
||||
# then the per-daemon <daemon>.conf files are used)
|
||||
# If vtysh_enable is no or non-existant, the frr.conf is ignored.
|
||||
# it is highly suggested to have this set to yes
|
||||
vtysh_enable=yes
|
||||
|
4
frr-image/docker-start
Normal file
4
frr-image/docker-start
Normal file
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
source /usr/lib/frr/frrcommon.sh
|
||||
/usr/lib/frr/watchfrr $(daemon_list)
|
53
frr-image/frr.conf
Normal file
53
frr-image/frr.conf
Normal file
@@ -0,0 +1,53 @@
|
||||
frr defaults traditional
|
||||
log file /var/log/frr/frr.log
|
||||
log syslog informational
|
||||
log stdout debugging
|
||||
ipv6 forwarding
|
||||
service integrated-vtysh-config
|
||||
!
|
||||
debug bgp updates in
|
||||
debug bgp updates out
|
||||
debug bgp zebra
|
||||
!
|
||||
interface eth0
|
||||
no ipv6 nd suppress-ra
|
||||
ipv6 nd ra-interval 10
|
||||
!
|
||||
router bgp OCPASN
|
||||
bgp router-id OCPROUTERID
|
||||
bgp bestpath as-path multipath-relax
|
||||
bgp bestpath compare-routerid
|
||||
!
|
||||
neighbor OCPnodes peer-group
|
||||
neighbor OCPnodes description Internal OCP Nodes
|
||||
neighbor OCPnodes remote-as OCPASN
|
||||
neighbor OCPnodes bfd
|
||||
neighbor OCPnodes capability extended-nexthop
|
||||
!neighbor eth0 interface peer-group OCPnodes
|
||||
!neighbor OCPPEER remote-as OCPASN peer-group OCPnodes
|
||||
neighbor OCPPEER peer-group OCPnodes
|
||||
!
|
||||
address-family ipv4 unicast
|
||||
redistribute connected
|
||||
neighbor OCPnodes activate
|
||||
exit-address-family
|
||||
!
|
||||
address-family ipv6 unicast
|
||||
redistribute connected
|
||||
neighbor OCPnodes activate
|
||||
neighbor OCPnodes nexthop-local unchanged
|
||||
exit-address-family
|
||||
!
|
||||
!
|
||||
bfd
|
||||
peer OCPPEER vrf default interface eth0
|
||||
receive-interval 2000
|
||||
transmit-interval 2000
|
||||
echo-mode
|
||||
echo-interval 3000
|
||||
no shutdown
|
||||
exit
|
||||
!
|
||||
line vty
|
||||
!
|
||||
|
124
frr-image/frr.sh
Normal file
124
frr-image/frr.sh
Normal file
@@ -0,0 +1,124 @@
|
||||
#!/bin/bash
|
||||
#set -euo pipefail
|
||||
|
||||
# Enable verbose shell output if FRR_SH_VERBOSE is set to 'true'
|
||||
if [[ "${FRR_SH_VERBOSE:-}" == "true" ]]; then
|
||||
set -x
|
||||
fi
|
||||
|
||||
# The argument to the command is the operation to be performed
|
||||
# frr-node display display_env
|
||||
# a cmd must be provided, there is no default
|
||||
cmd=${1:-""}
|
||||
|
||||
# The frr user id, by default it is going to be frr:frr
|
||||
frr_user_id=${FRR_USER_ID:-""}
|
||||
|
||||
# frr options
|
||||
frr_options=${FRR_OPTIONS:-""}
|
||||
|
||||
# This script is the entrypoint to the image.
|
||||
# frr.sh version (update when API between daemonset and script changes - v.x.y)
|
||||
frr_version="3"
|
||||
|
||||
# The daemonset version must be compatible with this script.
|
||||
# The default when FRR_DAEMONSET_VERSION is not set is version 3
|
||||
frr_daemonset_version=${FRR_DAEMONSET_VERSION:-"3"}
|
||||
|
||||
# hostname is the host's hostname when using host networking,
|
||||
# This is useful on the master
|
||||
# otherwise it is the container ID (useful for debugging).
|
||||
frr_pod_host=${K8S_NODE:-$(hostname)}
|
||||
|
||||
# The ovs user id, by default it is going to be root:root
|
||||
frr_user_id=${FRR_USER_ID:-""}
|
||||
|
||||
# frr options
|
||||
frr_options=${FRR_OPTIONS:-""}
|
||||
|
||||
# frr.conf variables
|
||||
ocp_asn=${OCPASN:-65000}
|
||||
ocp_routerid=${OCPROUTERID:-"10.10.10.1"}
|
||||
ocp_peer=${OCPPEER:-"10.10.10.1"}
|
||||
|
||||
FRR_ETCDIR=/etc/frr
|
||||
FRR_RUNDIR=/var/run/frr
|
||||
FRR_LOGDIR=/var/log/frr
|
||||
|
||||
# =========================================
|
||||
|
||||
setup_frr_permissions() {
|
||||
chown -R ${frr_user_id} ${FRR_RUNDIR}
|
||||
chown -R ${frr_user_id} ${FRR_LOGDIR}
|
||||
chown -R ${frr_user_id} ${FRR_ETCDIR}
|
||||
}
|
||||
|
||||
# =========================================
|
||||
|
||||
display_version() {
|
||||
echo " =================== hostname: ${frr_pod_host}"
|
||||
echo " =================== daemonset version ${frr_daemonset_version}"
|
||||
if [[ -f /root/git_info ]]; then
|
||||
disp_ver=$(cat /root/git_info)
|
||||
return
|
||||
fi
|
||||
}
|
||||
|
||||
display_env() {
|
||||
echo FRR_USER_ID ${frr_user_id}
|
||||
echo FRR_OPTIONS ${frr_options}
|
||||
echo frr.sh version ${frr_version}
|
||||
echo ocp_asn ${ocp_asn}
|
||||
echo ocp_routerid ${ocp_routerid}
|
||||
echo ocp_peer ${ocp_peer}
|
||||
}
|
||||
|
||||
# frr-node - all nodes
|
||||
frr-node() {
|
||||
trap 'kill $(jobs -p) ; exit 0' TERM
|
||||
rm -f ${FRR_RUNDIR}/frr.pid
|
||||
echo "=============== frr-node ========== update frr.conf"
|
||||
sed -i "s/OCPASN/$ocp_asn/" /etc/frr/frr.conf
|
||||
sed -i "s/OCPPEER/$ocp_peer/" /etc/frr/frr.conf
|
||||
sed -i "s/OCPROUTERID/$ocp_routerid/" /etc/frr/frr.conf
|
||||
|
||||
#chown -R frr:frr /etc/frr
|
||||
chown -R frr:frr ${FRR_RUNDIR}
|
||||
echo "=============== frr-node ========== starting"
|
||||
# /usr/lib/frr/frrinit.sh start
|
||||
# bash -x /usr/lib/frr/frrinit.sh start
|
||||
bash -x
|
||||
/usr/lib/frr/frrinit.sh start
|
||||
frrResult=$?
|
||||
echo "=============== frrinit result is ${frrResult} "
|
||||
|
||||
# Sleep forever
|
||||
exec tail -f /dev/null
|
||||
}
|
||||
|
||||
echo "================== frr.sh --- version: ${frr_version} ================"
|
||||
|
||||
display_version
|
||||
|
||||
display_env
|
||||
|
||||
case ${cmd} in
|
||||
"frr-node")
|
||||
frr-node
|
||||
;;
|
||||
"display_env")
|
||||
display_env
|
||||
exit 0
|
||||
;;
|
||||
"display")
|
||||
display
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "invalid command ${cmd}"
|
||||
echo "valid v3 commands: frr-node display_env display "
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
0
frr-image/vtysh.conf
Normal file
0
frr-image/vtysh.conf
Normal file
@@ -1,26 +1,25 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#!BuildTag: %%IMG_PREFIX%%cluster-api-controller:v%%cluster-api_version%%
|
||||
#!BuildTag: %%IMG_PREFIX%%cluster-api-controller:%%cluster-api_version%%
|
||||
#!BuildTag: %%IMG_PREFIX%%cluster-api-controller:%%cluster-api_version%%-%RELEASE%
|
||||
#!BuildTag: %%IMG_PREFIX%%frr-k8s:v%%frr-k8s_version%%
|
||||
#!BuildTag: %%IMG_PREFIX%%frr-k8s:v%%frr-k8s_version%%-%RELEASE%
|
||||
#!BuildVersion: 15.6
|
||||
ARG SLE_VERSION
|
||||
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
||||
|
||||
FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base
|
||||
COPY --from=micro / /installroot/
|
||||
RUN zypper --installroot /installroot --non-interactive install --no-recommends cluster-api shadow; zypper -n clean; rm -rf /var/log/*
|
||||
RUN zypper --installroot /installroot --non-interactive install --no-recommends frr-k8s; zypper -n clean; rm -rf /var/log/*
|
||||
|
||||
FROM micro AS final
|
||||
# Define labels according to https://en.opensuse.org/Building_derived_containers
|
||||
# labelprefix=com.suse.application.cluster-api
|
||||
# labelprefix=com.suse.application.endpoint-copier-operator
|
||||
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
||||
LABEL org.opencontainers.image.title="SLE cluster-api Container Image"
|
||||
LABEL org.opencontainers.image.description="cluster-api based on the SLE Base Container Image."
|
||||
LABEL org.opencontainers.image.version="%%cluster-api_version%%"
|
||||
LABEL org.opencontainers.image.title="SLE frr-k8s Container Image"
|
||||
LABEL org.opencontainers.image.description="frr-k8s based on the SLE Base Container Image."
|
||||
LABEL org.opencontainers.image.version="%%frr-k8s_version%%"
|
||||
LABEL org.opencontainers.image.url="https://www.suse.com/products/server/"
|
||||
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%cluster-api:%%cluster-api_version%%-%RELEASE%"
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%frr-k8s:v%%frr-k8s_version%%-%RELEASE%"
|
||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||
@@ -29,8 +28,6 @@ LABEL com.suse.image-type="application"
|
||||
LABEL com.suse.release-stage="released"
|
||||
# endlabelprefix
|
||||
|
||||
#Install frr-k8s
|
||||
COPY --from=base /installroot /
|
||||
RUN mv /usr/bin/cluster-api-controller /manager
|
||||
# Use uid of nonroot user (65532) because kubernetes expects numeric user when applying pod security policies
|
||||
USER 65532
|
||||
ENTRYPOINT [ "/manager" ]
|
||||
ENTRYPOINT ["/frr-k8s"]
|
@@ -3,8 +3,8 @@
|
||||
<service mode="buildtime" name="docker_label_helper"/>
|
||||
<service name="replace_using_package_version" mode="buildtime">
|
||||
<param name="file">Dockerfile</param>
|
||||
<param name="regex">%%cluster-api_version%%</param>
|
||||
<param name="package">cluster-api</param>
|
||||
<param name="regex">%%frr-k8s_version%%</param>
|
||||
<param name="package">frr-k8s</param>
|
||||
<param name="parse-version">patch</param>
|
||||
</service>
|
||||
<service name="replace_using_env" mode="buildtime">
|
@@ -12,10 +12,8 @@
|
||||
<param name="without-version">yes</param>
|
||||
<param name="versionrewrite-replacement">\1</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="tar" />
|
||||
<service mode="buildtime" name="recompress">
|
||||
<param name="file">*.tar</param>
|
||||
<param name="compression">gz</param>
|
||||
<service mode="buildtime" name="tar">
|
||||
<param name="obsinfo">frr-k8s.obsinfo</param>
|
||||
</service>
|
||||
<service name="go_modules">
|
||||
</service>
|
||||
|
@@ -22,7 +22,7 @@ Release: 0.0.14
|
||||
Summary: A kubernetes based daemonset that exposes a subset of the FRR API in a kubernetes compliant manner.
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/metallb/frr-k8s
|
||||
Source: frr-k8s-%{version}.tar.gz
|
||||
Source: frr-k8s-%{version}.tar
|
||||
Source1: vendor.tar.gz
|
||||
BuildRequires: golang(API) = 1.22
|
||||
ExcludeArch: s390
|
||||
|
@@ -8,10 +8,8 @@
|
||||
<param name="versionrewrite-pattern">v(.*)</param>
|
||||
<param name="changesgenerate">enable</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="tar" />
|
||||
<service mode="buildtime" name="recompress">
|
||||
<param name="file">*.tar</param>
|
||||
<param name="compression">gz</param>
|
||||
<service mode="buildtime" name="tar">
|
||||
<param name="obsinfo">hauler.obsinfo</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="set_version" />
|
||||
<service name="go_modules">
|
||||
|
@@ -23,7 +23,7 @@ Release: 0
|
||||
Summary: Airgap Swiss Army Knife
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/hauler-dev/hauler
|
||||
Source: hauler-%{version}.tar.gz
|
||||
Source: hauler-%{version}.tar
|
||||
Source1: vendor.tar.gz
|
||||
BuildRequires: golang-packaging
|
||||
BuildRequires: cosign
|
||||
|
@@ -1,36 +0,0 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#!BuildTag: %%IMG_PREFIX%%ip-address-manager:v%%ip-address-manager_version%%
|
||||
#!BuildTag: %%IMG_PREFIX%%ip-address-manager:%%ip-address-manager_version%%
|
||||
#!BuildTag: %%IMG_PREFIX%%ip-address-manager:%%ip-address-manager_version%%-%RELEASE%
|
||||
#!BuildVersion: 15.6
|
||||
ARG SLE_VERSION
|
||||
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
||||
|
||||
FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base
|
||||
COPY --from=micro / /installroot/
|
||||
RUN zypper --installroot /installroot --non-interactive install --no-recommends ip-address-manager shadow; zypper -n clean; rm -rf /var/log/*
|
||||
|
||||
FROM micro AS final
|
||||
# Define labels according to https://en.opensuse.org/Building_derived_containers
|
||||
# labelprefix=com.suse.application.ip-address-manager
|
||||
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
||||
LABEL org.opencontainers.image.title="SLE ip-address-manager Container Image"
|
||||
LABEL org.opencontainers.image.description="ip-address-manager based on the SLE Base Container Image."
|
||||
LABEL org.opencontainers.image.version="%%ip-address-manager_version%%"
|
||||
LABEL org.opencontainers.image.url="https://www.suse.com/products/server/"
|
||||
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ip-address-manager:%%ip-address-manager_version%%-%RELEASE%"
|
||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||
LABEL com.suse.lifecycle-url="https://www.suse.com/lifecycle"
|
||||
LABEL com.suse.image-type="application"
|
||||
LABEL com.suse.release-stage="released"
|
||||
# endlabelprefix
|
||||
|
||||
COPY --from=base /installroot /
|
||||
RUN mv /usr/bin/ip-address-manager /manager
|
||||
# Use uid of nonroot user (65532) because kubernetes expects numeric user when applying pod security policies
|
||||
USER 65532
|
||||
ENTRYPOINT [ "/manager" ]
|
@@ -1,23 +0,0 @@
|
||||
<services>
|
||||
<service name="obs_scm">
|
||||
<param name="url">https://github.com/metal3-io/ip-address-manager</param>
|
||||
<param name="scm">git</param>
|
||||
<param name="revision">v1.8.1</param>
|
||||
<param name="version">_auto_</param>
|
||||
<param name="versionformat">@PARENT_TAG@</param>
|
||||
<param name="changesgenerate">enable</param>
|
||||
<param name="changesauthor">steven.hardy@suse.com</param>
|
||||
<param name="match-tag">v*</param>
|
||||
<param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param>
|
||||
<param name="without-version">yes</param>
|
||||
<param name="versionrewrite-replacement">\1</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="tar" />
|
||||
<service mode="buildtime" name="recompress">
|
||||
<param name="file">*.tar</param>
|
||||
<param name="compression">gz</param>
|
||||
</service>
|
||||
<service name="go_modules">
|
||||
</service>
|
||||
<service mode="buildtime" name="set_version" />
|
||||
</services>
|
@@ -1,51 +0,0 @@
|
||||
#
|
||||
# spec file for package ip-address-manager
|
||||
#
|
||||
# Copyright (c) 2023 SUSE LLC
|
||||
#
|
||||
# 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 https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
Name: ip-address-manager
|
||||
Version: 1.8.1
|
||||
Release: 0
|
||||
Summary: Metal3 IPAM controller
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/metal3-io/ip-address-manager
|
||||
Source: ip-address-manager-%{version}.tar.gz
|
||||
Source1: vendor.tar.gz
|
||||
BuildRequires: golang(API) = 1.22
|
||||
ExcludeArch: s390
|
||||
ExcludeArch: %{ix86}
|
||||
|
||||
%description
|
||||
|
||||
Metal3 IPAM controller
|
||||
|
||||
%prep
|
||||
%autosetup -a1 -n ip-address-manager-%{version}
|
||||
|
||||
%build
|
||||
go build \
|
||||
-mod=vendor \
|
||||
-buildmode=pie \
|
||||
|
||||
%install
|
||||
install -D -m0755 ip-address-manager %{buildroot}%{_bindir}/ip-address-manager
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%doc README.md
|
||||
%{_bindir}/ip-address-manager
|
||||
|
||||
%changelog
|
@@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#!BuildTag: %%IMG_PREFIX%%ironic:26.1.2.0
|
||||
#!BuildTag: %%IMG_PREFIX%%ironic:26.1.2.0-%RELEASE%
|
||||
#!BuildTag: %%IMG_PREFIX%%ironic:26.1.2.3
|
||||
#!BuildTag: %%IMG_PREFIX%%ironic:26.1.2.3-%RELEASE%
|
||||
#!BuildVersion: 15.6
|
||||
|
||||
ARG SLE_VERSION
|
||||
@@ -8,7 +8,14 @@ FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
||||
|
||||
FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base
|
||||
|
||||
RUN set -euo pipefail; zypper -n in --no-recommends gcc git make xz-devel shim dosfstools mtools glibc-extra grub2-x86_64-efi grub2; zypper -n clean; rm -rf /var/log/*
|
||||
#!ArchExclusiveLine: x86_64
|
||||
RUN if [ "$(uname -m)" = "x86_64" ];then \
|
||||
zypper -n in --no-recommends gcc git make xz-devel shim dosfstools mtools glibc-extra grub2-x86_64-efi grub2; zypper -n clean; rm -rf /var/log/*; \
|
||||
fi
|
||||
#!ArchExclusiveLine: aarch64
|
||||
RUN if [ "$(uname -m)" = "aarch64" ];then \
|
||||
zypper -n rm kubic-locale-archive-2.31-10.36.noarch openssl-1_1-1.1.1l-150500.17.37.1.aarch64; zypper -n in --no-recommends gcc git make xz-devel openssl-3 mokutil shim dosfstools mtools glibc glibc-extra grub2 grub2-arm64-efi; zypper -n clean; rm -rf /var/log/* ;\
|
||||
fi
|
||||
WORKDIR /tmp
|
||||
COPY prepare-efi.sh /bin/
|
||||
RUN set -euo pipefail; chmod +x /bin/prepare-efi.sh
|
||||
@@ -16,8 +23,16 @@ RUN /bin/prepare-efi.sh
|
||||
|
||||
COPY --from=micro / /installroot/
|
||||
RUN sed -i -e 's%^# rpm.install.excludedocs = no.*%rpm.install.excludedocs = yes%g' /etc/zypp/zypp.conf
|
||||
RUN zypper --installroot /installroot --non-interactive install --no-recommends python311-devel python311 python311-pip python-dracclient python311-sushy-oem-idrac python311-proliantutils python311-sushy python3-ironicclient git curl sles-release tar gzip vim gawk dnsmasq dosfstools apache2 inotify-tools ipcalc ipmitool iproute2 procps qemu-tools sqlite3 util-linux xorriso tftp syslinux ipxe-bootimgs crudini openstack-ironic
|
||||
|
||||
#!ArchExclusiveLine: x86_64
|
||||
RUN if [ "$(uname -m)" = "x86_64" ];then \
|
||||
zypper --installroot /installroot --non-interactive install --no-recommends syslinux python311-devel python311 python311-pip python-dracclient python311-sushy-oem-idrac python311-proliantutils python311-sushy python3-ironicclient git curl sles-release tar gzip vim gawk dnsmasq dosfstools apache2 apache2-mod_wsgi inotify-tools ipcalc ipmitool iproute2 procps qemu-tools sqlite3 util-linux xorriso tftp ipxe-bootimgs python311-sushy-tools crudini openstack-ironic openstack-ironic-inspector-api; \
|
||||
fi
|
||||
#!ArchExclusiveLine: aarch64
|
||||
RUN if [ "$(uname -m)" = "aarch64" ];then \
|
||||
zypper --installroot /installroot --non-interactive install --no-recommends python311-devel python311 python311-pip python-dracclient python311-sushy-oem-idrac python311-proliantutils python311-sushy python3-ironicclient git curl sles-release tar gzip vim gawk dnsmasq dosfstools apache2 apache2-mod_wsgi inotify-tools ipcalc ipmitool iproute2 procps qemu-tools sqlite3 util-linux xorriso tftp ipxe-bootimgs python311-sushy-tools crudini openstack-ironic openstack-ironic-inspector-api; \
|
||||
fi
|
||||
|
||||
# DATABASE
|
||||
RUN mkdir -p /installroot/var/lib/ironic && \
|
||||
/installroot/usr/bin/sqlite3 /installroot/var/lib/ironic/ironic.sqlite "pragma journal_mode=wal" && \
|
||||
@@ -31,8 +46,8 @@ LABEL org.opencontainers.image.description="Openstack Ironic based on the SLE Ba
|
||||
LABEL org.opencontainers.image.url="https://www.suse.com/products/server/"
|
||||
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||
LABEL org.opencontainers.image.version="26.1.2.0"
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ironic:26.1.2.0-%RELEASE%"
|
||||
LABEL org.opencontainers.image.version="26.1.2.3"
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ironic:26.1.2.3-%RELEASE%"
|
||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||
@@ -64,7 +79,15 @@ RUN mkdir -p $GRUB_DIR
|
||||
|
||||
# IRONIC #
|
||||
RUN cp /usr/share/ipxe/undionly.kpxe /tftpboot/undionly.kpxe
|
||||
RUN cp /usr/share/ipxe/ipxe-x86_64.efi /tftpboot/ipxe.efi
|
||||
#!ArchExclusiveLine: x86_64
|
||||
RUN if [ "$(uname -m)" = "x86_64" ];then \
|
||||
cp /usr/share/ipxe/ipxe-x86_64.efi /tftpboot/ipxe.efi ;\
|
||||
fi
|
||||
#!ArchExclusiveLine: x86_64
|
||||
RUN if [ "$(uname -m)" = "aarch64" ]; then\
|
||||
cp /usr/share/ipxe/snp-arm64.efi /tftpboot/ipxe.efi; cp /usr/share/ipxe/snp-arm64.efi /tftpboot/snp-arm64.efi; cp /usr/share/ipxe/snp-arm64.efi /tftpboot/snp.efi ;\
|
||||
fi
|
||||
|
||||
COPY --from=base /tmp/esp.img /tmp/uefi_esp.img
|
||||
|
||||
COPY ironic.conf.j2 /etc/ironic/
|
||||
|
@@ -10,17 +10,15 @@ Listen {{ env.VMEDIA_TLS_PORT }}
|
||||
SSLCertificateFile {{ env.IRONIC_VMEDIA_CERT_FILE }}
|
||||
SSLCertificateKeyFile {{ env.IRONIC_VMEDIA_KEY_FILE }}
|
||||
|
||||
<Directory ~ "/shared/html">
|
||||
Order deny,allow
|
||||
deny from all
|
||||
<Directory "/shared">
|
||||
AllowOverride None
|
||||
Require all granted
|
||||
</Directory>
|
||||
<Directory ~ "/shared/html/(redfish|ilo)/">
|
||||
Order allow,deny
|
||||
allow from all
|
||||
</Directory>
|
||||
<Directory ~ "/shared/html/images/">
|
||||
Order allow,deny
|
||||
allow from all
|
||||
|
||||
<Directory "/shared/html">
|
||||
Options Indexes FollowSymLinks
|
||||
AllowOverride None
|
||||
Require all granted
|
||||
</Directory>
|
||||
</VirtualHost>
|
||||
|
||||
|
@@ -83,7 +83,7 @@ send_sensor_data = {{ env.SEND_SENSOR_DATA }}
|
||||
# Power state is checked every 60 seconds and BMC activity should
|
||||
# be avoided more often than once every sixty seconds.
|
||||
send_sensor_data_interval = 160
|
||||
bootloader = http://{{ env.IRONIC_URL_HOST }}:{{ env.HTTP_PORT }}/uefi_esp.img
|
||||
bootloader = {{ env.IRONIC_BOOT_BASE_URL }}/uefi_esp.img
|
||||
verify_step_priority_override = management.clear_job_queue:90
|
||||
# We don't use this feature, and it creates an additional load on the database
|
||||
node_history = False
|
||||
@@ -112,7 +112,7 @@ default_boot_option = local
|
||||
erase_devices_metadata_priority = 10
|
||||
erase_devices_priority = 0
|
||||
http_root = /shared/html/
|
||||
http_url = http://{{ env.IRONIC_URL_HOST }}:{{ env.HTTP_PORT }}
|
||||
http_url = {{ env.IRONIC_BOOT_BASE_URL }}
|
||||
fast_track = {{ env.IRONIC_FAST_TRACK }}
|
||||
{% if env.IRONIC_BOOT_ISO_SOURCE %}
|
||||
ramdisk_image_download_source = {{ env.IRONIC_BOOT_ISO_SOURCE }}
|
||||
|
@@ -6,22 +6,37 @@ ARCH=$(uname -m)
|
||||
DEST=${2:-/tmp/esp.img}
|
||||
OS=${1:-sles}
|
||||
|
||||
BOOTEFI=BOOTX64.efi
|
||||
GRUBEFI=grubx64.efi
|
||||
if [ $ARCH = "aarch64" ]; then
|
||||
BOOTEFI=BOOTAA64.EFI
|
||||
GRUBEFI=grubaa64.efi
|
||||
else
|
||||
BOOTEFI=BOOTX64.efi
|
||||
GRUBEFI=grubx64.efi
|
||||
fi
|
||||
|
||||
dd bs=1024 count=6400 if=/dev/zero of=$DEST
|
||||
mkfs.msdos -F 12 -n 'ESP_IMAGE' $DEST
|
||||
|
||||
mkdir -p /boot/efi/EFI/BOOT
|
||||
cp -L /usr/lib64/efi/shim.efi /boot/efi/EFI/BOOT/$BOOTEFI
|
||||
mkdir -p /boot/efi/EFI/$OS
|
||||
#cp /usr/share/grub2/x86_64-efi/grub.efi /boot/efi/EFI/$OS/$GRUBEFI
|
||||
cp /usr/share/grub2/x86_64-efi/grub.efi /boot/efi/EFI/$OS/grub.efi
|
||||
if [ $ARCH = "aarch64" ]; then
|
||||
cp -L /usr/share/efi/aarch64/shim.efi /boot/efi/EFI/BOOT/$BOOTEFI
|
||||
cp -L /usr/share/efi/aarch64/grub.efi /boot/efi/EFI/BOOT/grub.efi
|
||||
cp /usr/share/grub2/arm64-efi/grub.efi /boot/efi/EFI/$OS/grubaa64.efi
|
||||
else
|
||||
cp -L /usr/lib64/efi/shim.efi /boot/efi/EFI/BOOT/$BOOTEFI
|
||||
#cp /usr/share/grub2/x86_64-efi/grub.efi /boot/efi/EFI/$OS/$GRUBEFI
|
||||
cp /usr/share/grub2/x86_64-efi/grub.efi /boot/efi/EFI/$OS/grub.efi
|
||||
fi
|
||||
|
||||
mmd -i $DEST EFI
|
||||
mmd -i $DEST EFI/BOOT
|
||||
mcopy -i $DEST -v /boot/efi/EFI/BOOT/$BOOTEFI ::EFI/BOOT
|
||||
#mcopy -i $DEST -v /boot/efi/EFI/$OS/$GRUBEFI ::EFI/BOOT
|
||||
mcopy -i $DEST -v /boot/efi/EFI/$OS/grub.efi ::EFI/BOOT
|
||||
if [ $ARCH = "aarch64" ]; then
|
||||
mcopy -i $DEST -v /boot/efi/EFI/BOOT/grub.efi ::EFI/BOOT
|
||||
mcopy -i $DEST -v /boot/efi/EFI/$OS/$GRUBEFI ::EFI/BOOT
|
||||
else
|
||||
mcopy -i $DEST -v /boot/efi/EFI/$OS/grub.efi ::EFI/BOOT
|
||||
fi
|
||||
mdir -i $DEST ::EFI/BOOT;
|
||||
|
||||
|
@@ -3,6 +3,14 @@
|
||||
# Ramdisk logs path
|
||||
LOG_DIR="/shared/log/ironic/deploy"
|
||||
|
||||
# The ironic container creates the directory, wait for
|
||||
# it to exist before running inotifywait or it can fail causing
|
||||
# a spurious restart
|
||||
while [ ! -d "${LOG_DIR}" ]; do
|
||||
echo "Waiting for ${LOG_DIR}"
|
||||
sleep 5
|
||||
done
|
||||
|
||||
inotifywait -m "${LOG_DIR}" -e close_write |
|
||||
while read -r path _action file; do
|
||||
echo "************ Contents of ${path}/${file} ramdisk log file bundle **************"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader:3.0.0
|
||||
#!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader:3.0.0-%RELEASE%
|
||||
#!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader:3.0.1
|
||||
#!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader:3.0.1-%RELEASE%
|
||||
#!BuildVersion: 15.6
|
||||
ARG SLE_VERSION
|
||||
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
||||
@@ -8,7 +8,14 @@ FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
||||
FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base
|
||||
COPY --from=micro / /installroot/
|
||||
RUN sed -i -e 's%^# rpm.install.excludedocs = no.*%rpm.install.excludedocs = yes%g' /etc/zypp/zypp.conf
|
||||
RUN zypper --installroot /installroot --non-interactive install --no-recommends ironic-ipa-ramdisk-x86_64 python311-devel python311 python311-pip tar gawk git curl xz fakeroot shadow sed cpio; zypper -n clean; rm -rf /var/log/*
|
||||
#!ArchExclusiveLine: x86_64
|
||||
RUN if [ "$(uname -m)" = "x86_64" ];then \
|
||||
zypper --installroot /installroot --non-interactive install --no-recommends ironic-ipa-ramdisk-x86_64 python311-devel python311 python311-pip tar gawk git curl xz fakeroot shadow sed cpio; zypper -n clean; rm -rf /var/log/*; \
|
||||
fi
|
||||
#!ArchExclusiveLine: aarch64
|
||||
RUN if [ "$(uname -m)" = "aarch64" ];then \
|
||||
zypper --installroot /installroot --non-interactive install --no-recommends ironic-ipa-ramdisk-aarch64 python311-devel python311 python311-pip tar gawk git curl xz fakeroot shadow sed cpio; zypper -n clean; rm -rf /var/log/*; \
|
||||
fi
|
||||
#RUN zypper --installroot /installroot --non-interactive install --no-recommends sles-release;
|
||||
RUN cp /usr/bin/getopt /installroot/
|
||||
|
||||
@@ -19,11 +26,11 @@ FROM micro AS final
|
||||
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
||||
LABEL org.opencontainers.image.title="SLE Based Ironic IPA Downloader Container Image"
|
||||
LABEL org.opencontainers.image.description="ironic-ipa-downloader based on the SLE Base Container Image."
|
||||
LABEL org.opencontainers.image.version="3.0.0"
|
||||
LABEL org.opencontainers.image.version="3.0.1"
|
||||
LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/"
|
||||
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ironic-ipa-downloader:3.0.0-%RELEASE%"
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ironic-ipa-downloader:3.0.1-%RELEASE%"
|
||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||
|
@@ -1,12 +1,6 @@
|
||||
<services>
|
||||
<service mode="buildtime" name="kiwi_metainfo_helper"/>
|
||||
<service mode="buildtime" name="docker_label_helper"/>
|
||||
<service name="replace_using_package_version" mode="buildtime">
|
||||
<param name="file">Dockerfile</param>
|
||||
<param name="regex">%%ironic-ipa-ramdisk-x86_64_version%%</param>
|
||||
<param name="package">ironic-ipa-ramdisk-x86_64</param>
|
||||
<param name="parse-version">patch</param>
|
||||
</service>
|
||||
<service name="replace_using_env" mode="buildtime">
|
||||
<param name="file">Dockerfile</param>
|
||||
<param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
|
||||
|
@@ -8,10 +8,10 @@ export no_proxy=${no_proxy:-$NO_PROXY}
|
||||
|
||||
# Which image should we use
|
||||
if [ -z "${IPA_BASEURI}" ]; then
|
||||
# SLES BASED IPA - openstack-ironic-image-x86_64 package
|
||||
# SLES BASED IPA - ironic-ipa-ramdisk-x86_64 package
|
||||
mkdir -p /shared/html/images
|
||||
cp /tmp/initrd.xz /shared/html/images/ironic-python-agent.initramfs
|
||||
cp /tmp/openstack-ironic-image*.x86_64*.kernel /shared/html/images/ironic-python-agent.kernel
|
||||
cp /tmp/openstack-ironic-image*.kernel /shared/html/images/ironic-python-agent.kernel
|
||||
else
|
||||
FILENAME=ironic-python-agent
|
||||
FILENAME_EXT=.tar
|
||||
@@ -68,4 +68,4 @@ if [ -d "/tmp/ironic-certificates" ]; then
|
||||
mkdir -p etc/ironic-python-agent.d/ca-certs
|
||||
cp /tmp/ironic-certificates/* etc/ironic-python-agent.d/ca-certs/
|
||||
find . | fakeroot -i ../initrd.fakeroot cpio -o -H newc | xz --check=crc32 --x86 --lzma2 --fast > /shared/html/images/ironic-python-agent.initramfs
|
||||
fi
|
||||
fi
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<image schemaversion="7.4" name="openstack-ironic-image-201">
|
||||
<image schemaversion="7.4" name="openstack-ironic-image-301">
|
||||
<description type="system">
|
||||
<author>Cloud developers</author>
|
||||
<contact>cloud-devel@suse.de</contact>
|
||||
@@ -116,8 +116,9 @@
|
||||
<package name="vim"/>
|
||||
<package name="grub2"/>
|
||||
<package name="grub2-x86_64-efi" arch="x86_64"/>
|
||||
<package name="grub2-i386-pc"/>
|
||||
<package name="syslinux"/>
|
||||
<package name="grub2-arm64-efi" arch="aarch64"/>
|
||||
<package name="grub2-i386-pc" arch="x86_64"/>
|
||||
<package name="syslinux" arch="x86_64"/>
|
||||
<package name="lvm2"/>
|
||||
<package name="plymouth"/>
|
||||
<package name="fontconfig"/>
|
||||
@@ -135,12 +136,10 @@
|
||||
<package name="openstack-ironic-python-agent"/>
|
||||
<package name="hdparm"/>
|
||||
<package name="qemu-tools"/>
|
||||
<package name="python311-proliantutils" arch="x86_64"/>
|
||||
<package name="python311-proliantutils"/>
|
||||
<package name="lshw"/>
|
||||
<package name="dmidecode" arch="aarch64"/>
|
||||
<package name="dmidecode" arch="x86_64"/>
|
||||
<package name="efibootmgr" arch="aarch64" />
|
||||
<package name="efibootmgr" arch="x86_64" />
|
||||
<package name="dmidecode"/>
|
||||
<package name="efibootmgr"/>
|
||||
<package name="gptfdisk"/>
|
||||
<package name="open-iscsi"/>
|
||||
<package name="hwinfo"/>
|
||||
@@ -157,7 +156,6 @@
|
||||
</packages>
|
||||
|
||||
<packages type="kis">
|
||||
<package name="gfxboot-branding-SLE"/>
|
||||
<package name="dracut-kiwi-oem-repart"/>
|
||||
<package name="dracut-kiwi-oem-dump"/>
|
||||
</packages>
|
||||
|
@@ -19,7 +19,7 @@
|
||||
|
||||
|
||||
Name: ironic-ipa-ramdisk
|
||||
Version: 3.0.0
|
||||
Version: 3.0.1
|
||||
Release: 0
|
||||
Summary: Kernel and ramdisk image for OpenStack Ironic
|
||||
License: SUSE-EULA
|
||||
@@ -49,7 +49,12 @@ BuildRequires: fontconfig
|
||||
BuildRequires: fonts-config
|
||||
BuildRequires: gptfdisk
|
||||
BuildRequires: grub2
|
||||
%ifarch x86_64
|
||||
BuildRequires: grub2-x86_64-efi
|
||||
%endif
|
||||
%ifarch aarch64
|
||||
BuildRequires: grub2-arm64-efi
|
||||
%endif
|
||||
BuildRequires: haveged
|
||||
BuildRequires: hdparm
|
||||
BuildRequires: hwinfo
|
||||
@@ -93,19 +98,14 @@ BuildRequires: plymouth-dracut
|
||||
BuildRequires: plymouth-theme-bgrt
|
||||
BuildRequires: dracut-kiwi-oem-dump
|
||||
BuildRequires: dracut-kiwi-oem-repart
|
||||
BuildRequires: gfxboot-branding-SLE
|
||||
BuildRequires: grub2-branding-SLE
|
||||
BuildRequires: open-iscsi
|
||||
BuildRequires: plymouth-branding-SLE
|
||||
BuildRequires: lshw
|
||||
BuildRequires: kbd
|
||||
%ifarch aarch64
|
||||
BuildRequires: dmidecode
|
||||
BuildRequires: efibootmgr
|
||||
%endif
|
||||
%ifarch x86_64
|
||||
BuildRequires: dmidecode
|
||||
BuildRequires: efibootmgr
|
||||
BuildRequires: syslinux
|
||||
%endif
|
||||
|
||||
|
Binary file not shown.
@@ -1,17 +1,20 @@
|
||||
#!BuildTag: kiwi-builder:10.1
|
||||
FROM registry.suse.com/bci/kiwi:10.1.10
|
||||
MAINTAINER SUSE LLC (https://www.suse.com/)
|
||||
#!BuildTag: %%IMG_PREFIX%%kiwi-builder:%%kiwi_version%%.1-%RELEASE%
|
||||
#!BuildTag: %%IMG_PREFIX%%kiwi-builder:%%kiwi_version%%.1
|
||||
|
||||
ARG KIWIVERSION="10.2.12"
|
||||
FROM registry.suse.com/bci/kiwi:${KIWIVERSION}
|
||||
ARG KIWIVERSION
|
||||
|
||||
# Define labels according to https://en.opensuse.org/Building_derived_containers
|
||||
# labelprefix=com.suse.application.akri
|
||||
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
||||
LABEL org.opencontainers.image.title="SLE Kiwi Builder Container Image"
|
||||
LABEL org.opencontainers.image.description="kiwi-builder based on the SLE Base Container Image."
|
||||
LABEL org.opencontainers.image.version="%PACKAGE_VERSION%"
|
||||
LABEL org.opencontainers.image.version="%%kiwi_version%%"
|
||||
LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/"
|
||||
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%kiwi-builder:10.1
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%kiwi-builder:%%kiwi_version%%.1-%RELEASE%"
|
||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||
@@ -20,12 +23,8 @@ LABEL com.suse.image-type="application"
|
||||
LABEL com.suse.release-stage="released"
|
||||
# endlabelprefix
|
||||
|
||||
# Install required packages for Kiwi to function as expected
|
||||
# Should be provided via https://github.com/SUSE/BCI-dockerfile-generator/pull/1770
|
||||
# RUN zypper in -y gawk && zypper clean -a
|
||||
|
||||
# Configure Kiwi to use kpartx
|
||||
RUN echo -e "mapper:\n - part_mapper: kpartx" > /etc/kiwi.yml
|
||||
# help the build service understand the need for python3-kiwi
|
||||
RUN zypper -n install -d -D python3-kiwi; [ "%%kiwi_version%%" = "${KIWIVERSION}" ] || { echo "expected kiwi version ${KIWIVERSION}: version mismatch"; exit 1; }
|
||||
|
||||
# Copy build script into image and make it executable
|
||||
ADD build-image.sh /usr/bin/build-image
|
||||
|
@@ -8,40 +8,48 @@ Please ensure that you're running this on a registered SLE Micro 6.0 system, and
|
||||
|
||||
Next, download the podman image:
|
||||
|
||||
# podman pull %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10
|
||||
# podman pull %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.1
|
||||
|
||||
Make a local output directory (where the images will reside):
|
||||
|
||||
# mkdir output
|
||||
|
||||
Then, to build a standard "Base" image, run the following in podman:
|
||||
|
||||
# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.1 build-image
|
||||
|
||||
To build a "Base" SelfInstall ISO, you can add additional flags, for example:
|
||||
|
||||
# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.1 build-image -p Base-SelfInstall
|
||||
|
||||
Then, to build a standard "Default" image, run the following in podman:
|
||||
|
||||
# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image
|
||||
# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.1 build-image -p Default
|
||||
|
||||
To build a SelfInstall ISO, you can add additional flags, for example:
|
||||
To build a "Default" SelfInstall ISO, you can add additional flags, for example:
|
||||
|
||||
# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image -p Default-SelfInstall
|
||||
# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.1 build-image -p Default-SelfInstall
|
||||
|
||||
To build an image with a RealTime kernel, e.g. a RAW disk image ("Default"), use the following:
|
||||
|
||||
# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image -p Base-RT
|
||||
# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.1 build-image -p Base-RT
|
||||
|
||||
To build an image that supports a large block/sectorsize (4096), use the "-b" flag, for example:
|
||||
|
||||
# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image -p Default-SelfInstall -b
|
||||
# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.1 build-image -p Default-SelfInstall -b
|
||||
|
||||
# mkdir mydefs/
|
||||
# cp /path/to/SL-Micro.kiwi mydefs/
|
||||
# cp /path/to/config.sh mydefs/
|
||||
# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -v ./mydefs/:/micro-sdk/defs/ -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image
|
||||
# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -v ./mydefs/:/micro-sdk/defs/ -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.1 build-image
|
||||
|
||||
All output will be in the local $(pwd)/output directory, for example:
|
||||
|
||||
# ls -1 output/
|
||||
SLE-Micro.x86_64-6.0.changes
|
||||
SLE-Micro.x86_64-6.0.packages
|
||||
SLE-Micro.x86_64-6.0.raw
|
||||
SLE-Micro.x86_64-6.0.verified
|
||||
SL-Micro.x86_64-6.0.changes
|
||||
SL-Micro.x86_64-6.0.packages
|
||||
SL-Micro.x86_64-6.0.raw
|
||||
SL-Micro.x86_64-6.0.verified
|
||||
build
|
||||
kiwi.result
|
||||
kiwi.result.json
|
||||
|
@@ -16,4 +16,14 @@
|
||||
<param name="eval">SUPPORT_LEVEL=$(rpm --macros=/root/.rpmmacros -E %support_level)</param>
|
||||
<param name="var">SUPPORT_LEVEL</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="replace_using_package_version">
|
||||
<param name="file">Dockerfile</param>
|
||||
<param name="regex">%%kiwi_version%%</param>
|
||||
<param name="package">python3-kiwi</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="replace_using_package_version">
|
||||
<param name="file">README</param>
|
||||
<param name="regex">%%kiwi_version%%</param>
|
||||
<param name="package">python3-kiwi</param>
|
||||
</service>
|
||||
</services>
|
||||
|
@@ -21,43 +21,45 @@
|
||||
#
|
||||
|
||||
# Set image build defaults, blocksize is an empty string
|
||||
PROFILE="Default"
|
||||
PROFILE="Base"
|
||||
LARGEBLOCK=false
|
||||
|
||||
# Print usage
|
||||
usage(){
|
||||
cat <<-EOF
|
||||
==============================
|
||||
SLE Micro 6.0 Kiwi SDK Builder
|
||||
==============================
|
||||
cat <<-EOF
|
||||
==============================
|
||||
SLE Micro 6.0 Kiwi SDK Builder
|
||||
==============================
|
||||
|
||||
Usage: ${0} [-p <profile>] [-b]
|
||||
Usage: ${0} [-p <profile>] [-b]
|
||||
|
||||
Profile Options (-p):
|
||||
* Default: RAW Disk Image with kernel-default
|
||||
* Default-SelfInstall: SelfInstall ISO with kernel-default
|
||||
* Base-RT: RAW Disk Image with kernel-rt
|
||||
* Base-RT-SelfInstall: SelfInstall ISO with kernel-rt
|
||||
Profile Options (-p):
|
||||
* Base: RAW Disk Image with podman
|
||||
* Base-SelfInstall: SelfInstall ISO with podman
|
||||
* Default: RAW Disk Image with podman and kvm
|
||||
* Default-SelfInstall: SelfInstall ISO with podman and kvm
|
||||
* Base-RT: RAW Disk Image with kernel-rt
|
||||
* Base-RT-SelfInstall: SelfInstall ISO with kernel-rt
|
||||
|
||||
4096 Blocksize (-b): If specified, use a 4096 blocksize (rather than 512) when generating the image.
|
||||
4096 Blocksize (-b): If specified, use a 4096 blocksize (rather than 512) when generating the image.
|
||||
|
||||
NOTE: If both options are omitted, the "Default" profile with a standard "512" blocksize is used.
|
||||
EOF
|
||||
NOTE: If both options are omitted, the "Base" profile with a standard "512" blocksize is used.
|
||||
EOF
|
||||
}
|
||||
|
||||
# Grab CLI options and handle
|
||||
while getopts 'p:bh' OPTION; do
|
||||
case "${OPTION}" in
|
||||
p)
|
||||
PROFILE="${OPTARG}"
|
||||
;;
|
||||
b)
|
||||
LARGEBLOCK=true
|
||||
;;
|
||||
?)
|
||||
usage && exit 2
|
||||
;;
|
||||
esac
|
||||
case "${OPTION}" in
|
||||
p)
|
||||
PROFILE="${OPTARG}"
|
||||
;;
|
||||
b)
|
||||
LARGEBLOCK=true
|
||||
;;
|
||||
?)
|
||||
usage && exit 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# To avoid wasting time, perform the loop creation test first, and exit with a warning to re-run.
|
||||
@@ -88,4 +90,4 @@ if [ $RESULT -eq 0 ]; then
|
||||
echo -e "\n\nINFO: Image build successful, generated images are available in the 'output' directory."
|
||||
else
|
||||
echo -e "\n\nERROR: Failed to build the image, please see above logs."
|
||||
fi
|
||||
fi
|
||||
|
@@ -12,10 +12,8 @@
|
||||
<param name="without-version">yes</param>
|
||||
<param name="versionrewrite-replacement">\1</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="tar" />
|
||||
<service mode="buildtime" name="recompress">
|
||||
<param name="file">*.tar</param>
|
||||
<param name="compression">gz</param>
|
||||
<service mode="buildtime" name="tar" >
|
||||
<param name="obsinfo">kube-rbac-proxy.obsinfo</param>
|
||||
</service>
|
||||
<service name="go_modules">
|
||||
</service>
|
||||
|
@@ -22,7 +22,7 @@ Release: 0.18.1
|
||||
Summary: The kube-rbac-proxy is a small HTTP proxy for a single upstream
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/brancz/kube-rbac-proxy
|
||||
Source: kube-rbac-proxy-%{version}.tar.gz
|
||||
Source: kube-rbac-proxy-%{version}.tar
|
||||
Source1: vendor.tar.gz
|
||||
BuildRequires: golang(API) = 1.23
|
||||
ExcludeArch: s390
|
||||
|
34
kubectl-image/Dockerfile
Normal file
34
kubectl-image/Dockerfile
Normal file
@@ -0,0 +1,34 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#!BuildTag: %%IMG_PREFIX%%kubectl:1.30.3
|
||||
#!BuildTag: %%IMG_PREFIX%%kubectl:1.30.3-%RELEASE%
|
||||
#!BuildVersion: 15.6
|
||||
ARG SLE_VERSION
|
||||
FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro
|
||||
|
||||
FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base
|
||||
COPY --from=micro / /installroot/
|
||||
RUN zypper --installroot /installroot --non-interactive install --no-recommends kubectl; zypper -n clean; rm -rf /var/log/*
|
||||
|
||||
FROM micro AS final
|
||||
|
||||
# Define labels according to https://en.opensuse.org/Building_derived_containers
|
||||
# labelprefix=com.suse.application.kubectl
|
||||
LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)"
|
||||
LABEL org.opencontainers.image.title="SLE kubectl image"
|
||||
LABEL org.opencontainers.image.description="kubectl on the SLE Base Container Image."
|
||||
LABEL org.opencontainers.image.version="1.30.3"
|
||||
LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/"
|
||||
LABEL org.opencontainers.image.created="%BUILDTIME%"
|
||||
LABEL org.opencontainers.image.vendor="SUSE LLC"
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%kubectl:1.30.3-%RELEASE%"
|
||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||
LABEL com.suse.lifecycle-url="https://www.suse.com/lifecycle"
|
||||
LABEL com.suse.image-type="application"
|
||||
LABEL com.suse.release-stage="released"
|
||||
# endlabelprefix
|
||||
|
||||
COPY --from=base /installroot /
|
||||
|
||||
ENTRYPOINT ["/usr/bin/kubectl"]
|
@@ -1,12 +1,5 @@
|
||||
<services>
|
||||
<service mode="buildtime" name="kiwi_metainfo_helper"/>
|
||||
<service mode="buildtime" name="docker_label_helper"/>
|
||||
<service name="replace_using_package_version" mode="buildtime">
|
||||
<param name="file">Dockerfile</param>
|
||||
<param name="regex">%%cluster-api-operator_version%%</param>
|
||||
<param name="package">cluster-api-operator</param>
|
||||
<param name="parse-version">patch</param>
|
||||
</service>
|
||||
<service name="replace_using_env" mode="buildtime">
|
||||
<param name="file">Dockerfile</param>
|
||||
<param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
|
@@ -1,6 +1,6 @@
|
||||
%global debug_package %{nil}
|
||||
|
||||
Name: kubectl-1303
|
||||
Name: kubectl
|
||||
Version: 1.30.3
|
||||
Release: 0
|
||||
Summary: Command-line utility for interacting with a Kubernetes cluster
|
||||
|
9
kubevirt-chart/Chart.yaml
Normal file
9
kubevirt-chart/Chart.yaml
Normal file
@@ -0,0 +1,9 @@
|
||||
#!BuildTag: %%IMG_PREFIX%%kubevirt-chart:%%CHART_MAJOR%%.0.0_up0.4.0-%RELEASE%
|
||||
#!BuildTag: %%IMG_PREFIX%%kubevirt-chart:%%CHART_MAJOR%%.0.0_up0.4.0
|
||||
apiVersion: v2
|
||||
appVersion: 1.3.1
|
||||
description: A Helm chart for KubeVirt
|
||||
icon: https://raw.githubusercontent.com/cncf/artwork/main/projects/kubevirt/icon/color/kubevirt-icon-color.svg
|
||||
name: kubevirt
|
||||
type: application
|
||||
version: "%%CHART_MAJOR%%.0.0+up0.4.0"
|
10
kubevirt-chart/_service
Normal file
10
kubevirt-chart/_service
Normal file
@@ -0,0 +1,10 @@
|
||||
<services>
|
||||
<service mode="buildtime" name="kiwi_metainfo_helper"/>
|
||||
<service name="replace_using_env" mode="buildtime">
|
||||
<param name="file">Chart.yaml</param>
|
||||
<param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param>
|
||||
<param name="var">IMG_PREFIX</param>
|
||||
<param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param>
|
||||
<param name="var">CHART_MAJOR</param>
|
||||
</service>
|
||||
</services>
|
1
kubevirt-chart/app-readme.md
Normal file
1
kubevirt-chart/app-readme.md
Normal file
@@ -0,0 +1 @@
|
||||
KubeVirt is a virtual machine management add-on for Kubernetes. The aim is to provide a common ground for virtualization solutions on top of Kubernetes.
|
6586
kubevirt-chart/crds/kubevirt.yaml
Normal file
6586
kubevirt-chart/crds/kubevirt.yaml
Normal file
File diff suppressed because it is too large
Load Diff
2
kubevirt-chart/templates/NOTES.txt
Normal file
2
kubevirt-chart/templates/NOTES.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Verify that all KubeVirt components are installed correctly:
|
||||
kubectl get all -n {{ .Release.Namespace }}
|
62
kubevirt-chart/templates/_helpers.tpl
Normal file
62
kubevirt-chart/templates/_helpers.tpl
Normal file
@@ -0,0 +1,62 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "kubevirt.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "kubevirt.fullname" -}}
|
||||
{{- if .Values.fullnameOverride }}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||
{{- if contains $name .Release.Name }}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "kubevirt.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "kubevirt.labels" -}}
|
||||
helm.sh/chart: {{ include "kubevirt.chart" . }}
|
||||
{{ include "kubevirt.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "kubevirt.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "kubevirt.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "kubevirt.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
{{- default (include "kubevirt.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else }}
|
||||
{{- default "default" .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
47
kubevirt-chart/templates/_hooks.tpl
Normal file
47
kubevirt-chart/templates/_hooks.tpl
Normal file
@@ -0,0 +1,47 @@
|
||||
{{/* Hook annotations */}}
|
||||
{{- define "kubevirt.hook.annotations" -}}
|
||||
annotations:
|
||||
"helm.sh/hook": {{ .hookType }}
|
||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
||||
"helm.sh/hook-weight": {{ .hookWeight | quote }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Namespace modifying hook annotations */}}
|
||||
{{- define "kubevirt.namespaceHook.annotations" -}}
|
||||
{{ template "kubevirt.hook.annotations" merge (dict "hookType" "pre-install") . }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* CRD upgrading hook annotations */}}
|
||||
{{- define "kubevirt.crdUpgradeHook.annotations" -}}
|
||||
{{ template "kubevirt.hook.annotations" merge (dict "hookType" "pre-upgrade") . }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Custom resource uninstalling hook annotations */}}
|
||||
{{- define "kubevirt.crUninstallHook.annotations" -}}
|
||||
{{ template "kubevirt.hook.annotations" merge (dict "hookType" "pre-delete") . }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* CRD uninstalling hook annotations */}}
|
||||
{{- define "kubevirt.crdUninstallHook.annotations" -}}
|
||||
{{ template "kubevirt.hook.annotations" merge (dict "hookType" "post-delete") . }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Namespace modifying hook name */}}
|
||||
{{- define "kubevirt.namespaceHook.name" -}}
|
||||
{{ include "kubevirt.fullname" . }}-namespace-modify
|
||||
{{- end }}
|
||||
|
||||
{{/* CRD upgrading hook name */}}
|
||||
{{- define "kubevirt.crdUpgradeHook.name" -}}
|
||||
{{ include "kubevirt.fullname" . }}-crd-upgrade
|
||||
{{- end }}
|
||||
|
||||
{{/* Custom resource uninstalling hook name */}}
|
||||
{{- define "kubevirt.crUninstallHook.name" -}}
|
||||
{{ include "kubevirt.fullname" . }}-uninstall
|
||||
{{- end }}
|
||||
|
||||
{{/* CRD uninstalling hook name */}}
|
||||
{{- define "kubevirt.crdUninstallHook.name" -}}
|
||||
{{ include "kubevirt.fullname" . }}-crd-uninstall
|
||||
{{- end }}
|
55
kubevirt-chart/templates/crd-uninstall-hooks.yaml
Normal file
55
kubevirt-chart/templates/crd-uninstall-hooks.yaml
Normal file
@@ -0,0 +1,55 @@
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
namespace: {{ .Release.Namespace }}
|
||||
name: {{ template "kubevirt.crdUninstallHook.name" . }}
|
||||
{{ template "kubevirt.crdUninstallHook.annotations" (dict "hookWeight" 1) }}
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: {{ template "kubevirt.crdUninstallHook.name" . }}
|
||||
{{ template "kubevirt.crdUninstallHook.annotations" (dict "hookWeight" 1) }}
|
||||
rules:
|
||||
- apiGroups: [ "apiextensions.k8s.io" ]
|
||||
resources: [ "customresourcedefinitions" ]
|
||||
resourceNames:
|
||||
- "kubevirts.kubevirt.io"
|
||||
verbs: [ "delete" ]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: {{ template "kubevirt.crdUninstallHook.name" . }}
|
||||
{{ template "kubevirt.crdUninstallHook.annotations" (dict "hookWeight" 2) }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
namespace: {{ .Release.Namespace }}
|
||||
name: {{ template "kubevirt.crdUninstallHook.name" . }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: {{ template "kubevirt.crdUninstallHook.name" . }}
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
---
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
namespace: {{ .Release.Namespace }}
|
||||
name: {{ template "kubevirt.crdUninstallHook.name" . }}
|
||||
{{ template "kubevirt.crdUninstallHook.annotations" (dict "hookWeight" 3) }}
|
||||
spec:
|
||||
template:
|
||||
metadata:
|
||||
name: {{ template "kubevirt.crdUninstallHook.name" . }}
|
||||
spec:
|
||||
serviceAccountName: {{ template "kubevirt.crdUninstallHook.name" . }}
|
||||
restartPolicy: {{ .Values.hookRestartPolicy }}
|
||||
containers:
|
||||
- name: {{ template "kubevirt.crdUninstallHook.name" . }}
|
||||
image: {{ .Values.hookImage }}
|
||||
args:
|
||||
- delete
|
||||
- customresourcedefinitions
|
||||
- kubevirts.kubevirt.io
|
||||
securityContext:
|
||||
{{- toYaml .Values.hookSecurityContext | nindent 12 }}
|
80
kubevirt-chart/templates/crd-upgrade-hooks.yaml
Normal file
80
kubevirt-chart/templates/crd-upgrade-hooks.yaml
Normal file
@@ -0,0 +1,80 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
namespace: {{ .Release.Namespace }}
|
||||
name: kubevirt-crd-manifest
|
||||
{{ template "kubevirt.crdUpgradeHook.annotations" (dict "hookWeight" 1) }}
|
||||
data:
|
||||
crd: |-
|
||||
{{ $.Files.Get "crds/kubevirt.yaml" | nindent 4 }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
namespace: {{ .Release.Namespace }}
|
||||
name: {{ template "kubevirt.crdUpgradeHook.name" . }}
|
||||
{{ template "kubevirt.crdUpgradeHook.annotations" (dict "hookWeight" 2) }}
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: {{ template "kubevirt.crdUpgradeHook.name" . }}
|
||||
{{ template "kubevirt.crdUpgradeHook.annotations" (dict "hookWeight" 2) }}
|
||||
rules:
|
||||
- apiGroups: [ "" ]
|
||||
resources: [ "configmaps" ]
|
||||
resourceNames:
|
||||
- "kubevirt-crd-manifest"
|
||||
verbs: [ "get" ]
|
||||
- apiGroups: [ "apiextensions.k8s.io" ]
|
||||
resources: [ "customresourcedefinitions" ]
|
||||
resourceNames:
|
||||
- "kubevirts.kubevirt.io"
|
||||
verbs: [ "get", "patch" ]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: {{ template "kubevirt.crdUpgradeHook.name" . }}
|
||||
{{ template "kubevirt.crdUpgradeHook.annotations" (dict "hookWeight" 3) }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
namespace: {{ .Release.Namespace }}
|
||||
name: {{ template "kubevirt.crdUpgradeHook.name" . }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: {{ template "kubevirt.crdUpgradeHook.name" . }}
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
---
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
namespace: {{ .Release.Namespace }}
|
||||
name: {{ template "kubevirt.crdUpgradeHook.name" . }}
|
||||
{{ template "kubevirt.crdUpgradeHook.annotations" (dict "hookWeight" 4) }}
|
||||
spec:
|
||||
template:
|
||||
metadata:
|
||||
name: {{ template "kubevirt.crdUpgradeHook.name" . }}
|
||||
spec:
|
||||
serviceAccountName: {{ template "kubevirt.crdUpgradeHook.name" . }}
|
||||
restartPolicy: {{ .Values.hookRestartPolicy }}
|
||||
containers:
|
||||
- name: {{ template "kubevirt.crdUpgradeHook.name" . }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.hookSecurityContext | nindent 12 }}
|
||||
image: {{ .Values.hookImage }}
|
||||
args:
|
||||
- apply
|
||||
- -f
|
||||
- /etc/manifests/crd.yaml
|
||||
volumeMounts:
|
||||
- name: crd-volume
|
||||
mountPath: /etc/manifests
|
||||
volumes:
|
||||
- name: crd-volume
|
||||
configMap:
|
||||
name: kubevirt-crd-manifest
|
||||
items:
|
||||
- key: crd
|
||||
path: crd.yaml
|
1361
kubevirt-chart/templates/kubevirt-operator.yaml
Normal file
1361
kubevirt-chart/templates/kubevirt-operator.yaml
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user