Deploy Ladill Events / deploy (push) Successful in 1m13s
act_runner v0.2.x does not expose gitea.run_attempt, so release archive and workspace paths rendered with a trailing dash. Use gitea.run_id only, matching the Meet/CRM deploy workflows.
113 lines
3.8 KiB
YAML
113 lines
3.8 KiB
YAML
name: Deploy Ladill Events
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: deploy-events
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: deploy
|
|
env:
|
|
NODE_ROOT: /tmp/ladill-node-22-r1
|
|
NODE_VERSION: "22.14.0"
|
|
# act_runner v0.2.x does not expose gitea.run_attempt — use run_id only.
|
|
RELEASE_ARCHIVE: /tmp/ladill-events-release-${{ gitea.run_id }}.tgz
|
|
WORKSPACE: /tmp/${{ gitea.repository_owner }}-events-${{ gitea.run_id }}
|
|
LADILL_APP_ROOT: /var/www/ladill-events
|
|
steps:
|
|
- name: Checkout
|
|
shell: bash {0}
|
|
run: |
|
|
set -Eeuo pipefail
|
|
DEPLOY_GITEA_TOKEN="$(cat /home/deploy/.ladill-deploy-gitea-token)"
|
|
REPO_URL="${{ gitea.server_url }}/${{ gitea.repository }}.git"
|
|
rm -rf "$WORKSPACE"
|
|
mkdir -p "$WORKSPACE"
|
|
export GIT_TERMINAL_PROMPT=0
|
|
git \
|
|
-c credential.helper= \
|
|
-c http.extraHeader="Authorization: token ${DEPLOY_GITEA_TOKEN}" \
|
|
clone --depth 1 --single-branch --no-tags --branch "${{ gitea.ref_name }}" \
|
|
"$REPO_URL" "$WORKSPACE"
|
|
|
|
- name: Build frontend assets
|
|
shell: bash {0}
|
|
run: |
|
|
set -Eeuo pipefail
|
|
cd "$WORKSPACE"
|
|
if command -v npm >/dev/null 2>&1 && npm -v >/dev/null 2>&1; then
|
|
NPM_BIN="$(command -v npm)"
|
|
elif [ -x "$NODE_ROOT/bin/npm" ]; then
|
|
export PATH="$NODE_ROOT/bin:$PATH"
|
|
NPM_BIN="$NODE_ROOT/bin/npm"
|
|
else
|
|
rm -rf "$NODE_ROOT"
|
|
mkdir -p "$NODE_ROOT"
|
|
case "$(uname -m)" in
|
|
x86_64|amd64) NODE_ARCH="x64" ;;
|
|
aarch64|arm64) NODE_ARCH="arm64" ;;
|
|
*) echo "Unsupported architecture: $(uname -m)" >&2; exit 1 ;;
|
|
esac
|
|
curl -fsSL "https://nodejs.org/download/release/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${NODE_ARCH}.tar.xz" \
|
|
| tar -xJ --strip-components=1 -C "$NODE_ROOT"
|
|
export PATH="$NODE_ROOT/bin:$PATH"
|
|
NPM_BIN="$NODE_ROOT/bin/npm"
|
|
fi
|
|
"$NPM_BIN" ci --no-audit --no-fund
|
|
"$NPM_BIN" run build
|
|
|
|
|
|
- name: Build release archive
|
|
shell: bash {0}
|
|
run: |
|
|
set -Eeuo pipefail
|
|
cd "$WORKSPACE"
|
|
printf '%s\n' "${{ gitea.sha }}" > REVISION
|
|
rm -f "$RELEASE_ARCHIVE"
|
|
tar -czf "$RELEASE_ARCHIVE" \
|
|
--exclude=.git --exclude=.gitea --exclude=.github --exclude=.env \
|
|
--exclude=node_modules --exclude=vendor --exclude=storage --exclude=tests .
|
|
|
|
- name: Deploy release
|
|
shell: bash {0}
|
|
env:
|
|
LADILL_RELEASE_ARCHIVE: /tmp/ladill-events-release-${{ gitea.run_id }}.tgz
|
|
run: |
|
|
set -Eeuo pipefail
|
|
: "${LADILL_APP_ROOT:?Set LADILL_APP_ROOT}"
|
|
bash "$WORKSPACE/deploy/deploy.sh"
|
|
|
|
- name: Ensure nginx vhost
|
|
shell: bash {0}
|
|
run: |
|
|
set -Eeuo pipefail
|
|
NGINX_SCRIPT="$WORKSPACE/deployment/setup-service-subdomain-nginx.sh"
|
|
if [ ! -f "$NGINX_SCRIPT" ]; then
|
|
NGINX_SCRIPT="/var/www/ladill.com/current/deployment/setup-service-subdomain-nginx.sh"
|
|
fi
|
|
if [ ! -f "$NGINX_SCRIPT" ]; then
|
|
echo "WARN: setup-service-subdomain-nginx.sh not found — configure events.ladill.com vhost manually"
|
|
exit 0
|
|
fi
|
|
if sudo -n bash "$NGINX_SCRIPT" events --app /var/www/ladill-events/current; then
|
|
echo "nginx vhost updated for events.ladill.com"
|
|
else
|
|
echo "WARN: nginx vhost step skipped (deploy user cannot sudo) — vhost must already be provisioned"
|
|
fi
|
|
|
|
- name: Cleanup
|
|
if: always()
|
|
shell: bash {0}
|
|
run: |
|
|
rm -rf "$WORKSPACE"
|
|
rm -f "$RELEASE_ARCHIVE"
|