forked from suse-edge/Factory
		
	Compare commits
	
		
			17 Commits
		
	
	
		
	
	| Author | SHA256 | Date | |
|---|---|---|---|
| b1dfe698ff | |||
| 9581e030ce | |||
| 76036c2dd8 | |||
| 0c6db5d5cc | |||
| 0b03d14cee | |||
| 9f2dc045e9 | |||
|  | f90f614746 | ||
| 35f06da226 | |||
| 8dd6d7d9d7 | |||
| f9c5a29a9f | |||
| 1b83b54b58 | |||
| c6b64a252f | |||
| 689c80ffcc | |||
| d8745fe060 | |||
| 9e39bdcf7f | |||
| 9e376ffb74 | |||
| 0fc166ff06 | 
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,3 +1,4 @@ | |||||||
| */.osc | */.osc | ||||||
| */__pycache__ | */__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" | 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:%PACKAGE_VERSION% | ||||||
| #!BuildTag: %%IMG_PREFIX%%edge-image-builder:1.2.0-rc1-%RELEASE% | #!BuildTag: %%IMG_PREFIX%%edge-image-builder:%PACKAGE_VERSION%-%RELEASE% | ||||||
| #!BuildVersion: 15.6 | #!BuildVersion: 15.6 | ||||||
| ARG SLE_VERSION | ARG SLE_VERSION | ||||||
| FROM registry.suse.com/bci/bci-base:$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.authors="SUSE LLC (https://www.suse.com/)" | ||||||
| LABEL org.opencontainers.image.title="SLE edge-image-builder Container Image" | 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.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.url="https://www.suse.com/products/server/" | ||||||
| LABEL org.opencontainers.image.created="%BUILDTIME%" | LABEL org.opencontainers.image.created="%BUILDTIME%" | ||||||
| LABEL org.opencontainers.image.vendor="SUSE LLC" | 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 org.openbuildservice.disturl="%DISTURL%" | ||||||
| LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | ||||||
| LABEL com.suse.eula="SUSE Combined EULA February 2024" | LABEL com.suse.eula="SUSE Combined EULA February 2024" | ||||||
|   | |||||||
| @@ -1,5 +1,10 @@ | |||||||
| <services> | <services> | ||||||
|   <service mode="buildtime" name="kiwi_metainfo_helper"/> |   <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"> |   <service name="replace_using_env" mode="buildtime"> | ||||||
|     <param name="file">Dockerfile</param> |     <param name="file">Dockerfile</param> | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> | ||||||
|   | |||||||
| @@ -1,15 +1,12 @@ | |||||||
| <services> | <services> | ||||||
|   <service name="obs_scm"> |   <service name="obs_scm"> | ||||||
|     <param name="url">https://github.com/suse-edge/edge-image-builder.git</param> |     <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="scm">git</param> | ||||||
|     <param name="exclude">.git</param> |     <param name="exclude">.git</param> | ||||||
|     <param name="revision">v1.2.0-rc1</param> |     <param name="revision">main</param> | ||||||
|     <!-- Uncomment and set this For Pre-Release Version --> |     <param name="versionrewrite-pattern">v(.*)</param> | ||||||
|     <param name="version">1.2.0~rc1</param> |     <param name="versionrewrite-replacement">\1</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> |     <param name="changesgenerate">enable</param> | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="tar"> |   <service mode="buildtime" name="tar"> | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| Name:           edge-image-builder | Name:           edge-image-builder | ||||||
| Version:        1.2.0~rc1 | Version:        0 | ||||||
| Release:        0 | Release:        0 | ||||||
| Summary:        Edge Image Builder | Summary:        Edge Image Builder | ||||||
| License:        Apache-2.0 | License:        Apache-2.0 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user