[main] Git stuff

This commit is contained in:
2024-12-09 17:50:15 +01:00
parent 78a6317ee5
commit 61e0c670c6
3 changed files with 75 additions and 14 deletions

View File

@@ -18,16 +18,16 @@ jobs:
- name: Build Docker Image - name: Build Docker Image
run: | run: |
COMMIT_HASH=$(git rev-parse --short HEAD) COMMIT_HASH=$(git rev-parse --short HEAD)
docker build -t registry.i80.dk/gitea/portugalfaq:latest -t registry.i80.dk/gitea/portugalfaq:${COMMIT_HASH} . docker build -t registry.i80.dk/gitea/[[PROJECT_NAME]]:latest -t registry.i80.dk/gitea/[[PROJECT_NAME]]:${COMMIT_HASH} .
- name: Push Docker Image - name: Push Docker Image
run: | run: |
COMMIT_HASH=$(git rev-parse --short HEAD) COMMIT_HASH=$(git rev-parse --short HEAD)
echo "registry.i80.dk/gitea/portugalfaq:latest" echo "registry.i80.dk/gitea/[[PROJECT_NAME]]:latest"
echo "registry.i80.dk/gitea/portugalfaq:${COMMIT_HASH}" echo "registry.i80.dk/gitea/[[PROJECT_NAME]]:${COMMIT_HASH}"
docker push registry.i80.dk/gitea/portugalfaq:${COMMIT_HASH} docker push registry.i80.dk/gitea/[[PROJECT_NAME]]:${COMMIT_HASH}
docker push registry.i80.dk/gitea/portugalfaq:latest docker push registry.i80.dk/gitea/[[PROJECT_NAME]]:latest
- name: Validate Nomad Job - name: Validate Nomad Job
@@ -38,7 +38,7 @@ jobs:
- name: Stop old deployment - name: Stop old deployment
env: env:
NOMAD_ADDR: https://nomad.i80.dk NOMAD_ADDR: https://nomad.i80.dk
run: nomad job stop -purge -no-shutdown-delay portugalfaq run: nomad job stop -purge -no-shutdown-delay [[PROJECT_NAME]]
continue-on-error: true continue-on-error: true
@@ -48,7 +48,7 @@ jobs:
run: nomad job run .gitea/workflows/nomad-job.hcl run: nomad job run .gitea/workflows/nomad-job.hcl
- name: Update Nginx Configuration - name: Update Nginx Configuration
run: ssh runner@nomad sudo /opt/nginx_updater/venv/bin/python3 /opt/nginx_updater/nginx_updater.py portugalfaq run: ssh runner@nomad sudo /opt/nginx_updater/venv/bin/python3 /opt/nginx_updater/nginx_updater.py [[PROJECT_NAME]]
@@ -56,6 +56,6 @@ jobs:
# env: # env:
# NOMAD_ADDR: https://nomad.i80.dk # NOMAD_ADDR: https://nomad.i80.dk
# run: | # run: |
# nomad job stop portugalfaq # nomad job stop [[PROJECT_NAME]]
# sleep 5 # Optional: Wait to ensure the old allocation is stopped # sleep 5 # Optional: Wait to ensure the old allocation is stopped
# nomad job run .gitea/workflows/nomad-job.hcl # nomad job run .gitea/workflows/nomad-job.hcl

View File

@@ -1,4 +1,4 @@
job "portugalfaq" { job "{{PROJECT_NAME}}" {
region = "global" region = "global"
datacenters = ["dc1"] datacenters = ["dc1"]
type = "service" type = "service"
@@ -9,19 +9,19 @@ job "portugalfaq" {
progress_deadline = "6m" progress_deadline = "6m"
} }
group "portugalfaq-group" { group "[[PROJECT_NAME]]-group" {
count = 1 count = 1
network { network {
port "port-app" { port "port-app" {
to = 9912 # Internal application port to = [[PORT]] # Internal application port
} }
} }
# Register the service with Consul # Register the service with Consul
service { service {
provider = "consul" provider = "consul"
name = "portugalfaq" name = "[[PROJECT_NAME]]"
port = "port-app" port = "port-app"
# Traefik-specific tags for routing # Traefik-specific tags for routing
@@ -38,11 +38,11 @@ job "portugalfaq" {
} }
} }
task "portugalfaq-task" { task "[[PROJECT_NAME]]-task" {
driver = "docker" driver = "docker"
config { config {
image = "registry.i80.dk/gitea/portugalfaq:latest" image = "registry.i80.dk/gitea/{{PROJECT_NAME}}:latest"
ports = ["port-app"] ports = ["port-app"]
} }

61
project_installer.py Normal file
View File

@@ -0,0 +1,61 @@
import os
import random
import pystache
import argparse
import re
def render_templates(template_dir, project_name):
import pystache # Import after ensuring it's installed
# Generate a random port number
port = random.randint(8900, 9400)
# Mustache data (dynamic placeholders)
data = {
"PROJECT_NAME": project_name,
"PORT": port
}
# Define a regex for detecting [[ ... ]] custom placeholders
pattern = re.compile(r"\[\[(.*?)\]\]")
# Process all .tmpl files in the directory
for root, _, files in os.walk(template_dir):
for file in files:
if file.endswith(".tmpl"):
tmpl_file = os.path.join(root, file)
output_file = os.path.join(root, file.replace(".tmpl", ""))
# Read the template file
with open(tmpl_file, 'r') as f:
template_content = f.read()
# Replace placeholders wrapped with [[ ... ]]
def replace_placeholder(match):
key = match.group(1)
return str(data.get(key, match.group(0))) # Replace only if key exists
rendered_content = pattern.sub(replace_placeholder, template_content)
# Write to output file
with open(output_file, 'w') as f:
f.write(rendered_content)
print(f"Generated: {output_file}")
def main():
# Parse arguments
parser = argparse.ArgumentParser(description="Render Mustache templates in a directory.")
parser.add_argument('--project-name', type=str, help='Project name (defaults to current directory name)')
parser.add_argument('--template-dir', type=str, default='.gitea/workflows', help='Template directory')
args = parser.parse_args()
# Get the project name (current directory name if not provided)
project_name = args.project_name or os.path.basename(os.getcwd())
# Render templates
render_templates(args.template_dir, project_name)
if __name__ == "__main__":
main()