26 lines
1.1 KiB
Python
26 lines
1.1 KiB
Python
import os
|
|
import re
|
|
import shlex
|
|
import subprocess
|
|
import sys
|
|
import tempfile
|
|
from pathlib import Path
|
|
|
|
|
|
def main():
|
|
ref=sys.argv[1]
|
|
if ref not in ('HEAD:next','trunk') and not re.fullmatch(r'refs/tags/[A-Za-z0-9][A-Za-z0-9._-]*',ref):
|
|
raise ValueError('Unexpected publication ref')
|
|
repository=os.environ['GITHUB_REPOSITORY']
|
|
if not re.fullmatch(r'deytenit/[A-Za-z0-9_.-]+',repository):
|
|
raise ValueError('Unexpected repository owner')
|
|
with tempfile.TemporaryDirectory(prefix='gitea-write-key-') as directory:
|
|
key=Path(directory)/'key';key.write_text(os.environ['GIT_WRITE_KEY']);key.chmod(0o600)
|
|
known=Path(__file__).resolve().parent.parent/'known_hosts'
|
|
env=dict(os.environ);env.pop('GIT_WRITE_KEY',None)
|
|
env['GIT_SSH_COMMAND']=shlex.join(['ssh','-T','-i',str(key),'-o','IdentitiesOnly=yes','-o','StrictHostKeyChecking=yes','-o','HostKeyAlgorithms=ssh-ed25519','-o','UserKnownHostsFile='+str(known)])
|
|
subprocess.run(['git','push','ssh://git@git.ermnvldmr.com:22222/'+repository+'.git',ref],env=env,check=True)
|
|
|
|
|
|
if __name__=='__main__':main()
|