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