init commit
This commit is contained in:
128
example.Jenkinsfile
Normal file
128
example.Jenkinsfile
Normal file
@@ -0,0 +1,128 @@
|
||||
// We use example so that you can create a new pipeline and modify it
|
||||
|
||||
pipeline {
|
||||
agent any
|
||||
|
||||
environment {
|
||||
NODE_USER = "steam"
|
||||
NODE_HOST = "10.0.0.40"
|
||||
DIR_WINE = "/wine"
|
||||
DIR_STEAMCMD = "/wine/drive_c/SteamCMD"
|
||||
DIR_SERVER = "/wine/drive_c/l4d2server"
|
||||
|
||||
DOWNLOAD_URL_SOURCEMOD = "https://sm.alliedmods.net/smdrop/1.12/sourcemod-1.12.0-git7210-windows.zip"
|
||||
DOWNLOAD_URL_METAMOD = "https://mms.alliedmods.net/mmsdrop/1.12/mmsource-1.12.0-git1219-windows.zip"
|
||||
|
||||
L4D2_MAP = "c8m1_apartment"
|
||||
L4D2_MAX_PLAYERS = 8
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Test Connection') {
|
||||
steps {
|
||||
sshagent(['l4d2-server']) {
|
||||
sh '''
|
||||
ssh ${NODE_USER}@${NODE_HOST} echo "Test Connection"
|
||||
mkdir ~/.ssh || true
|
||||
rm ~/.ssh/known_hosts || true
|
||||
ssh-keyscan ${NODE_HOST} >> ~/.ssh/known_hosts
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Test Installation') {
|
||||
steps {
|
||||
sshagent(['l4d2-server']) {
|
||||
sh '''
|
||||
ssh ${NODE_USER}@${NODE_HOST} 'bash -s' < ./scripts/checkwine.sh
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Compiling addons') {
|
||||
agent {
|
||||
docker {
|
||||
image 'debian:bookworm'
|
||||
args '-u root'
|
||||
}
|
||||
}
|
||||
environment {
|
||||
DIR_WORKDIR = "/dependencies"
|
||||
DIR_ADDONS = "${DIR_WORKDIR}/addons"
|
||||
DIR_SOURCEMOD = "${DIR_ADDONS}/sourcemod"
|
||||
DIR_SCRIPTING = "${DIR_SOURCEMOD}/scripting"
|
||||
DIR_WORKSPACE_SCRIPTING = "${WORKSPACE}/app/left4dead2/addons/sourcemod/scripting"
|
||||
}
|
||||
steps {
|
||||
sh '''
|
||||
apt update && apt install -y wget git curl libarchive-tools lib32stdc++6
|
||||
mkdir $DIR_WORKDIR
|
||||
bash ./scripts/getbuildtools.sh
|
||||
'''
|
||||
sh '''
|
||||
for scrs in ./scripts/addons/*.sh; do bash "$scrs"; done
|
||||
if [ -d "$DIR_WORKSPACE_SCRIPTING" ]; then
|
||||
cp -v "$DIR_WORKSPACE_SCRIPTING"/*.sp $DIR_SCRIPTING || true
|
||||
fi
|
||||
bash $DIR_SCRIPTING/compile.sh
|
||||
bash ./scripts/cleantools.sh
|
||||
'''
|
||||
}
|
||||
}
|
||||
stage('Install and check the game server') {
|
||||
when {
|
||||
expression { !params.SKIP_UPDATE }
|
||||
}
|
||||
steps {
|
||||
sshagent(['l4d2-server']) {
|
||||
sh '''
|
||||
echo "Cleaning configuration"
|
||||
ssh ${NODE_USER}@${NODE_HOST} "
|
||||
rm -r ${DIR_SERVER}/left4dead2/cfg/sourcemod || true
|
||||
"
|
||||
ssh ${NODE_USER}@${NODE_HOST} 'bash -s' < ./scripts/getgame.sh
|
||||
echo "Cleaning Addons"
|
||||
ssh ${NODE_USER}@${NODE_HOST} "
|
||||
rm -r ${DIR_SERVER}/left4dead2/addons/metam* || true
|
||||
rm -r ${DIR_SERVER}/left4dead2/addons/sourcemod || true
|
||||
curl -sL ${DOWNLOAD_URL_SOURCEMOD} | bsdtar -xf - -C ${DIR_SERVER}/left4dead2
|
||||
curl -sL ${DOWNLOAD_URL_METAMOD} | bsdtar -xf - -C ${DIR_SERVER}/left4dead2
|
||||
"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Ship the configuration') {
|
||||
steps {
|
||||
sshagent(['l4d2-server']) {
|
||||
sh '''
|
||||
tar czf - -C ./app left4dead2 | ssh ${NODE_USER}@${NODE_HOST} "tar xzf - -C ${DIR_SERVER}"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Run the game') {
|
||||
steps {
|
||||
sshagent(['l4d2-server']) {
|
||||
sh '''
|
||||
ssh ${NODE_USER}@${NODE_HOST} "
|
||||
source /home/${NODE_USER}/.bashrc
|
||||
source /home/${NODE_USER}/.game.env
|
||||
pm2 start 'xvfb-run -a \
|
||||
wine $DIR_SERVER/srcds.exe \
|
||||
-console \
|
||||
-game left4dead2 \
|
||||
-usercon \
|
||||
+map ${L4D2_MAP} \
|
||||
+exec server.cfg \
|
||||
+maxplayers ${L4D2_MAX_PLAYERS}' \
|
||||
--name l4d2server
|
||||
sleep 5
|
||||
pm2 logs --nostream l4d2-server
|
||||
"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user