feat: enable Gitea auto-start
- The Gitea installer now automatically starts the Gitea server after installation. - Updated the installer to include a `start()` function. - Added PostgreSQL installation and configuration to the Gitea installer. - Improved error handling and logging. - Updated configuration file template for better clarity and consistency. - Renamed some variables for better readability. Co-authored-by: mariobassem12 <mariobassem12@gmail.com>
This commit is contained in:
@@ -5,7 +5,7 @@ import freeflowuniverse.herolib.core
|
||||
import freeflowuniverse.herolib.ui.console
|
||||
import freeflowuniverse.herolib.installers.base
|
||||
import freeflowuniverse.herolib.installers.ulist
|
||||
import freeflowuniverse.herolib.installers.db.postgresql as postgresinstaller
|
||||
import freeflowuniverse.herolib.installers.db.postgresql as postgres_installer
|
||||
import freeflowuniverse.herolib.installers.virt.podman as podman_installer
|
||||
import freeflowuniverse.herolib.osal.zinit
|
||||
import os
|
||||
@@ -15,7 +15,7 @@ fn installed() !bool {
|
||||
mut podman := podman_installer.get()!
|
||||
podman.install()!
|
||||
|
||||
cmd := 'gitea version'
|
||||
cmd := 'gitea -v'
|
||||
result := os.execute(cmd)
|
||||
|
||||
if result.exit_code != 0 {
|
||||
@@ -24,6 +24,23 @@ fn installed() !bool {
|
||||
return true
|
||||
}
|
||||
|
||||
fn install_postgres(cfg GiteaServer) ! {
|
||||
postgres_heroscript := "
|
||||
!!postgresql.configure
|
||||
name: '${cfg.database_name}'
|
||||
user: '${cfg.database_user}'
|
||||
password: '${cfg.database_passwd}'
|
||||
host: '${cfg.database_host}'
|
||||
port: ${cfg.database_port}
|
||||
volume_path:'/var/lib/postgresql/data'
|
||||
container_name: 'herocontainer_postgresql'
|
||||
"
|
||||
|
||||
postgres_installer.play(heroscript: postgres_heroscript)!
|
||||
mut postgres := postgres_installer.get()!
|
||||
postgres.install()!
|
||||
}
|
||||
|
||||
fn install() ! {
|
||||
if installed()! {
|
||||
console.print_header('gitea binaraies already installed')
|
||||
@@ -31,13 +48,12 @@ fn install() ! {
|
||||
}
|
||||
|
||||
console.print_header('install gitea')
|
||||
cfg := get()!
|
||||
|
||||
// make sure we install base on the node
|
||||
base.install()!
|
||||
install_postgres(cfg)!
|
||||
|
||||
mut postgres := postgresinstaller.get()!
|
||||
postgres.install()!
|
||||
|
||||
cfg := get()!
|
||||
platform := core.platform()!
|
||||
mut download_link := ''
|
||||
|
||||
@@ -109,6 +125,9 @@ fn upload() ! {
|
||||
|
||||
fn startupcmd() ![]zinit.ZProcessNewArgs {
|
||||
mut res := []zinit.ZProcessNewArgs{}
|
||||
server := get()!
|
||||
cfg_file := $tmpl('./templates/app.ini')
|
||||
// TODO: We need to finish the work here
|
||||
// THIS IS EXAMPLE CODEAND NEEDS TO BE CHANGED
|
||||
// res << zinit.ZProcessNewArgs{
|
||||
// name: 'gitea'
|
||||
|
||||
@@ -170,7 +170,7 @@ pub fn (mut self GiteaServer) start() ! {
|
||||
}
|
||||
time.sleep(100 * time.millisecond)
|
||||
}
|
||||
return error('gitea did not install properly.')
|
||||
return error('cannot start gitea')
|
||||
}
|
||||
|
||||
pub fn (mut self GiteaServer) install_start(args InstallArgs) ! {
|
||||
|
||||
@@ -26,6 +26,11 @@ pub fn heroscript_default() !string {
|
||||
lfs_jwt_secret: ''
|
||||
internal_token: ''
|
||||
secret_key: ''
|
||||
database_passwd: 'postgres'
|
||||
database_name: 'postgres'
|
||||
database_user: 'postgres'
|
||||
database_host: 'localhost'
|
||||
database_port: 5432
|
||||
"
|
||||
|
||||
return heroscript
|
||||
@@ -38,20 +43,26 @@ pub mut:
|
||||
name string = 'default'
|
||||
|
||||
// reset bool
|
||||
version string = '1.22.6'
|
||||
path string = '/data/gitea'
|
||||
passwd string
|
||||
postgresql_name string = 'default'
|
||||
mail_from string = 'git@meet.tf'
|
||||
smtp_addr string = 'smtp-relay.brevo.com'
|
||||
smtp_login string @[required]
|
||||
smtp_port int = 587
|
||||
smtp_passwd string
|
||||
domain string @[required]
|
||||
jwt_secret string
|
||||
lfs_jwt_secret string
|
||||
internal_token string
|
||||
secret_key string
|
||||
version string = '1.22.6'
|
||||
path string = '/data/gitea'
|
||||
passwd string
|
||||
mail_from string = 'git@meet.tf'
|
||||
smtp_addr string = 'smtp-relay.brevo.com'
|
||||
smtp_login string @[required]
|
||||
smtp_port int = 587
|
||||
smtp_passwd string
|
||||
domain string @[required]
|
||||
jwt_secret string
|
||||
lfs_jwt_secret string
|
||||
internal_token string
|
||||
secret_key string
|
||||
|
||||
// Database config
|
||||
database_passwd string = 'postgres'
|
||||
database_name string = 'postgres'
|
||||
database_user string = 'postgres'
|
||||
database_host string = 'localhost'
|
||||
database_port int = 5432
|
||||
|
||||
process ?zinit.ZProcess
|
||||
path_config pathlib.Path
|
||||
@@ -60,21 +71,27 @@ pub mut:
|
||||
fn cfg_play(p paramsparser.Params) !GiteaServer {
|
||||
// THIS IS EXAMPLE CODE AND NEEDS TO BE CHANGED IN LINE WITH struct above
|
||||
mut mycfg := GiteaServer{
|
||||
name: p.get_default('name', 'default')!
|
||||
version: p.get_default('version', '1.22.6')!
|
||||
path: p.get_default('path', '/data/gitea')!
|
||||
passwd: p.get('passwd')!
|
||||
postgresql_name: p.get_default('postgresql_name', 'default')!
|
||||
mail_from: p.get_default('mail_from', 'git@meet.tf')!
|
||||
smtp_addr: p.get_default('smtp_addr', 'smtp-relay.brevo.com')!
|
||||
smtp_login: p.get('smtp_login')!
|
||||
smtp_port: p.get_int_default('smtp_port', 587)!
|
||||
smtp_passwd: p.get('smtp_passwd')!
|
||||
domain: p.get('domain')!
|
||||
jwt_secret: p.get('jwt_secret')!
|
||||
lfs_jwt_secret: p.get('lfs_jwt_secret')!
|
||||
internal_token: p.get('internal_token')!
|
||||
secret_key: p.get('secret_key')!
|
||||
name: p.get_default('name', 'default')!
|
||||
version: p.get_default('version', '1.22.6')!
|
||||
path: p.get_default('path', '/data/gitea')!
|
||||
passwd: p.get('passwd')!
|
||||
mail_from: p.get_default('mail_from', 'git@meet.tf')!
|
||||
smtp_addr: p.get_default('smtp_addr', 'smtp-relay.brevo.com')!
|
||||
smtp_login: p.get('smtp_login')!
|
||||
smtp_port: p.get_int_default('smtp_port', 587)!
|
||||
smtp_passwd: p.get('smtp_passwd')!
|
||||
domain: p.get('domain')!
|
||||
jwt_secret: p.get('jwt_secret')!
|
||||
lfs_jwt_secret: p.get('lfs_jwt_secret')!
|
||||
internal_token: p.get('internal_token')!
|
||||
secret_key: p.get('secret_key')!
|
||||
|
||||
// Set database config
|
||||
database_passwd: p.get_default('database_passwd', 'postgres')!
|
||||
database_name: p.get_default('database_name', 'postgres')!
|
||||
database_user: p.get_default('database_user', 'postgres')!
|
||||
database_host: p.get_default('database_host', 'localhost')!
|
||||
database_port: p.get_int_default('database_port', 5432)!
|
||||
}
|
||||
|
||||
return mycfg
|
||||
|
||||
@@ -1,66 +1,66 @@
|
||||
APP_NAME = ${server.config.name}
|
||||
APP_NAME = ${server.name}
|
||||
RUN_MODE = prod
|
||||
RUN_USER = git
|
||||
WORK_PATH = ${server.config.path}
|
||||
WORK_PATH = ${server.path}
|
||||
|
||||
[repository]
|
||||
ROOT = ${server.config.path}/gitrepo
|
||||
ROOT = ${server.path}/gitrepo
|
||||
|
||||
[repository.local]
|
||||
LOCAL_COPY_PATH = ${server.config.path}/localrepo
|
||||
LOCAL_COPY_PATH = ${server.path}/localrepo
|
||||
|
||||
[repository.upload]
|
||||
TEMP_PATH = ${server.config.path}/uploads
|
||||
TEMP_PATH = ${server.path}/uploads
|
||||
|
||||
[server]
|
||||
APP_DATA_PATH = ${server.config.domain}
|
||||
DOMAIN = ${server.config.domain}
|
||||
SSH_DOMAIN = ${server.config.domain}
|
||||
APP_DATA_PATH = ${server.domain}
|
||||
DOMAIN = ${server.domain}
|
||||
SSH_DOMAIN = ${server.domain}
|
||||
SSH_PORT = 22
|
||||
SSH_LISTEN_PORT = 22
|
||||
HTTP_PORT = 3000
|
||||
ROOT_URL = https://${server.config.domain}
|
||||
ROOT_URL = https://${server.domain}
|
||||
DISABLE_SSH = false
|
||||
LFS_START_SERVER = true
|
||||
LFS_JWT_SECRET = ${server.config.lfs_jwt_secret}
|
||||
LFS_JWT_SECRET = ${server.lfs_jwt_secret}
|
||||
OFFLINE_MODE = false
|
||||
|
||||
[database]
|
||||
PATH = ${server.config.path}/gitea.db
|
||||
PATH = ${server.path}/gitea.db
|
||||
DB_TYPE = postgres
|
||||
HOST = localhost:5432
|
||||
NAME = gitea
|
||||
USER = root
|
||||
PASSWD = ${db.config.passwd}
|
||||
HOST = ${server.database_host}:${server.database_port}
|
||||
NAME = ${server.database_name}
|
||||
USER = ${server.database_user}
|
||||
PASSWD = ${server.database_passwd}
|
||||
LOG_SQL = false
|
||||
SCHEMA =
|
||||
SSL_MODE = disable
|
||||
|
||||
[indexer]
|
||||
ISSUE_INDEXER_PATH = ${server.config.path}/indexers/issues.bleve
|
||||
ISSUE_INDEXER_PATH = ${server.path}/indexers/issues.bleve
|
||||
|
||||
[session]
|
||||
PROVIDER_CONFIG = ${server.config.path}/sessions
|
||||
PROVIDER_CONFIG = ${server.path}/sessions
|
||||
PROVIDER = file
|
||||
|
||||
[picture]
|
||||
AVATAR_UPLOAD_PATH = ${server.config.path}/avatars
|
||||
REPOSITORY_AVATAR_UPLOAD_PATH = ${server.config.path}/repo-avatars
|
||||
AVATAR_UPLOAD_PATH = ${server.path}/avatars
|
||||
REPOSITORY_AVATAR_UPLOAD_PATH = ${server.path}/repo-avatars
|
||||
|
||||
[attachment]
|
||||
PATH = ${server.config.path}/attachments
|
||||
PATH = ${server.path}/attachments
|
||||
|
||||
[log]
|
||||
MODE = console
|
||||
LEVEL = info
|
||||
ROOT_PATH = ${server.config.path}/log
|
||||
ROOT_PATH = ${server.path}/log
|
||||
|
||||
[security]
|
||||
INSTALL_LOCK = true
|
||||
SECRET_KEY = ${server.config.secret_key}
|
||||
SECRET_KEY = ${server.secret_key}
|
||||
REVERSE_PROXY_LIMIT = 1
|
||||
REVERSE_PROXY_TRUSTED_PROXIES = *
|
||||
INTERNAL_TOKEN = ${server.config.internal_token}
|
||||
INTERNAL_TOKEN = ${server.internal_token}
|
||||
PASSWORD_HASH_ALGO = pbkdf2
|
||||
|
||||
[service]
|
||||
@@ -76,16 +76,16 @@ DEFAULT_ENABLE_TIMETRACKING = true
|
||||
NO_REPLY_ADDRESS = noreply.localhost
|
||||
|
||||
[lfs]
|
||||
PATH = ${server.config.path}/lfs
|
||||
PATH = ${server.path}/lfs
|
||||
|
||||
[mailer]
|
||||
ENABLED = true
|
||||
FROM = ${server.config.mail_from}
|
||||
FROM = ${server.mail_from}
|
||||
; PROTOCOL = smtps
|
||||
SMTP_ADDR = ${server.config.smtp_addr}
|
||||
SMTP_PORT = ${server.config.smpt_port}
|
||||
USER = ${server.config.smtp_login}
|
||||
PASSWD = ${server.config.smtp_passwd}
|
||||
SMTP_ADDR = ${server.smtp_addr}
|
||||
SMTP_PORT = ${server.smpt_port}
|
||||
USER = ${server.smtp_login}
|
||||
PASSWD = ${server.smtp_passwd}
|
||||
|
||||
[openid]
|
||||
ENABLE_OPENID_SIGNIN = true
|
||||
@@ -101,7 +101,7 @@ DEFAULT_MERGE_STYLE = merge
|
||||
DEFAULT_TRUST_MODEL = committer
|
||||
|
||||
[oauth2]
|
||||
JWT_SECRET = ${server.config.jwt_secret}
|
||||
JWT_SECRET = ${server.jwt_secret}
|
||||
|
||||
[actions]
|
||||
ENABLED=true
|
||||
|
||||
Reference in New Issue
Block a user