refactor progress
This commit is contained in:
122
scripts/ci/workflows/release_livekitctl.py
Normal file
122
scripts/ci/workflows/release_livekitctl.py
Normal file
@@ -0,0 +1,122 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import pathlib
|
||||
import sys
|
||||
|
||||
sys.path.append(str(pathlib.Path(__file__).resolve().parents[1]))
|
||||
|
||||
from cli_release import (
|
||||
determine_cli_version,
|
||||
generate_checksums,
|
||||
prepare_release_assets,
|
||||
write_cli_version_outputs,
|
||||
)
|
||||
from ci_workflow import EnvArg, apply_env_args, build_step_parser
|
||||
from ci_utils import require_env, run_step
|
||||
|
||||
|
||||
BINARY_PREFIX = "livekitctl"
|
||||
TAG_PREFIX = "livekitctl-v"
|
||||
PROJECT_DIR = pathlib.Path("fluxer_devops/livekitctl")
|
||||
|
||||
|
||||
def determine_version_step() -> None:
|
||||
import os
|
||||
|
||||
require_env(["EVENT_NAME"])
|
||||
info = determine_cli_version(
|
||||
event_name=os.environ["EVENT_NAME"],
|
||||
input_version=os.environ.get("INPUT_VERSION", ""),
|
||||
ref_name=os.environ.get("REF_NAME", ""),
|
||||
tag_prefix=TAG_PREFIX,
|
||||
)
|
||||
write_cli_version_outputs(info)
|
||||
|
||||
|
||||
def build_binary_step() -> None:
|
||||
from ci_utils import run_bash
|
||||
|
||||
run_bash(
|
||||
f"""
|
||||
set -euo pipefail
|
||||
cd {PROJECT_DIR}
|
||||
go build -ldflags=\"-s -w\" -o {BINARY_PREFIX}-${{GOOS}}-${{GOARCH}} .
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
def prepare_release_assets_step(artifacts_dir: pathlib.Path, release_dir: pathlib.Path) -> None:
|
||||
prepare_release_assets(
|
||||
artifacts_dir=artifacts_dir,
|
||||
release_dir=release_dir,
|
||||
binary_prefix=BINARY_PREFIX,
|
||||
)
|
||||
|
||||
|
||||
def generate_checksums_step(release_dir: pathlib.Path) -> None:
|
||||
files = release_dir.glob(f"{BINARY_PREFIX}-*")
|
||||
generate_checksums(files, release_dir / "checksums.txt")
|
||||
|
||||
|
||||
def create_tag_step() -> None:
|
||||
from ci_utils import run_bash
|
||||
from ci_utils import require_env
|
||||
|
||||
require_env(["TAG", "VERSION"])
|
||||
run_bash(
|
||||
"""
|
||||
set -euo pipefail
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||||
git tag -a "${TAG}" -m "Release livekitctl v${VERSION}"
|
||||
git push origin "${TAG}"
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
STEPS = {
|
||||
"determine_version": determine_version_step,
|
||||
"build_binary": build_binary_step,
|
||||
"prepare_release_assets": prepare_release_assets_step,
|
||||
"generate_checksums": generate_checksums_step,
|
||||
"create_tag": create_tag_step,
|
||||
}
|
||||
|
||||
|
||||
ENV_ARGS = [
|
||||
EnvArg("--event-name", "EVENT_NAME"),
|
||||
EnvArg("--input-version", "INPUT_VERSION"),
|
||||
EnvArg("--ref-name", "REF_NAME"),
|
||||
EnvArg("--version", "VERSION"),
|
||||
EnvArg("--tag", "TAG"),
|
||||
]
|
||||
|
||||
|
||||
def parse_args():
|
||||
parser = build_step_parser(ENV_ARGS)
|
||||
parser.add_argument("--artifacts-dir", default="artifacts")
|
||||
parser.add_argument("--release-dir", default="release")
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def main() -> int:
|
||||
args = parse_args()
|
||||
apply_env_args(args, ENV_ARGS)
|
||||
|
||||
if args.step == "prepare_release_assets":
|
||||
prepare_release_assets_step(
|
||||
pathlib.Path(args.artifacts_dir),
|
||||
pathlib.Path(args.release_dir),
|
||||
)
|
||||
return 0
|
||||
|
||||
if args.step == "generate_checksums":
|
||||
generate_checksums_step(pathlib.Path(args.release_dir))
|
||||
return 0
|
||||
|
||||
run_step(STEPS, args.step)
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user