1+ # Makefile for CertVault build process
2+
3+ # Variables
4+ FRONTEND_DIR = frontend
5+ BACKEND_DIR = server
6+ STATIC_DIR = $(BACKEND_DIR ) /src/main/resources/static
7+ DIST_DIR = $(FRONTEND_DIR ) /dist
8+ JAR_SOURCE = $(BACKEND_DIR ) /target/*.jar
9+ JAR_DEST = ./certvault.jar
10+ INSTALL_DIR = /etc/certvault
11+ SERVICE_FILE = certvault.service
12+ SYSTEMD_DIR = /etc/systemd/system
13+
14+ .PHONY : all clean install uninstall
15+
16+ all : frontend-build copy-frontend backend-build move-jar
17+
18+ frontend-build :
19+ @echo " Building frontend..."
20+ cd $(FRONTEND_DIR ) && pnpm install && pnpm run build
21+
22+ copy-frontend :
23+ @echo " Copying frontend resources..."
24+ mkdir -p $(STATIC_DIR )
25+ cp -r $(DIST_DIR ) /* $(STATIC_DIR ) /
26+
27+ backend-build :
28+ @echo " Building backend..."
29+ mvn clean package -f $(BACKEND_DIR ) /pom.xml -DskipTests
30+ chmod +x $(JAR_SOURCE )
31+
32+ move-jar :
33+ @echo " Moving JAR file..."
34+ mv $(JAR_SOURCE ) $(JAR_DEST )
35+
36+ clean :
37+ @echo " Cleaning up..."
38+ rm -rf $(DIST_DIR )
39+ rm -rf $(STATIC_DIR )
40+ rm -f $(JAR_DEST )
41+ mvn clean -f $(BACKEND_DIR ) /pom.xml
42+
43+ install :
44+ @echo " Installing CertVault service..."
45+ @# Create installation directory
46+ sudo mkdir -p $(INSTALL_DIR )
47+
48+ @# Install application files
49+ sudo install -m 644 $(JAR_DEST) $(INSTALL_DIR)/certvault.jar
50+ sudo install -m 644 application.yml $(INSTALL_DIR)/application.yml
51+
52+ @# Create systemd service file
53+ @echo "[Unit]\n\
54+ Description=CertVault Certificate Management Service\n\
55+ After=network.target\n\n\
56+ [Service]\n\
57+ User=root\n\
58+ WorkingDirectory=$(INSTALL_DIR)\n\
59+ ExecStart=/usr/bin/java -jar $(INSTALL_DIR)/certvault.jar \n\
60+ -Xmx512m \n\
61+ -Xms256m \n\
62+ -XX:+UseZGC \n\
63+ -XX:ZCollectionInterval=120 \n\
64+ -XX:ZAllocationSpikeTolerance=4 \n\
65+ -XX:-ZProactive \n\
66+ -XX:+HeapDumpOnOutOfMemoryError \n\
67+ -XX:HeapDumpPath=./errorDump.hprof \n\
68+ --spring.profiles.active=prod \n\
69+ SuccessExitStatus=143\n\
70+ Restart=always\n\
71+ RestartSec=30\n\
72+ [Install]\n\
73+ WantedBy=multi-user.target" | sudo tee $(SYSTEMD_DIR)/$(SERVICE_FILE) > /dev/null
74+
75+ @# Reload and enable service
76+ sudo systemctl daemon-reload
77+ sudo systemctl enable $(SERVICE_FILE)
78+ sudo systemctl start $(SERVICE_FILE)
79+ @echo "Installation completed. Service is now running."
80+
81+ uninstall :
82+ @echo " Uninstalling CertVault service..."
83+ sudo systemctl stop $(SERVICE_FILE ) || true
84+ sudo systemctl disable $(SERVICE_FILE ) || true
85+ sudo rm -f $(SYSTEMD_DIR ) /$(SERVICE_FILE )
86+ sudo rm -rf $(INSTALL_DIR )
87+ sudo systemctl daemon-reload
88+ @echo " Uninstallation completed."
89+
90+ # Shortcut targets
91+ build : all
92+ jar : backend-build move-jar
0 commit comments