mirror of
https://gitlab.archlinux.org/archlinux/archlinux-docker.git
synced 2025-08-07 14:47:14 +02:00
93 lines
2.7 KiB
Python
Executable File
93 lines
2.7 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
"""
|
|
Should only be called from GitLab CI!
|
|
|
|
Required env vars:
|
|
- GITLAB_PROJECT_TOKEN
|
|
- BUILD_VERSION
|
|
- CI_PROJECT_ID
|
|
- CI_PROJECT_URL
|
|
"""
|
|
|
|
import os
|
|
import re
|
|
from pathlib import Path
|
|
import gitlab
|
|
|
|
token = os.environ['GITLAB_PROJECT_TOKEN']
|
|
build_version = os.environ['BUILD_VERSION']
|
|
project_id = os.environ['CI_PROJECT_ID']
|
|
project_url = os.environ['CI_PROJECT_URL']
|
|
|
|
|
|
def upload(name):
|
|
print(f"Uploading {name}.tar.xz")
|
|
filename = f"{name}-{build_version}.tar.xz"
|
|
uploaded_url = project.upload(
|
|
filename, filepath=f"output/{name}.tar.xz"
|
|
)["url"]
|
|
template = Path("Dockerfile.template").read_text()
|
|
full_url = f"{project_url}{uploaded_url}"
|
|
replaced = template.replace("TEMPLATE_ROOTFS_URL", full_url)
|
|
rootfs_sha256 = Path('output/{name}.tar.xz.SHA256').read_text()[0:64]
|
|
hash_string = f"{rootfs_sha256} {filename}"
|
|
replaced = replaced.replace(
|
|
"TEMPLATE_ROOTFS_HASH", hash_string
|
|
)
|
|
# Remove the line containing TEMPLATE_ROOTFS_FILE
|
|
replaced = re.sub(".*TEMPLATE_ROOTFS_FILE.*\n", "", replaced)
|
|
return replaced, full_url
|
|
|
|
|
|
if __name__ == "__main__":
|
|
gl = gitlab.Gitlab("https://gitlab.archlinux.org", token)
|
|
project = gl.projects.get(project_id)
|
|
|
|
base_replaced, base_full_url = upload("base")
|
|
base_devel_replaced, base_devel_full_url = upload("base-devel")
|
|
|
|
print("Templating Dockerfiles")
|
|
data = {
|
|
"branch": "add-base-devel-tags",
|
|
"commit_message": f"Release {build_version}",
|
|
"actions": [
|
|
{
|
|
"action": "update",
|
|
"file_path": "ci/base/Dockerfile",
|
|
"content": base_replaced,
|
|
},
|
|
{
|
|
"action": "update",
|
|
"file_path": "ci/base-devel/Dockerfile",
|
|
"content": base_devel_replaced,
|
|
},
|
|
],
|
|
}
|
|
project.commits.create(data)
|
|
|
|
print("Creating release")
|
|
release = project.releases.create(
|
|
{
|
|
"name": f"Release {build_version}",
|
|
"tag_name": build_version,
|
|
"description": f"Release {build_version}",
|
|
"ref": "add-base-devel-tags",
|
|
"assets": {
|
|
"links": [
|
|
{
|
|
"name": "base.tar.xz",
|
|
"url": base_full_url,
|
|
"link_type": "package",
|
|
},
|
|
{
|
|
"name": "base-devel.tar.xz",
|
|
"url": base_devel_full_url,
|
|
"link_type": "package",
|
|
}
|
|
]
|
|
},
|
|
}
|
|
)
|
|
print("Created release", release.get_id())
|