From 50842128ad4c4c127bb6600e4885412b99ce07da Mon Sep 17 00:00:00 2001 From: adam Date: Sun, 17 Nov 2024 13:23:08 -0500 Subject: [PATCH] more elaboration, still full of todo's --- Jenkinsfile | 69 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 64 insertions(+), 5 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 188ecf8..8c314cb 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,11 +1,70 @@ pipeline { agent any stages { - stage (‘Deploy’) { - sh ‘ssh user@server rm -rf temp_deploy’ - sh ‘ssh user@server mkdir -p temp_deploy’ - sh ‘scp -r dist user@server:temp_deploy’ - sh ‘ssh user@server “rm -rf dist/ && mv temp_deploy/ dist/”’ + stage('build'){ + //TODO: dotnet build + } + 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{ + sh 'ssh user@server rm -rf temp_deploy' + sh 'ssh user@server mkdir -p temp_deploy' + sh 'scp -r dist user@server:temp_deploy' + } + } + stage ('stop') + { + when { + branch "release" + } + script{ + //user is the service user + ssh user@host 'bash -s' << 'ENDSSH' + systemctl --user stop $svcname + ENDSSH + } + } + stage ('backup db') + { + when { + branch "release" + } + //TODO: backup database + } + stage ('update db') + { + when { + branch "release" + } + //TODO: update database + //TODO: if updating the db fails, restore the old one + } + stage ('replace') + { + when { + branch "release" + } + sh 'ssh user@server “rm -rf dist/ && mv temp_deploy/ dist/”' + } + stage ('spin up') + { + when { + branch "release" + } + script{ + ssh user@host 'bash -s' << 'ENDSSH' + systemctl --user start $svcname + ENDSSH + } } } } \ No newline at end of file