Reduce scope of the git hook script
The git hook script should only extract the necessary information the build script needs to operate. Right now this is only the commit before the push and after the push, and the refname is added for future use. The name of the variables passed to the laminar build are modeled after those found in the GitLab CI documentation, just for some familiarity. The functionality of finding the relevant directories has been moved to the build script.
This commit is contained in:
parent
ae458763ae
commit
7f1c755c4e
1 changed files with 11 additions and 16 deletions
|
@ -3,26 +3,21 @@
|
||||||
from shlex import quote
|
from shlex import quote
|
||||||
from subprocess import run
|
from subprocess import run
|
||||||
import os
|
import os
|
||||||
import re
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
directories = set()
|
|
||||||
|
|
||||||
for line in sys.stdin:
|
for line in sys.stdin:
|
||||||
precommit, postcommit, refname = line.split(' ')
|
precommit, postcommit, refname = line.strip().split(' ')
|
||||||
|
|
||||||
if not refname == "refs/heads/main":
|
if not refname == "refs/heads/main":
|
||||||
print(f"Skipping ref {refname}")
|
print(f"Skipping ref \"{refname}\"")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
print(f"precommit: {precommit}; postcommit: {postcommit}; refname: {refname}")
|
os.putenv("LAMINAR_REASON", "Push to git repository")
|
||||||
|
cmd = "laminarc queue freeloadio " \
|
||||||
if not re.match(r"^0+$", precommit):
|
f"CI_COMMIT_BEFORE_SHA={quote(precommit)} " \
|
||||||
process = run(f"git diff --name-only {quote(precommit)} {quote(postcommit)}", shell=True, capture_output=True)
|
f"CI_COMMIT_SHA={quote(postcommit)} " \
|
||||||
for filename in process.stdout.strip().split(b'\n'):
|
f"CI_COMMIT_REF_NAME={quote(refname)}"
|
||||||
directories.add(os.path.dirname(filename).decode())
|
print(cmd)
|
||||||
|
process = run(cmd, shell=True, capture_output=True)
|
||||||
os.putenv("LAMINAR_REASON", "Push to git repository")
|
buildname, buildrun = process.stdout.decode().strip().split(':')
|
||||||
process = run(f"laminarc queue freeloadio directories={quote(str.join(';', directories))}", shell=True, capture_output=True)
|
print(f"Queued build: https://laminar.ryuslash.org/jobs/{buildname}/{buildrun}")
|
||||||
buildname, buildrun = process.stdout.strip().split(b':')
|
|
||||||
print(f"Queued build: https://laminar.ryuslash.org/jobs/{buildname}/{buildrun}")
|
|
||||||
|
|
Loading…
Reference in a new issue