Compare commits
33 Commits
a76fcd91cb
...
devel
Author | SHA256 | Date | |
---|---|---|---|
b1dfe698ff | |||
9581e030ce | |||
e71339ae00 | |||
f32718b5e4 | |||
c81f5057ce | |||
6b8109c772 | |||
8b383c15fa | |||
2013caec19 | |||
4259b167fd | |||
652fc553b9 | |||
1048591769 | |||
8a9717c266 | |||
49405f41f9 | |||
be29dbba41 | |||
a2c817259f | |||
dfe4892f4c | |||
ef68dbfd92 | |||
6c1db68da8 | |||
76036c2dd8 | |||
0c6db5d5cc | |||
0b03d14cee | |||
9f2dc045e9 | |||
|
f90f614746 | ||
35f06da226 | |||
8dd6d7d9d7 | |||
f9c5a29a9f | |||
1b83b54b58 | |||
c6b64a252f | |||
689c80ffcc | |||
d8745fe060 | |||
9e39bdcf7f | |||
9e376ffb74 | |||
0fc166ff06 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
*/.osc
|
||||
*/__pycache__
|
||||
.venv/
|
||||
.venv/
|
||||
.idea/
|
@@ -1,3 +1,3 @@
|
||||
PROJECT = "isv:SUSE:Edge:Factory"
|
||||
PROJECT = "isv:SUSE:Edge:Factory:Devel"
|
||||
REPOSITORY = "https://src.opensuse.org/suse-edge/Factory"
|
||||
BRANCH = "main"
|
||||
BRANCH = "devel"
|
||||
|
65
.obs/trigger_package.py
Normal file
65
.obs/trigger_package.py
Normal file
@@ -0,0 +1,65 @@
|
||||
import xml.etree.ElementTree as ET
|
||||
import subprocess
|
||||
|
||||
from sync_packages import get_local_packages
|
||||
from common import PROJECT
|
||||
|
||||
def get_service_repo(package):
|
||||
with open(f"{package}/_service") as service:
|
||||
root = ET.parse(service).getroot()
|
||||
for service in root.findall("service"):
|
||||
if service.get("mode") in ["manual", "disabled"]:
|
||||
continue
|
||||
if service.get("name") not in ["obs_scm", "tar_scm"]:
|
||||
continue
|
||||
ref = service.find("param[@name='revision']").text
|
||||
repo = service.find("param[@name='url']").text
|
||||
return (repo, ref)
|
||||
return None
|
||||
|
||||
|
||||
def get_remote_ref(project, package):
|
||||
files = subprocess.run(["osc", "ls", "-e", project, package], encoding='utf-8' , capture_output=True).stdout.splitlines()
|
||||
for filename in files:
|
||||
if filename.startswith("_service") and filename.endswith(".obsinfo"):
|
||||
obsinfo = subprocess.run(["osc", "cat", project, package, filename], encoding='utf-8' , capture_output=True).stdout.splitlines()
|
||||
for line in obsinfo:
|
||||
if line.startswith("commit:"):
|
||||
return line.split(':')[-1].strip()
|
||||
|
||||
def get_upstream_ref(repo, ref):
|
||||
refs = subprocess.run(["git", "ls-remote", repo, ref, f"{ref}^{{}}"], encoding='utf-8' , capture_output=True).stdout.splitlines()
|
||||
refpath = ref.split('/')
|
||||
best = None
|
||||
for rref in refs:
|
||||
value = rref.split('\t')
|
||||
(sha, name) = (value[0].strip(), value[1].strip())
|
||||
namepath = name.split('/')
|
||||
if len(namepath) == len(refpath) or len(namepath) - 2 == len(refpath):
|
||||
if name.endswith(ref) and best is None:
|
||||
best = sha
|
||||
if name.endswith("^{}"):
|
||||
best = sha
|
||||
return best
|
||||
|
||||
def trigger_service(project, package):
|
||||
subprocess.run(["osc", "service", "remoterun", project, package], encoding="utf-8",check=True)
|
||||
|
||||
def main():
|
||||
packages = get_local_packages()
|
||||
for package in packages:
|
||||
try:
|
||||
(repo, ref) = get_service_repo(package)
|
||||
print(f"{package} uses {repo} at {ref}")
|
||||
except: # Package is not using server side scm service
|
||||
continue
|
||||
remote_ref = get_remote_ref(PROJECT, package)
|
||||
upstream_ref = get_upstream_ref(repo, ref)
|
||||
if upstream_ref != remote_ref:
|
||||
print(f"\t{package} needs a refresh")
|
||||
print(f"\tOBS ref is {remote_ref}")
|
||||
print(f"\tgit ref is {upstream_ref}")
|
||||
trigger_service(PROJECT, package)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
20
_config
20
_config
@@ -60,7 +60,7 @@ BuildFlags: onlybuild:release-manifest-image
|
||||
BuildFlags: excludebuild:endpoint-copier-operator-image
|
||||
BuildFlags: excludebuild:ironic-image
|
||||
BuildFlags: excludebuild:ironic-ipa-downloader-image
|
||||
BuildFlags: excludebuild:kiwi-builder-image
|
||||
BuildFlags: excludebuild:kubectl-image
|
||||
BuildFlags: excludebuild:kube-rbac-proxy-image
|
||||
BuildFlags: excludebuild:metallb-controller-image
|
||||
BuildFlags: excludebuild:metallb-speaker-image
|
||||
@@ -85,6 +85,8 @@ BuildFlags: onlybuild:release-manifest-image
|
||||
BuildFlags: onlybuild:ironic-image
|
||||
BuildFlags: onlybuild:ironic-ipa-downloader-image
|
||||
BuildFlags: onlybuild:ironic-ipa-ramdisk
|
||||
BuildFlags: onlybuild:kubectl
|
||||
BuildFlags: onlybuild:kubectl-image
|
||||
BuildFlags: onlybuild:kube-rbac-proxy
|
||||
BuildFlags: onlybuild:kube-rbac-proxy-image
|
||||
BuildFlags: onlybuild:metallb
|
||||
@@ -123,6 +125,22 @@ BuildFlags: onlybuild:release-manifest-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:kubectl-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
|
||||
|
||||
|
||||
|
2
_meta
2
_meta
@@ -42,8 +42,8 @@
|
||||
<path project="SUSE:SLFO:Products:SLES:16.0" repository="standard"/>
|
||||
<path project="SUSE:SLFO:Main:Build" repository="standard"/>
|
||||
{%- else %}
|
||||
<path project="{{ project }}" repository="standard"/>
|
||||
<path project="SUSE:CA" repository="SLE_15_SP6"/>
|
||||
<path project="{{ project }}" repository="standard"/>
|
||||
{%- endif %}
|
||||
<arch>x86_64</arch>
|
||||
<arch>aarch64</arch>
|
||||
|
@@ -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:%PACKAGE_VERSION%
|
||||
#!BuildTag: %%IMG_PREFIX%%edge-image-builder:%PACKAGE_VERSION%-%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="%PACKAGE_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%%edge-image-builder:1.1.0-%RELEASE%"
|
||||
LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%edge-image-builder:%PACKAGE_VERSION%-%RELEASE%"
|
||||
LABEL org.openbuildservice.disturl="%DISTURL%"
|
||||
LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%"
|
||||
LABEL com.suse.eula="SUSE Combined EULA February 2024"
|
||||
|
@@ -1,5 +1,10 @@
|
||||
<services>
|
||||
<service mode="buildtime" name="kiwi_metainfo_helper"/>
|
||||
<service name="replace_using_package_version" mode="buildtime">
|
||||
<param name="file">Dockerfile</param>
|
||||
<param name="regex">%PACKAGE_VERSION%</param>
|
||||
<param name="package">edge-image-builder</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,12 +1,12 @@
|
||||
<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="versionformat">@PARENT_TAG@_%h.%ad</param>
|
||||
<param name="scm">git</param>
|
||||
<param name="exclude">.git</param>
|
||||
<param name="revision">v1.1.0</param>
|
||||
<param name="versionrewrite-pattern">v(\d+).(\d+).(\d+)</param>
|
||||
<param name="versionrewrite-replacement">\1.\2.\3</param>
|
||||
<param name="revision">main</param>
|
||||
<param name="versionrewrite-pattern">v(.*)</param>
|
||||
<param name="versionrewrite-replacement">\1</param>
|
||||
<param name="changesgenerate">enable</param>
|
||||
</service>
|
||||
<service mode="buildtime" name="tar">
|
||||
|
@@ -17,14 +17,14 @@
|
||||
|
||||
|
||||
Name: edge-image-builder
|
||||
Version: 1.1.0
|
||||
Version: 0
|
||||
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
|
||||
Source1: vendor.tar.gz
|
||||
BuildRequires: golang(API) go1.22
|
||||
BuildRequires: golang(API) go1.24
|
||||
BuildRequires: golang-packaging
|
||||
BuildRequires: gpgme-devel
|
||||
BuildRequires: device-mapper-devel
|
||||
|
@@ -9,7 +9,7 @@ rancherTurtles:
|
||||
managerArguments: []
|
||||
imagePullSecrets: []
|
||||
rancherInstalled: false
|
||||
kubectlImage: "%%IMG_REPO%%/%%IMG_PREFIX%%/kubectl:1.30.3"
|
||||
kubectlImage: "%%IMG_REPO%%/%%IMG_PREFIX%%kubectl:1.30.3"
|
||||
features:
|
||||
day2operations:
|
||||
enabled: false
|
||||
|
Reference in New Issue
Block a user