_template-service/Jenkinsfile

96 lines
2.8 KiB
Plaintext
Raw Normal View History

2024-11-16 22:19:51 -05:00
pipeline {
agent any
environment {
linuxServiceAccount=creds
productiondatabase_connectionString=creds
targetHost=string
}
2024-11-16 22:19:51 -05:00
stages {
2024-11-17 13:23:08 -05:00
stage('build'){
//"hey self, what if once in your life you try a *different* language?" "then i'll update this file, moai.emoji."
dotnetBuild(outputDirectory: "./dist", project: "$REPO_NAME.csproj")
2024-11-17 13:23:08 -05:00
}
stage('test'){
//TODO: run tests
//TODO: publish tests in some nicely readable format
}
stage ('upload') {
when {
//now my CI/CD is no longer continuous, it's just... automatic.
//(which is what I actually want tbh)
//but that does mean I have to put this condition in every single branch
branch "release"
}
steps{
sshagent([linuxServiceAccount])
{
ssh ${env.targetHost} 'bash -s' << 'ENDSSH'
rm -rf temp_deploy
mkdir -p temp_deploy
ENDSSH
sh 'scp -r dist ${env.targetHost}:temp_deploy'
}
2024-11-17 13:23:08 -05:00
}
}
stage ('stop')
{
when {
branch "release"
}
steps{
script{
sshagent([linuxServiceAccount]) {
ssh ${env.targetHost} 'bash -s' << 'ENDSSH'
systemctl --user stop $REPO_NAME
ENDSSH
}
}
2024-11-17 13:23:08 -05:00
}
}
---dbstart---
2024-11-17 13:23:08 -05:00
stage ('backup db')
{
when {
branch "release"
}
steps{
//TODO: backup database
}
2024-11-17 13:23:08 -05:00
}
stage ('update db')
{
when {
branch "release"
}
//TODO: update database
//TODO: if updating the db fails, restore the old one
}
---dbend---
2024-11-17 13:23:08 -05:00
stage ('replace')
{
when {
branch "release"
}
steps{
sshagent([linuxServiceAccount]) {
ssh ${env.targetHost} "rm -rf dist/ && mv temp_deploy/ dist/"
}
}
2024-11-17 13:23:08 -05:00
}
stage ('spin up')
{
when {
branch "release"
}
steps{
script{
sshagent([linuxServiceAccount]) {
ssh ${env.targetHost} 'bash -s' << 'ENDSSH'
systemctl --user start $REPO_NAME
ENDSSH
}
}
2024-11-17 13:23:08 -05:00
}
2024-11-16 22:19:51 -05:00
}
}
}