Compare commits
17 Commits
update-eib
...
devel
Author | SHA256 | Date | |
---|---|---|---|
b1dfe698ff | |||
9581e030ce | |||
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()
|
@ -1,5 +1,5 @@
|
||||
#!BuildTag: %%IMG_PREFIX%%edge-image-builder:1.2.0-rc1
|
||||
#!BuildTag: %%IMG_PREFIX%%edge-image-builder:1.2.0-rc1-%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.2.0-rc1"
|
||||
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.2.0-rc1-%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,15 +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@_%h.%ad</param>
|
||||
<param name="scm">git</param>
|
||||
<param name="exclude">.git</param>
|
||||
<param name="revision">v1.2.0-rc1</param>
|
||||
<!-- Uncomment and set this For Pre-Release Version -->
|
||||
<param name="version">1.2.0~rc1</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="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,7 +17,7 @@
|
||||
|
||||
|
||||
Name: edge-image-builder
|
||||
Version: 1.2.0~rc1
|
||||
Version: 0
|
||||
Release: 0
|
||||
Summary: Edge Image Builder
|
||||
License: Apache-2.0
|
||||
|
Reference in New Issue
Block a user