Fix post-install for forgejo deployment
Handle initializing the forgejo database and reinstallogrepository-integration
parent
3ef8fe9dcd
commit
1d1f2caab8
|
@ -928,6 +928,7 @@ class OpengnsysGitInstaller:
|
||||||
self.__logger.debug("Reloading systemd and starting service")
|
self.__logger.debug("Reloading systemd and starting service")
|
||||||
subprocess.run(["systemctl", "daemon-reload"], check=True)
|
subprocess.run(["systemctl", "daemon-reload"], check=True)
|
||||||
subprocess.run(["systemctl", "enable", "opengnsys-forgejo"], check=True)
|
subprocess.run(["systemctl", "enable", "opengnsys-forgejo"], check=True)
|
||||||
|
|
||||||
subprocess.run(["systemctl", "restart", "opengnsys-forgejo"], check=True)
|
subprocess.run(["systemctl", "restart", "opengnsys-forgejo"], check=True)
|
||||||
|
|
||||||
self.__logger.info("Waiting for forgejo to start")
|
self.__logger.info("Waiting for forgejo to start")
|
||||||
|
@ -936,27 +937,38 @@ class OpengnsysGitInstaller:
|
||||||
|
|
||||||
self.__logger.info("Configuring forgejo")
|
self.__logger.info("Configuring forgejo")
|
||||||
|
|
||||||
def run_forge_cmd(args):
|
def run_forge_cmd(args, ignore_errors = []):
|
||||||
cmd = [self.forgejo_exe, "--config", conf_path] + args
|
cmd = [self.forgejo_exe, "--config", conf_path] + args
|
||||||
self.__logger.debug("Running command: %s", cmd)
|
self.__logger.info("Running command: %s", cmd)
|
||||||
|
|
||||||
ret = subprocess.run(cmd, check=False, capture_output=True, encoding='utf-8', user=self.ssh_user)
|
ret = subprocess.run(cmd, check=False, capture_output=True, encoding='utf-8', user=self.ssh_user)
|
||||||
if ret.returncode == 0:
|
if ret.returncode == 0:
|
||||||
return ret.stdout.strip()
|
return ret.stdout.strip()
|
||||||
else:
|
else:
|
||||||
self.__logger.error("Failed to run command: %s, return code %i", cmd, ret.returncode)
|
self.__logger.error("Failed to run command: %s, return code %i", cmd, ret.returncode)
|
||||||
self.__logger.error("stdout: %s", ret.stdout)
|
self.__logger.error("stdout: %s", ret.stdout.strip())
|
||||||
self.__logger.error("stderr: %s", ret.stderr)
|
self.__logger.error("stderr: %s", ret.stderr.strip())
|
||||||
|
|
||||||
|
for err in ignore_errors:
|
||||||
|
if err in ret.stderr:
|
||||||
|
self.__logger.info("Ignoring error, it's in the ignore list")
|
||||||
|
return ret.stdout.strip()
|
||||||
|
|
||||||
raise RuntimeError("Failed to run necessary command")
|
raise RuntimeError("Failed to run necessary command")
|
||||||
|
|
||||||
|
run_forge_cmd(["migrate"])
|
||||||
|
|
||||||
run_forge_cmd(["admin", "doctor", "check"])
|
run_forge_cmd(["admin", "doctor", "check"])
|
||||||
|
|
||||||
run_forge_cmd(["admin", "user", "create", "--username", self.forgejo_user, "--password", self.forgejo_password, "--email", self.email])
|
run_forge_cmd(["admin", "user", "create", "--username", self.forgejo_user, "--password", self.forgejo_password, "--email", self.email], ignore_errors=["user already exists"])
|
||||||
|
|
||||||
token = run_forge_cmd(["admin", "user", "generate-access-token", "--username", self.forgejo_user, "-t", "gitapi", "--scopes", "all", "--raw"])
|
token = run_forge_cmd(["admin", "user", "generate-access-token", "--username", self.forgejo_user, "-t", "gitapi", "--scopes", "all", "--raw"], ignore_errors = ["access token name has been used already"])
|
||||||
|
|
||||||
|
if token:
|
||||||
with open(os.path.join(self.base_path, "etc", "ogGitApiToken.cfg"), "w+", encoding='utf-8') as token_file:
|
with open(os.path.join(self.base_path, "etc", "ogGitApiToken.cfg"), "w+", encoding='utf-8') as token_file:
|
||||||
token_file.write(token)
|
token_file.write(token)
|
||||||
|
else:
|
||||||
|
self.__logger.info("Keeping the old token")
|
||||||
|
|
||||||
|
|
||||||
def add_forgejo_repo(self, repository_name, description = ""):
|
def add_forgejo_repo(self, repository_name, description = ""):
|
||||||
|
|
Loading…
Reference in New Issue