Skip to content

Commit 120b5de

Browse files
authored
LDEV-5948 add systemd support for linux (#38)
https://luceeserver.atlassian.net/browse/LDEV-5948
1 parent de446c6 commit 120b5de

2 files changed

Lines changed: 338 additions & 11 deletions

File tree

.github/workflows/test-systemd.yml

Lines changed: 230 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,230 @@
1+
name: Test systemd Service Registration
2+
3+
on:
4+
push:
5+
branches-ignore:
6+
- master
7+
workflow_dispatch:
8+
9+
env:
10+
LUCEE_INSTALLER_VERSION: 6.2.2.90-RC
11+
INSTALL_JRE: true
12+
13+
jobs:
14+
test-systemd-ubuntu-x64:
15+
runs-on: ubuntu-latest
16+
needs: build-installer
17+
strategy:
18+
matrix:
19+
user: [ lucee ]
20+
steps:
21+
- name: Download Linux Installer artifact
22+
uses: actions/download-artifact@v4
23+
with:
24+
name: lucee-installer-${{ env.LUCEE_INSTALLER_VERSION }}-linux-x64-run
25+
26+
- name: Run Linux installer with startatboot=true
27+
run: |
28+
chmod +x lucee-${{ env.LUCEE_INSTALLER_VERSION }}-linux-x64-installer.run
29+
sudo ./lucee-${{ env.LUCEE_INSTALLER_VERSION }}-linux-x64-installer.run \
30+
--mode unattended \
31+
--installconn false \
32+
--installmodcfml false \
33+
--installiis false \
34+
--startatboot true \
35+
--luceepass ibtest \
36+
--systemuser ${{ matrix.user }} \
37+
--installjre ${{ env.INSTALL_JRE }}
38+
39+
- name: Verify systemd service file was created
40+
run: |
41+
echo "### Systemd Service Test Results" >> $GITHUB_STEP_SUMMARY
42+
echo "" >> $GITHUB_STEP_SUMMARY
43+
44+
if [ -f /etc/systemd/system/lucee_ctl.service ]; then
45+
echo "Service file created at /etc/systemd/system/lucee_ctl.service" | tee -a $GITHUB_STEP_SUMMARY
46+
echo "" >> $GITHUB_STEP_SUMMARY
47+
echo '```' >> $GITHUB_STEP_SUMMARY
48+
cat /etc/systemd/system/lucee_ctl.service | tee -a $GITHUB_STEP_SUMMARY
49+
echo '```' >> $GITHUB_STEP_SUMMARY
50+
else
51+
echo "ERROR: Service file NOT found at /etc/systemd/system/lucee_ctl.service" | tee -a $GITHUB_STEP_SUMMARY
52+
exit 1
53+
fi
54+
55+
- name: Verify service is enabled
56+
run: |
57+
echo "" >> $GITHUB_STEP_SUMMARY
58+
echo "#### Service Status" >> $GITHUB_STEP_SUMMARY
59+
echo '```' >> $GITHUB_STEP_SUMMARY
60+
systemctl is-enabled lucee_ctl | tee -a $GITHUB_STEP_SUMMARY
61+
echo '```' >> $GITHUB_STEP_SUMMARY
62+
63+
- name: Stop Lucee started by installer (so systemd can manage it)
64+
run: |
65+
sudo /opt/lucee/lucee_ctl stop
66+
sleep 2
67+
# Remove stale PID file if exists
68+
sudo rm -f /opt/lucee/tomcat/work/tomcat.pid
69+
70+
- name: Test systemctl start
71+
run: |
72+
sudo systemctl start lucee_ctl
73+
sleep 5
74+
echo "" >> $GITHUB_STEP_SUMMARY
75+
echo "#### After systemctl start" >> $GITHUB_STEP_SUMMARY
76+
echo '```' >> $GITHUB_STEP_SUMMARY
77+
sudo systemctl status lucee_ctl --no-pager | tee -a $GITHUB_STEP_SUMMARY
78+
echo '```' >> $GITHUB_STEP_SUMMARY
79+
80+
- name: Test Lucee is responding
81+
run: |
82+
echo "" >> $GITHUB_STEP_SUMMARY
83+
sleep 10
84+
echo "#### Lucee Response" >> $GITHUB_STEP_SUMMARY
85+
echo '```' >> $GITHUB_STEP_SUMMARY
86+
curl -s http://127.0.0.1:8888/ | head -20 | tee -a $GITHUB_STEP_SUMMARY
87+
echo '```' >> $GITHUB_STEP_SUMMARY
88+
89+
- name: Test systemctl stop
90+
run: |
91+
sudo systemctl stop lucee_ctl
92+
sleep 2
93+
echo "" >> $GITHUB_STEP_SUMMARY
94+
echo "#### After systemctl stop" >> $GITHUB_STEP_SUMMARY
95+
echo '```' >> $GITHUB_STEP_SUMMARY
96+
sudo systemctl status lucee_ctl --no-pager || true | tee -a $GITHUB_STEP_SUMMARY
97+
echo '```' >> $GITHUB_STEP_SUMMARY
98+
99+
- name: Test systemctl restart
100+
run: |
101+
sudo systemctl start lucee_ctl
102+
sleep 5
103+
sudo systemctl restart lucee_ctl
104+
sleep 5
105+
echo "" >> $GITHUB_STEP_SUMMARY
106+
echo "#### After systemctl restart" >> $GITHUB_STEP_SUMMARY
107+
echo '```' >> $GITHUB_STEP_SUMMARY
108+
sudo systemctl status lucee_ctl --no-pager | tee -a $GITHUB_STEP_SUMMARY
109+
echo '```' >> $GITHUB_STEP_SUMMARY
110+
111+
- name: Test service removal
112+
run: |
113+
sudo /opt/lucee/sys/service_config.sh --remove --name lucee_ctl
114+
echo "" >> $GITHUB_STEP_SUMMARY
115+
echo "#### After service removal" >> $GITHUB_STEP_SUMMARY
116+
if [ -f /etc/systemd/system/lucee_ctl.service ]; then
117+
echo "ERROR: Service file still exists after removal" | tee -a $GITHUB_STEP_SUMMARY
118+
exit 1
119+
else
120+
echo "Service file successfully removed" | tee -a $GITHUB_STEP_SUMMARY
121+
fi
122+
123+
- name: Test custom service name - install
124+
run: |
125+
echo "" >> $GITHUB_STEP_SUMMARY
126+
echo "### Custom Service Name Test" >> $GITHUB_STEP_SUMMARY
127+
sudo /opt/lucee/sys/service_config.sh --install --path /opt/lucee/lucee_ctl --name my_custom_lucee
128+
129+
if [ -f /etc/systemd/system/my_custom_lucee.service ]; then
130+
echo "Custom service file created at /etc/systemd/system/my_custom_lucee.service" | tee -a $GITHUB_STEP_SUMMARY
131+
echo '```' >> $GITHUB_STEP_SUMMARY
132+
cat /etc/systemd/system/my_custom_lucee.service | tee -a $GITHUB_STEP_SUMMARY
133+
echo '```' >> $GITHUB_STEP_SUMMARY
134+
else
135+
echo "ERROR: Custom service file NOT created" | tee -a $GITHUB_STEP_SUMMARY
136+
exit 1
137+
fi
138+
139+
- name: Test custom service name - start
140+
run: |
141+
sudo systemctl start my_custom_lucee
142+
sleep 5
143+
echo "" >> $GITHUB_STEP_SUMMARY
144+
echo "#### Custom service status" >> $GITHUB_STEP_SUMMARY
145+
echo '```' >> $GITHUB_STEP_SUMMARY
146+
sudo systemctl status my_custom_lucee --no-pager | tee -a $GITHUB_STEP_SUMMARY
147+
echo '```' >> $GITHUB_STEP_SUMMARY
148+
149+
# Verify Lucee is responding
150+
sleep 5
151+
curl -s http://127.0.0.1:8888/ | head -5
152+
153+
- name: Test custom service name - remove
154+
run: |
155+
sudo /opt/lucee/sys/service_config.sh --remove --name my_custom_lucee
156+
if [ -f /etc/systemd/system/my_custom_lucee.service ]; then
157+
echo "ERROR: Custom service file still exists after removal" | tee -a $GITHUB_STEP_SUMMARY
158+
exit 1
159+
else
160+
echo "Custom service file successfully removed" | tee -a $GITHUB_STEP_SUMMARY
161+
fi
162+
163+
- name: debug failure
164+
if: ${{ failure() }}
165+
run: |
166+
echo "----- installbuilder_installer.log"
167+
sudo cat /tmp/installbuilder_installer.log || true
168+
echo "----- /etc/systemd/system/"
169+
ls -la /etc/systemd/system/ | grep lucee || true
170+
echo "----- lucee_ctl.service (if exists)"
171+
sudo cat /etc/systemd/system/lucee_ctl.service || true
172+
echo "----- lucee_ctl script"
173+
sudo cat /opt/lucee/lucee_ctl || true
174+
echo "----- catalina.out"
175+
sudo cat /opt/lucee/tomcat/logs/catalina.out || true
176+
echo "----- journalctl"
177+
sudo journalctl -u lucee_ctl --no-pager || true
178+
179+
build-installer:
180+
runs-on: ubuntu-latest
181+
env:
182+
IB_URL: https://releases.installbuilder.com/installbuilder/installbuilder-enterprise-24.3.0-linux-x64-installer.run
183+
IB_NAME: installbuilder-enterprise-24.3.0-linux-x64-installer.run
184+
lucee_build_version: 6.2.2.90-RC
185+
steps:
186+
- uses: actions/checkout@v4
187+
- name: Download and Install InstallBuilder
188+
run: |
189+
curl ${{ env.IB_URL }} -o ${{ env.IB_NAME }}
190+
chmod a+x ${{ env.IB_NAME }}
191+
./${{ env.IB_NAME }} --prefix /tmp/ib --mode unattended
192+
- name: Set Install Builder license
193+
env:
194+
INSTALLBUILDER_LICENSE: ${{ secrets.INSTALLBUILDER_LICENSE }}
195+
shell: bash
196+
run: |
197+
echo "$INSTALLBUILDER_LICENSE" >> lucee/license.xml
198+
- name: Download Lucee Jar
199+
run: |
200+
curl --fail https://cdn.lucee.org/lucee-${{ env.LUCEE_INSTALLER_VERSION }}.jar -o lucee-${{ env.LUCEE_INSTALLER_VERSION }}.jar -s
201+
mv lucee-${{ env.LUCEE_INSTALLER_VERSION }}.jar lucee/lucee/lib/
202+
- name: Cache Maven packages
203+
uses: actions/cache@v4
204+
with:
205+
path: ~/.m2
206+
key: lucee-script-runner-maven-cache
207+
- name: Download latest Tomcat and Java
208+
uses: lucee/script-runner@main
209+
with:
210+
webroot: ${{ github.workspace }}/
211+
execute: /download-latest-java-tomcat.cfm
212+
luceeVersion: ${{ env.lucee_build_version }}
213+
- name: Prepare Tomcat Linux
214+
run: |
215+
cd lucee/tomcat9/
216+
rm -rf tomcat
217+
cd ../..
218+
mv src-tomcat/linux lucee/tomcat9/tomcat
219+
cp -ar lucee/tomcat9/tomcat-lucee-conf/* lucee/tomcat9/tomcat
220+
- name: Build Lucee Installer - Linux x86 x64
221+
run: |
222+
cd lucee
223+
/tmp/ib/bin/builder build lucee.xml linux-x64 --verbose --license license.xml
224+
- name: Upload Artifact - Linux Installer x86
225+
uses: actions/upload-artifact@v4
226+
with:
227+
name: lucee-installer-${{ env.LUCEE_INSTALLER_VERSION }}-linux-x64-run
228+
path: /tmp/ib/output/*linux-x64-installer.run
229+
retention-days: 1
230+
compression-level: 0

0 commit comments

Comments
 (0)