Skip to content

Add script to publish custom tags on a fork #34

@taniabogatsch

Description

@taniabogatsch

Only extracting the zipped archives is still a bit error-prone and should be improved.

Expected directory structure:

- my_dir
   - script.py
   - artifacts
   - repo_will_go_here
import subprocess
import os
import argparse
from io import StringIO

# NOTE: Invoke the CI run BundleStaticLibs.yml on the branch for which you want to publish a custom build.

# NOTE: Currently, you have to download the artifacts into the artifacts folder by hand.
# After downloading, it should contain
# - duckdb-static-libs-osx-arm64.zip
# - duckdb-static-libs-osx-amd64.zip
# - duckdb-static-libs-linux-arm64.zip
# - duckdb-static-libs-linux-amd64.zip
# - duckdb-static-libs-windows-amd64.zip

# NOTE: Make sure your fork has the latest main of duckdb-go-bindings.

owner = "taniabogatsch"
custom_build_branch = "v1.4-custom"

# NOTE: Don't change the v0 (major version).
bindings_version = 'v0.4.0'

names = [
    "static-libs-osx-arm64",
    "static-libs-osx-amd64",
    "static-libs-linux-arm64",
    "static-libs-linux-amd64",
    "static-libs-windows-mingw",
]

binding_repos = [
    "darwin-arm64",
    "darwin-amd64",
    "linux-arm64",
    "linux-amd64",
    "windows-amd64",
]

print('Check out repository and branch.')

subprocess.run(["git", "clone", f'git@github.com:{owner}/duckdb-go-bindings.git'])
subprocess.run(['git', '-C', 'duckdb-go-bindings/.', 'checkout', '-b', custom_build_branch])

# TODO: unzipping doesn't work reliably yet, maybe we assume unzipped?

# print('Delete existing files and unzip new files.')

# for idx, repo in enumerate(binding_repos):
#     subprocess.run(["unzip", f'artifacts/duckdb-{names[idx]}.zip', '-d', f'duckdb-go-bindings/{repo}'])
#     subprocess.run(["unzip", '-o', f'duckdb-go-bindings/{repo}/{names[idx]}.zip', '-d', f'duckdb-go-bindings/{repo}/'])
#     subprocess.run(['rm', '-f', f'duckdb-go-bindings/{repo}/{names[idx]}.zip'])
# 
# subprocess.run(['rm', '-f', f'duckdb-go-bindings/duckdb.h'])
# subprocess.run(['cp', 'duckdb-go-bindings/darwin-arm64/duckdb.h', 'duckdb-go-bindings/duckdb.h'])

print('Replace all paths.')

for repo in binding_repos:
    subprocess.run(['sed', '-i', '', f's_github.com/duckdb/duckdb-go-bindings_github.com/{owner}/duckdb-go-bindings_g', f'duckdb-go-bindings/{repo}/go.mod'])

subprocess.run(['sed', '-i', '', f's_github.com/duckdb/duckdb-go-bindings_github.com/{owner}/duckdb-go-bindings_g', f'duckdb-go-bindings/go.mod'])

print('Remove SQLite test.')

for repo in binding_repos:
    subprocess.run(['rm', '-f', f'duckdb-go-bindings/{repo}/bindings_extensions_test.go'])

subprocess.run(['rm', '-f', f'duckdb-go-bindings/bindings_extensions_test.go'])

print('Push the duckdb-go-bindings branch.')

subprocess.run(['git', '-C', 'duckdb-go-bindings/.', 'add', '.'])
subprocess.run(['git', '-C', 'duckdb-go-bindings/.', 'commit', '-m', 'push custom libraries'])
subprocess.run(['git', '-C', 'duckdb-go-bindings/.', 'push', '--set-upstream', 'origin', custom_build_branch])

print('Push the duckdb-go-bindings tags.')

for repo in binding_repos:
    subprocess.run(['git', '-C', 'duckdb-go-bindings/.', 'tag', f'{repo}/{bindings_version}'])
    subprocess.run(['git', '-C', 'duckdb-go-bindings/.', 'push', 'origin', f'{repo}/{bindings_version}'])

subprocess.run(['git', '-C', 'duckdb-go-bindings/.', 'tag', f'{bindings_version}'])
subprocess.run(['git', '-C', 'duckdb-go-bindings/.', 'push', 'origin', f'{bindings_version}'])

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions