[3.2] Backport workflows for prjconf and meta and fixes for tar_scm #78
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
|
#!/usr/bin/env python3
|
||||||
import yaml
|
|
||||||
import subprocess
|
import subprocess
|
||||||
import argparse
|
import argparse
|
||||||
import os
|
import os
|
||||||
@ -7,30 +6,6 @@ import os.path
|
|||||||
|
|
||||||
from common import PROJECT, REPOSITORY, BRANCH
|
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):
|
def add_package_to_project(name: str):
|
||||||
package_meta = f"""<package name="{name}" project="{PROJECT}">
|
package_meta = f"""<package name="{name}" project="{PROJECT}">
|
||||||
<title/>
|
<title/>
|
||||||
@ -53,7 +28,6 @@ def add_package(package_name: str):
|
|||||||
os.exit(1)
|
os.exit(1)
|
||||||
|
|
||||||
add_package_to_project(package_name)
|
add_package_to_project(package_name)
|
||||||
add_package_to_workflow(package_name)
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
@ -65,7 +39,7 @@ def main():
|
|||||||
add_package(args.package)
|
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__':
|
if __name__ == '__main__':
|
||||||
|
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
|
#!/usr/bin/env python3
|
||||||
import yaml
|
|
||||||
import subprocess
|
import subprocess
|
||||||
import argparse
|
import argparse
|
||||||
import os
|
import os
|
||||||
@ -8,18 +7,6 @@ import os.path
|
|||||||
from common import PROJECT
|
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):
|
def delete_package_from_project(name: str):
|
||||||
p = subprocess.run(["osc", "rdelete", PROJECT, name, "-m \"Deleted via delete_package.py\"" ], stdout=subprocess.PIPE)
|
p = subprocess.run(["osc", "rdelete", PROJECT, name, "-m \"Deleted via delete_package.py\"" ], stdout=subprocess.PIPE)
|
||||||
print(p.stdout)
|
print(p.stdout)
|
||||||
@ -33,7 +20,6 @@ def delete_package(package_name: str):
|
|||||||
os.exit(1)
|
os.exit(1)
|
||||||
|
|
||||||
delete_package_from_project(package_name)
|
delete_package_from_project(package_name)
|
||||||
delete_package_from_workflow(package_name)
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def 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]:
|
def get_obs_packages() -> Set[str]:
|
||||||
packages = subprocess.run(["osc", "ls", PROJECT], encoding='utf-8' , capture_output=True)
|
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]:
|
def get_local_packages() -> Set[str]:
|
||||||
p = pathlib.Path('.')
|
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,216 +0,0 @@
|
|||||||
staging_build:
|
|
||||||
filters:
|
|
||||||
event: pull_request
|
|
||||||
steps:
|
|
||||||
- branch_package:
|
|
||||||
source_package: endpoint-copier-operator
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: endpoint-copier-operator-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: endpoint-copier-operator-chart
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: akri
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: akri-agent-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: akri-chart
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: akri-controller-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: akri-dashboard-extension-chart
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: akri-debug-echo-discovery-handler-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: akri-onvif-discovery-handler-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: akri-opcua-discovery-handler-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: akri-udev-discovery-handler-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: akri-webhook-configuration-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: obs-service-set_version
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: cosign
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: frr-k8s
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: kubectl
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: upgrade-controller
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: nm-configurator
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: kube-rbac-proxy
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: edge-image-builder
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: metallb
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: hauler
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: baremetal-operator
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: cdi-chart
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: metallb-chart
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: sriov-crd-chart
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: upgrade-controller-chart
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: edge-image-builder-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: ironic-ipa-downloader-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: upgrade-controller-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: metal3-chart
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: baremetal-operator-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: sriov-network-operator-chart
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: metallb-controller-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: metallb-speaker-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: ironic-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: cri-tools
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: crudini
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: fakeroot
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: ipcalc
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: autoconf
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: rancher-turtles-airgap-resources-chart
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: rancher-turtles-chart
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: kube-rbac-proxy-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: ironic-ipa-ramdisk
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: kubevirt-dashboard-extension-chart
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: kiwi-builder-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: kubevirt-chart
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: release-manifest-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: frr-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: kubectl-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
||||||
- branch_package:
|
|
||||||
source_package: frr-k8s-image
|
|
||||||
source_project: isv:SUSE:Edge:3.2
|
|
||||||
target_project: isv:SUSE:Edge:3.2:Staging
|
|
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>
|
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.
|
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
|
## 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).
|
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>
|
<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
|
## Cutting a release version branch
|
||||||
|
|
||||||
1. Do the appropriate git branch command
|
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`)
|
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`)
|
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
|
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
|
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
|
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)
|
11. Hand over to QA to test whatever is in `ToTest`. (You can continue to work on the base branch if needed meanwhile)
|
||||||
|
125
_config
Normal file
125
_config
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
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" == "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
|
69
_meta
Normal file
69
_meta
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
{#-
|
||||||
|
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", "test_manifest_images"] %}
|
||||||
|
<repository name="{{ repository }}">
|
||||||
|
{%- if release_project is defined and repository == "images" %}
|
||||||
|
<releasetarget project="{{ release_project }}" repository="images" trigger="manual"/>
|
||||||
|
{%- endif %}
|
||||||
|
<path project="SUSE:Registry" repository="standard"/>
|
||||||
|
<path project="SUSE:CA" repository="SLE_15_SP6"/>
|
||||||
|
<path project="{{ project }}" repository="standard"/>
|
||||||
|
<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>
|
@ -10,7 +10,9 @@
|
|||||||
<service name="cargo_vendor" mode="manual">
|
<service name="cargo_vendor" mode="manual">
|
||||||
<param name="srcdir">akri</param>
|
<param name="srcdir">akri</param>
|
||||||
</service>
|
</service>
|
||||||
<service name="tar" mode="buildtime" />
|
<service name="tar" mode="buildtime">
|
||||||
|
<param name="obsinfo">akri.obsinfo</param>
|
||||||
|
</service>
|
||||||
<service name="set_version" mode="buildtime" >
|
<service name="set_version" mode="buildtime" >
|
||||||
<param name="fromfile">version.txt</param>
|
<param name="fromfile">version.txt</param>
|
||||||
<param name="regex">^(.*)$</param>
|
<param name="regex">^(.*)$</param>
|
||||||
|
@ -12,10 +12,8 @@
|
|||||||
<param name="without-version">yes</param>
|
<param name="without-version">yes</param>
|
||||||
<param name="versionrewrite-replacement">\1</param>
|
<param name="versionrewrite-replacement">\1</param>
|
||||||
</service>
|
</service>
|
||||||
<service mode="buildtime" name="tar" />
|
<service mode="buildtime" name="tar">
|
||||||
<service mode="buildtime" name="recompress">
|
<param name="obsinfo">baremetal-operator.obsinfo</param>
|
||||||
<param name="file">*.tar</param>
|
|
||||||
<param name="compression">gz</param>
|
|
||||||
</service>
|
</service>
|
||||||
<service name="go_modules">
|
<service name="go_modules">
|
||||||
</service>
|
</service>
|
||||||
@ -23,7 +21,7 @@
|
|||||||
<param name="file">baremetal-operator.spec</param>
|
<param name="file">baremetal-operator.spec</param>
|
||||||
<param name="var">SOURCE_COMMIT</param>
|
<param name="var">SOURCE_COMMIT</param>
|
||||||
<param name="eval">
|
<param name="eval">
|
||||||
SOURCE_COMMIT=$(grep commit *.obsinfo | cut -d" " -f2)
|
SOURCE_COMMIT=$(grep commit baremetal-operator.obsinfo | cut -d" " -f2)
|
||||||
</param>
|
</param>
|
||||||
<param name="verbose">1</param>
|
<param name="verbose">1</param>
|
||||||
</service>
|
</service>
|
||||||
|
@ -22,7 +22,7 @@ Release: 0.8.0
|
|||||||
Summary: Implements a Kubernetes API for managing bare metal hosts
|
Summary: Implements a Kubernetes API for managing bare metal hosts
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
URL: https://github.com/metal3-io/baremetal-operator
|
URL: https://github.com/metal3-io/baremetal-operator
|
||||||
Source: baremetal-operator-%{version}.tar.gz
|
Source: baremetal-operator-%{version}.tar
|
||||||
Source1: vendor.tar.gz
|
Source1: vendor.tar.gz
|
||||||
BuildRequires: golang(API) = 1.22
|
BuildRequires: golang(API) = 1.22
|
||||||
ExcludeArch: s390
|
ExcludeArch: s390
|
||||||
|
@ -8,10 +8,8 @@
|
|||||||
<param name="versionrewrite-pattern">v(.*)</param>
|
<param name="versionrewrite-pattern">v(.*)</param>
|
||||||
<param name="changesgenerate">enable</param>
|
<param name="changesgenerate">enable</param>
|
||||||
</service>
|
</service>
|
||||||
<service mode="buildtime" name="tar" />
|
<service mode="buildtime" name="tar">
|
||||||
<service mode="buildtime" name="recompress">
|
<param name="obsinfo">cosign.obsinfo</param>
|
||||||
<param name="file">*.tar</param>
|
|
||||||
<param name="compression">gz</param>
|
|
||||||
</service>
|
</service>
|
||||||
<service mode="buildtime" name="set_version" />
|
<service mode="buildtime" name="set_version" />
|
||||||
<service name="go_modules">
|
<service name="go_modules">
|
||||||
|
@ -24,7 +24,7 @@ Release: 0
|
|||||||
Summary: Container Signing, Verification and Storage in an OCI registry
|
Summary: Container Signing, Verification and Storage in an OCI registry
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
URL: https://github.com/rancher-government-carbide/cosign
|
URL: https://github.com/rancher-government-carbide/cosign
|
||||||
Source: cosign-%{version}.tar.gz
|
Source: cosign-%{version}.tar
|
||||||
Source1: vendor.tar.gz
|
Source1: vendor.tar.gz
|
||||||
BuildRequires: golang-packaging
|
BuildRequires: golang-packaging
|
||||||
|
|
||||||
|
@ -9,10 +9,8 @@
|
|||||||
<param name="versionrewrite-replacement">\1.\2.\3</param>
|
<param name="versionrewrite-replacement">\1.\2.\3</param>
|
||||||
<param name="changesgenerate">enable</param>
|
<param name="changesgenerate">enable</param>
|
||||||
</service>
|
</service>
|
||||||
<service mode="buildtime" name="tar" />
|
<service mode="buildtime" name="tar">
|
||||||
<service mode="buildtime" name="recompress">
|
<param name="obsinfo">edge-image-builder.obsinfo</param>
|
||||||
<param name="file">*.tar</param>
|
|
||||||
<param name="compression">gz</param>
|
|
||||||
</service>
|
</service>
|
||||||
<service mode="buildtime" name="set_version" />
|
<service mode="buildtime" name="set_version" />
|
||||||
<service name="go_modules">
|
<service name="go_modules">
|
||||||
|
@ -22,7 +22,7 @@ Release: 0
|
|||||||
Summary: Edge Image Builder
|
Summary: Edge Image Builder
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
URL: https://github.com/suse-edge/edge-image-builder
|
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
|
Source1: vendor.tar.gz
|
||||||
BuildRequires: golang(API) go1.22
|
BuildRequires: golang(API) go1.22
|
||||||
BuildRequires: golang-packaging
|
BuildRequires: golang-packaging
|
||||||
|
@ -12,10 +12,8 @@
|
|||||||
<param name="without-version">yes</param>
|
<param name="without-version">yes</param>
|
||||||
<param name="versionrewrite-replacement">\1</param>
|
<param name="versionrewrite-replacement">\1</param>
|
||||||
</service>
|
</service>
|
||||||
<service mode="buildtime" name="tar" />
|
<service mode="buildtime" name="tar">
|
||||||
<service mode="buildtime" name="recompress">
|
<param name="obsinfo">endpoint-copier-operator.obsinfo</param>
|
||||||
<param name="file">*.tar</param>
|
|
||||||
<param name="compression">gz</param>
|
|
||||||
</service>
|
</service>
|
||||||
<service name="go_modules">
|
<service name="go_modules">
|
||||||
</service>
|
</service>
|
||||||
|
@ -22,7 +22,7 @@ Release: 0.2.0
|
|||||||
Summary: Implements a Kubernetes API for copying endpoint resources
|
Summary: Implements a Kubernetes API for copying endpoint resources
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
URL: https://github.com/suse-edge/endpoint-copier-operator
|
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
|
Source1: vendor.tar.gz
|
||||||
BuildRequires: golang(API) = 1.20
|
BuildRequires: golang(API) = 1.20
|
||||||
ExcludeArch: s390
|
ExcludeArch: s390
|
||||||
|
@ -12,10 +12,8 @@
|
|||||||
<param name="without-version">yes</param>
|
<param name="without-version">yes</param>
|
||||||
<param name="versionrewrite-replacement">\1</param>
|
<param name="versionrewrite-replacement">\1</param>
|
||||||
</service>
|
</service>
|
||||||
<service mode="buildtime" name="tar" />
|
<service mode="buildtime" name="tar">
|
||||||
<service mode="buildtime" name="recompress">
|
<param name="obsinfo">frr-k8s.obsinfo</param>
|
||||||
<param name="file">*.tar</param>
|
|
||||||
<param name="compression">gz</param>
|
|
||||||
</service>
|
</service>
|
||||||
<service name="go_modules">
|
<service name="go_modules">
|
||||||
</service>
|
</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.
|
Summary: A kubernetes based daemonset that exposes a subset of the FRR API in a kubernetes compliant manner.
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
URL: https://github.com/metallb/frr-k8s
|
URL: https://github.com/metallb/frr-k8s
|
||||||
Source: frr-k8s-%{version}.tar.gz
|
Source: frr-k8s-%{version}.tar
|
||||||
Source1: vendor.tar.gz
|
Source1: vendor.tar.gz
|
||||||
BuildRequires: golang(API) = 1.22
|
BuildRequires: golang(API) = 1.22
|
||||||
ExcludeArch: s390
|
ExcludeArch: s390
|
||||||
|
@ -8,10 +8,8 @@
|
|||||||
<param name="versionrewrite-pattern">v(.*)</param>
|
<param name="versionrewrite-pattern">v(.*)</param>
|
||||||
<param name="changesgenerate">enable</param>
|
<param name="changesgenerate">enable</param>
|
||||||
</service>
|
</service>
|
||||||
<service mode="buildtime" name="tar" />
|
<service mode="buildtime" name="tar">
|
||||||
<service mode="buildtime" name="recompress">
|
<param name="obsinfo">hauler.obsinfo</param>
|
||||||
<param name="file">*.tar</param>
|
|
||||||
<param name="compression">gz</param>
|
|
||||||
</service>
|
</service>
|
||||||
<service mode="buildtime" name="set_version" />
|
<service mode="buildtime" name="set_version" />
|
||||||
<service name="go_modules">
|
<service name="go_modules">
|
||||||
|
@ -23,7 +23,7 @@ Release: 0
|
|||||||
Summary: Airgap Swiss Army Knife
|
Summary: Airgap Swiss Army Knife
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
URL: https://github.com/hauler-dev/hauler
|
URL: https://github.com/hauler-dev/hauler
|
||||||
Source: hauler-%{version}.tar.gz
|
Source: hauler-%{version}.tar
|
||||||
Source1: vendor.tar.gz
|
Source1: vendor.tar.gz
|
||||||
BuildRequires: golang-packaging
|
BuildRequires: golang-packaging
|
||||||
BuildRequires: cosign
|
BuildRequires: cosign
|
||||||
|
@ -12,10 +12,8 @@
|
|||||||
<param name="without-version">yes</param>
|
<param name="without-version">yes</param>
|
||||||
<param name="versionrewrite-replacement">\1</param>
|
<param name="versionrewrite-replacement">\1</param>
|
||||||
</service>
|
</service>
|
||||||
<service mode="buildtime" name="tar" />
|
<service mode="buildtime" name="tar" >
|
||||||
<service mode="buildtime" name="recompress">
|
<param name="obsinfo">kube-rbac-proxy.obsinfo</param>
|
||||||
<param name="file">*.tar</param>
|
|
||||||
<param name="compression">gz</param>
|
|
||||||
</service>
|
</service>
|
||||||
<service name="go_modules">
|
<service name="go_modules">
|
||||||
</service>
|
</service>
|
||||||
|
@ -22,7 +22,7 @@ Release: 0.18.1
|
|||||||
Summary: The kube-rbac-proxy is a small HTTP proxy for a single upstream
|
Summary: The kube-rbac-proxy is a small HTTP proxy for a single upstream
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
URL: https://github.com/brancz/kube-rbac-proxy
|
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
|
Source1: vendor.tar.gz
|
||||||
BuildRequires: golang(API) = 1.23
|
BuildRequires: golang(API) = 1.23
|
||||||
ExcludeArch: s390
|
ExcludeArch: s390
|
||||||
|
@ -12,10 +12,8 @@
|
|||||||
<param name="without-version">yes</param>
|
<param name="without-version">yes</param>
|
||||||
<param name="versionrewrite-replacement">\1</param>
|
<param name="versionrewrite-replacement">\1</param>
|
||||||
</service>
|
</service>
|
||||||
<service mode="buildtime" name="tar" />
|
<service mode="buildtime" name="tar">
|
||||||
<service mode="buildtime" name="recompress">
|
<param name="obsinfo">metallb.obsinfo</param>
|
||||||
<param name="file">*.tar</param>
|
|
||||||
<param name="compression">gz</param>
|
|
||||||
</service>
|
</service>
|
||||||
<service name="go_modules">
|
<service name="go_modules">
|
||||||
</service>
|
</service>
|
||||||
|
@ -22,7 +22,7 @@ Release: 0.14.8
|
|||||||
Summary: Load Balancer for bare metal Kubernetes clusters
|
Summary: Load Balancer for bare metal Kubernetes clusters
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
URL: https://github.com/metallb/metallb
|
URL: https://github.com/metallb/metallb
|
||||||
Source: %{name}-%{version}.tar.gz
|
Source: %{name}-%{version}.tar
|
||||||
Source1: vendor.tar.gz
|
Source1: vendor.tar.gz
|
||||||
BuildRequires: golang(API) = 1.22
|
BuildRequires: golang(API) = 1.22
|
||||||
ExcludeArch: s390
|
ExcludeArch: s390
|
||||||
|
@ -9,7 +9,9 @@
|
|||||||
<param name="versionrewrite-replacement">\1</param>
|
<param name="versionrewrite-replacement">\1</param>
|
||||||
<param name="changesgenerate">enable</param>
|
<param name="changesgenerate">enable</param>
|
||||||
</service>
|
</service>
|
||||||
<service mode="buildtime" name="tar" />
|
<service mode="buildtime" name="tar">
|
||||||
|
<param name="obsinfo">nm-configurator.obsinfo</param>
|
||||||
|
</service>
|
||||||
<service mode="buildtime" name="set_version"/>
|
<service mode="buildtime" name="set_version"/>
|
||||||
<service mode="manual" name="cargo_vendor">
|
<service mode="manual" name="cargo_vendor">
|
||||||
<param name="src">nm-configurator</param>
|
<param name="src">nm-configurator</param>
|
||||||
|
@ -9,10 +9,8 @@
|
|||||||
<param name="versionrewrite-replacement">\1.\2.\3</param>
|
<param name="versionrewrite-replacement">\1.\2.\3</param>
|
||||||
<param name="changesgenerate">enable</param>
|
<param name="changesgenerate">enable</param>
|
||||||
</service>
|
</service>
|
||||||
<service mode="buildtime" name="tar" />
|
<service mode="buildtime" name="tar">
|
||||||
<service mode="buildtime" name="recompress">
|
<param name="obsinfo">upgrade-controller.obsinfo</param>
|
||||||
<param name="file">*.tar</param>
|
|
||||||
<param name="compression">gz</param>
|
|
||||||
</service>
|
</service>
|
||||||
<service name="go_modules">
|
<service name="go_modules">
|
||||||
<param name="compression">gz</param>
|
<param name="compression">gz</param>
|
||||||
|
@ -22,7 +22,7 @@ Release: 0
|
|||||||
Summary: Upgrade Controller
|
Summary: Upgrade Controller
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
URL: https://github.com/suse-edge/upgrade-controller
|
URL: https://github.com/suse-edge/upgrade-controller
|
||||||
Source: upgrade-controller-%{version}.tar.gz
|
Source: upgrade-controller-%{version}.tar
|
||||||
Source1: vendor.tar.gz
|
Source1: vendor.tar.gz
|
||||||
BuildRequires: golang(API) go1.22
|
BuildRequires: golang(API) go1.22
|
||||||
BuildRequires: golang-packaging
|
BuildRequires: golang-packaging
|
||||||
|
Loading…
x
Reference in New Issue
Block a user