diff --git a/Jenkinsfile b/Jenkinsfile index dc7c596..a22d641 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,132 +1,132 @@ pipeline { - agent any - stages { - stage('Flutter Cleanup/Update') { - steps { - sh '''flutter upgrade --force + agent any + stages { + stage('Flutter Cleanup/Update') { + steps { + sh '''cd fbla_ui + flutter upgrade --force flutter pub upgrade flutter --version flutter doctor flutter clean''' - } - } - stage('Build API & UI') { - parallel { - stage('Build API') { - steps { - sh '''docker image prune -f - docker build --no-cache -t fbla-api . - docker-compose down - docker-compose up -d''' - } + } + } + stage('Build API & UI') { + parallel { + stage('Build API') { + steps { + sh '''cd fbla-api + docker image prune -f + docker build --no-cache -t fbla-api . + docker-compose down + docker-compose up -d''' + } + } + stage('UI Web Build') { + steps { + sh '''cd fbla_ui + flutter build web --release --base-href /fbla/''' + } + } + stage('UI Linux Build') { + steps { + sh '''cd fbla_ui + flutter build linux --release''' + } + } + stage('UI APK Build') { + steps { + sh '''cd fbla_ui + flutter build apk --release''' + } + } + } + } + stage('Deploy and Save') { + parallel { + stage('Run API Tests') { + steps { + sh '''cd fbla_ui + dart pub get + dart run ./test/fbla_api_test.dart''' + } + } + stage('Deploy Local Web UI') { + steps { + script { + def remote = [ + name : 'HostServer', + host : '192.168.0.216', + user : '${env.JOBLINK_LOCAL_USER}', + password : '${env.JOBLINK_LOCAL_PASSWD}', + allowAnyHosts: true, + ] + sshRemove(path: '/home/${env.JOBLINK_LOCAL_USER}/fbla-webserver/webfiles/fbla', remote: remote) + sshPut(from: 'build/web/', into: '/home/${env.JOBLINK_LOCAL_USER}/fbla-webserver', remote: remote) + sshCommand remote: remote, command: "mv /home/${env.JOBLINK_LOCAL_USER}/fbla-webserver/web /home/${env.JOBLINK_LOCAL_USER}/fbla-webserver/webfiles/fbla" + } + } + } + stage('Save Other Builds') { + steps { + script { + def remote = [ + name : 'HostServer', + host : '192.168.0.216', + user : '${env.JOBLINK_LOCAL_USER}', + password : '${env.JOBLINK_LOCAL_PASSWD}', + allowAnyHosts: true, + ] + if (env.BRANCH_NAME == 'main') { + sshRemove(path: '/home/${env.JOBLINK_LOCAL_USER}/builds/main/linux', remote: remote) + sshCommand remote: remote, command: "mkdir /home/${env.JOBLINK_LOCAL_USER}/builds/main/linux" + sshPut(from: 'build/linux/x64/release', into: '/home/${env.JOBLINK_LOCAL_USER}/builds/main/linux', remote: remote) + sshCommand remote: remote, command: "mv /home/${env.JOBLINK_LOCAL_USER}/builds/main/linux/release/* /home/${env.JOBLINK_LOCAL_USER}/builds/main/linux" + sshCommand remote: remote, command: "rm -R /home/${env.JOBLINK_LOCAL_USER}/builds/main/linux/release/" + sshRemove(path: '/home/${env.JOBLINK_LOCAL_USER}/builds/main/apk', remote: remote) + sshCommand remote: remote, command: "mkdir /home/${env.JOBLINK_LOCAL_USER}/builds/main/apk" + sshPut(from: 'build/app/outputs/apk/release', into: '/home/${env.JOBLINK_LOCAL_USER}/builds/main/apk', remote: remote) + sshCommand remote: remote, command: "mv /home/${env.JOBLINK_LOCAL_USER}/builds/main/apk/release/* /home/${env.JOBLINK_LOCAL_USER}/builds/main/apk" + sshCommand remote: remote, command: "rm -R /home/${env.JOBLINK_LOCAL_USER}/builds/main/apk/release/" + } else { + sshRemove(path: '/home/${env.JOBLINK_LOCAL_USER}/builds/dev/linux', remote: remote) + sshCommand remote: remote, command: "mkdir /home/${env.JOBLINK_LOCAL_USER}/builds/dev/linux" + sshPut(from: 'build/linux/x64/release', into: '/home/${env.JOBLINK_LOCAL_USER}/builds/dev/linux', remote: remote) + sshCommand remote: remote, command: "mv /home/${env.JOBLINK_LOCAL_USER}/builds/dev/linux/release/* /home/${env.JOBLINK_LOCAL_USER}/builds/dev/linux" + sshCommand remote: remote, command: "rm -R /home/${env.JOBLINK_LOCAL_USER}/builds/dev/linux/release/" + sshRemove(path: '/home/${env.JOBLINK_LOCAL_USER}/builds/dev/apk', remote: remote) + sshCommand remote: remote, command: "mkdir /home/${env.JOBLINK_LOCAL_USER}/builds/dev/apk" + sshPut(from: 'build/app/outputs/apk/release', into: '/home/${env.JOBLINK_LOCAL_USER}/builds/dev/apk', remote: remote) + sshCommand remote: remote, command: "mv /home/${env.JOBLINK_LOCAL_USER}/builds/dev/apk/release/* /home/${env.JOBLINK_LOCAL_USER}/builds/dev/apk" + sshCommand remote: remote, command: "rm -R /home/${env.JOBLINK_LOCAL_USER}/builds/dev/apk/release/" } - - stage('UI Web Build') { - steps { - sh 'flutter build web --release --base-href /fbla/' - } - } - - stage('UI Linux Build') { - steps { - sh 'flutter build linux --release' - } - } - - stage('UI APK Build') { - steps { - sh 'flutter build apk --release' - } - } + } + } + } + stage('Deploy Remote Web UI') { + when { + expression { + env.BRANCH_NAME == 'main' + } + } + steps { + script { + def remote = [ + name : 'MarinoDev', + host : 'marinodev.com', + port : 21098, + user : '${env.JOBLINK_REMOTE_USER}', + identityFile : '/var/jenkins_home/marinoDevPrivateKey', + passphrase : '${env.JOBLINK_REMOTE_PASSWD}', + allowAnyHosts: true, + ] + sshRemove(path: '/home/${env.JOBLINK_REMOTE_USER}/public_html/fbla', remote: remote) + sshPut(from: '/var/jenkins_home/workspace/fbla-ui_main/build/web/', into: '/home/${env.JOBLINK_REMOTE_USER}/public_html/', remote: remote) + sshCommand remote: remote, command: "mv /home/${env.JOBLINK_REMOTE_USER}/public_html/web /home/${env.JOBLINK_REMOTE_USER}/public_html/fbla" + } + } + } + } } } - - - stage('Deploy and Save') { - parallel { - stage('Run API Tests') { - steps { - sh '''dart pub install - dart run ./test/fbla_api_test.dart''' - } - } - stage('Deploy Local Web UI') { - steps { - script { - def remote = [ - name: 'HostServer', - host: '192.168.0.216', - user: '${env.JOBLINK_LOCAL_USER}', - password: '${env.JOBLINK_LOCAL_PASSWD}', - allowAnyHosts: true, - ] - sshRemove(path: '/home/${env.JOBLINK_LOCAL_USER}/fbla-webserver/webfiles/fbla', remote: remote) - sshPut(from: 'build/web/', into: '/home/${env.JOBLINK_LOCAL_USER}/fbla-webserver', remote: remote) - sshCommand remote: remote, command: "mv /home/${env.JOBLINK_LOCAL_USER}/fbla-webserver/web /home/${env.JOBLINK_LOCAL_USER}/fbla-webserver/webfiles/fbla" - } - } - } - - stage('Save Other Builds') { - steps { - script { - def remote = [ - name: 'HostServer', - host: '192.168.0.216', - user: '${env.JOBLINK_LOCAL_USER}', - password: '${env.JOBLINK_LOCAL_PASSWD}', - allowAnyHosts: true, - ] - if(env.BRANCH_NAME == 'main') { - sshRemove(path: '/home/${env.JOBLINK_LOCAL_USER}/builds/main/linux', remote: remote) - sshCommand remote: remote, command: "mkdir /home/${env.JOBLINK_LOCAL_USER}/builds/main/linux" - sshPut(from: 'build/linux/x64/release', into: '/home/${env.JOBLINK_LOCAL_USER}/builds/main/linux', remote: remote) - sshCommand remote: remote, command: "mv /home/${env.JOBLINK_LOCAL_USER}/builds/main/linux/release/* /home/${env.JOBLINK_LOCAL_USER}/builds/main/linux" - sshCommand remote: remote, command: "rm -R /home/${env.JOBLINK_LOCAL_USER}/builds/main/linux/release/" - sshRemove(path: '/home/${env.JOBLINK_LOCAL_USER}/builds/main/apk', remote: remote) - sshCommand remote: remote, command: "mkdir /home/${env.JOBLINK_LOCAL_USER}/builds/main/apk" - sshPut(from: 'build/app/outputs/apk/release', into: '/home/${env.JOBLINK_LOCAL_USER}/builds/main/apk', remote: remote) - sshCommand remote: remote, command: "mv /home/${env.JOBLINK_LOCAL_USER}/builds/main/apk/release/* /home/${env.JOBLINK_LOCAL_USER}/builds/main/apk" - sshCommand remote: remote, command: "rm -R /home/${env.JOBLINK_LOCAL_USER}/builds/main/apk/release/" - } else { - sshRemove(path: '/home/${env.JOBLINK_LOCAL_USER}/builds/dev/linux', remote: remote) - sshCommand remote: remote, command: "mkdir /home/${env.JOBLINK_LOCAL_USER}/builds/dev/linux" - sshPut(from: 'build/linux/x64/release', into: '/home/${env.JOBLINK_LOCAL_USER}/builds/dev/linux', remote: remote) - sshCommand remote: remote, command: "mv /home/${env.JOBLINK_LOCAL_USER}/builds/dev/linux/release/* /home/${env.JOBLINK_LOCAL_USER}/builds/dev/linux" - sshCommand remote: remote, command: "rm -R /home/${env.JOBLINK_LOCAL_USER}/builds/dev/linux/release/" - sshRemove(path: '/home/${env.JOBLINK_LOCAL_USER}/builds/dev/apk', remote: remote) - sshCommand remote: remote, command: "mkdir /home/${env.JOBLINK_LOCAL_USER}/builds/dev/apk" - sshPut(from: 'build/app/outputs/apk/release', into: '/home/${env.JOBLINK_LOCAL_USER}/builds/dev/apk', remote: remote) - sshCommand remote: remote, command: "mv /home/${env.JOBLINK_LOCAL_USER}/builds/dev/apk/release/* /home/${env.JOBLINK_LOCAL_USER}/builds/dev/apk" - sshCommand remote: remote, command: "rm -R /home/${env.JOBLINK_LOCAL_USER}/builds/dev/apk/release/" - } - } - } - } - stage('Deploy Remote Web UI') { - when { - expression { - env.BRANCH_NAME == 'main' - } - } - steps { - script { - def remote = [ - name: 'MarinoDev', - host: 'marinodev.com', - port: 21098, - user: '${env.JOBLINK_REMOTE_USER}', - identityFile: '/var/jenkins_home/marinoDevPrivateKey', - passphrase: '${env.JOBLINK_REMOTE_PASSWD}', - allowAnyHosts: true, - ] - sshRemove(path: '/home/${env.JOBLINK_REMOTE_USER}/public_html/fbla', remote: remote) - sshPut(from: '/var/jenkins_home/workspace/fbla-ui_main/build/web/', into: '/home/${env.JOBLINK_REMOTE_USER}/public_html/', remote: remote) - sshCommand remote: remote, command: "mv /home/${env.JOBLINK_REMOTE_USER}/public_html/web /home/${env.JOBLINK_REMOTE_USER}/public_html/fbla" - } - } - } - } - } - } } \ No newline at end of file