Update .gitlab-ci. yml
This commit is contained in:
parent
dd9c81eee3
commit
fc550ec470
1 changed files with 0 additions and 0 deletions
120
.gitlab-ci.yml
Normal file
120
.gitlab-ci.yml
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
stages:
|
||||
- deploy
|
||||
|
||||
variables:
|
||||
APP_NAME: "slop.unturf.com"
|
||||
APP_DIR: "/opt/${APP_NAME}"
|
||||
VENV_DIR: "${APP_DIR}/venv"
|
||||
CADDYFILE_DIR: "/etc/caddy"
|
||||
CADDY_SNIPPETS_DIR: "/etc/caddy/caddy_snippets"
|
||||
|
||||
deploy:
|
||||
stage: deploy
|
||||
tags:
|
||||
- master.unturf.com
|
||||
only:
|
||||
- main # Deploy only from the 'main' branch
|
||||
script:
|
||||
# Step 1: Define variables with substitutions
|
||||
- |
|
||||
SERVICE_NAME="uwsgi-${APP_NAME//./-}.service" # Replace dots with dashes
|
||||
UWSGI_SOCKET="${APP_DIR}/uwsgi.sock" # Place socket in app directory
|
||||
|
||||
# Step 2: Synchronize the code to the application directory
|
||||
- |
|
||||
if [ ! -d "${APP_DIR}" ]; then
|
||||
mkdir -p "${APP_DIR}"
|
||||
fi
|
||||
rsync -a --exclude=data/ --exclude=venv/ --delete "${CI_PROJECT_DIR}/" "${APP_DIR}/"
|
||||
|
||||
# Step 3: Set up Python virtual environment and install dependencies
|
||||
- |
|
||||
if [ ! -d "${VENV_DIR}" ]; then
|
||||
python3 -m venv "${VENV_DIR}"
|
||||
fi
|
||||
source "${VENV_DIR}/bin/activate"
|
||||
pip install --upgrade pip
|
||||
pip install -r "${APP_DIR}/requirements.txt"
|
||||
|
||||
# Step 4: Install uWSGI in virtual environment
|
||||
- |
|
||||
source "${VENV_DIR}/bin/activate"
|
||||
pip install uwsgi
|
||||
|
||||
# Step 5: Create or update the systemd user service file for uWSGI
|
||||
- |
|
||||
mkdir -p ~/.config/systemd/user/
|
||||
|
||||
# Set the MODULE for slop_with_models.py
|
||||
MODULE="slop_with_models:app"
|
||||
|
||||
cat > ~/.config/systemd/user/${SERVICE_NAME} <<EOF
|
||||
[Unit]
|
||||
Description=uWSGI instance to serve ${APP_NAME}
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=${APP_DIR}
|
||||
Environment="PATH=${VENV_DIR}/bin"
|
||||
# Pass environment variables for model endpoints
|
||||
Environment="MODEL_ENDPOINT_1=https://hermes.ai.unturf.com/v1"
|
||||
Environment="MODEL_ENDPOINT_2=https://node2.naptha.ai/inference"
|
||||
Environment="MODEL_ENDPOINT_3=https://node3.naptha.ai/inference"
|
||||
# Add API keys if needed (e.g., from GitLab variables)
|
||||
Environment="MODEL_API_KEY_1=${MODEL_API_KEY_1:-not-needed}"
|
||||
Environment="MODEL_API_KEY_2=${MODEL_API_KEY_2:-not-needed}"
|
||||
Environment="MODEL_API_KEY_3=${MODEL_API_KEY_3:-not-needed}"
|
||||
ExecStart=${VENV_DIR}/bin/uwsgi \\
|
||||
--master \\
|
||||
--enable-threads \\
|
||||
--processes 4 \\
|
||||
--http-socket ${UWSGI_SOCKET} \\
|
||||
--chmod-socket=660 \\
|
||||
--chown-socket=gitlab-runner:caddy \\
|
||||
--vacuum \\
|
||||
--die-on-term \\
|
||||
--chdir ${APP_DIR} \\
|
||||
--logto2 ${APP_DIR}/uwsgi.log \\
|
||||
--module ${MODULE}
|
||||
|
||||
Restart=always
|
||||
KillSignal=SIGQUIT
|
||||
Type=notify
|
||||
NotifyAccess=all
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
EOF
|
||||
|
||||
# Step 6: Reload systemd user daemon and restart the uWSGI service
|
||||
- systemctl --user daemon-reload
|
||||
- systemctl --user restart ${SERVICE_NAME}
|
||||
- systemctl --user enable ${SERVICE_NAME}
|
||||
|
||||
# Step 7: Handle Caddy configurations
|
||||
- |
|
||||
mkdir -p "${CADDY_SNIPPETS_DIR}"
|
||||
cat > "${CADDY_SNIPPETS_DIR}/${APP_NAME}.caddy" <<EOF
|
||||
${APP_NAME} {
|
||||
encode gzip
|
||||
tls {
|
||||
on_demand
|
||||
}
|
||||
handle {
|
||||
reverse_proxy unix//${UWSGI_SOCKET}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
# Concatenate all snippets into the main Caddyfile
|
||||
echo '# Main Caddyfile - concatenated snippets' > "${CADDYFILE_DIR}/Caddyfile"
|
||||
cat "${CADDY_SNIPPETS_DIR}"/*.caddy >> "${CADDYFILE_DIR}/Caddyfile"
|
||||
|
||||
# Validate the Caddyfile
|
||||
caddy validate --config "${CADDYFILE_DIR}/Caddyfile"
|
||||
|
||||
# Step 8: Reload Caddy service
|
||||
- sudo /bin/systemctl restart caddy.service
|
||||
|
||||
# Deployment completed
|
||||
- echo "Deployment completed successfully."
|
||||
Loading…
Add table
Add a link
Reference in a new issue