From 1617b7dba1bb441008e9015a43ad24124a4d6437 Mon Sep 17 00:00:00 2001 From: Jesus Federico Date: Tue, 16 Oct 2018 14:28:21 -0400 Subject: [PATCH] Helper scripts (#298) * Added helper scripts * Added commit tag to version tag to builds from master * Restored script for Travis * Restored script for Jenkins * Restored script for Jenkins * Restored script for Jenkins --- .gitignore | 1 + Jenkinsfile | 4 ++-- scripts/README.md | 13 +++++++++++++ scripts/deploy.sh | 17 +++++++++++++++++ scripts/greenlight-auto-deployer.service | 5 +++++ scripts/greenlight-auto-deployer.timer | 12 ++++++++++++ 6 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 scripts/README.md create mode 100755 scripts/deploy.sh create mode 100644 scripts/greenlight-auto-deployer.service create mode 100644 scripts/greenlight-auto-deployer.timer diff --git a/.gitignore b/.gitignore index 0608b0ea..953e12ed 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,7 @@ vendor/bundle # Ignore environment configuration. .env +env # IDEs .idea diff --git a/Jenkinsfile b/Jenkinsfile index e8c64eaf..50d03a27 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -61,7 +61,7 @@ volumes: [ withCredentials([file(credentialsId: 'cloud-datastore-user-account-creds', variable: 'FILE'), string(credentialsId: 'DOCKER_USER', variable: 'DOCKER_USER'), string(credentialsId: 'DOCKER_PASSWORD', variable: 'DOCKER_PASSWORD')]) { sh "gcloud auth activate-service-account --key-file=$FILE" if (stageBuild) { - sh "sed -i 's/VERSION =.*/VERSION = \"${gitBranch}\"/g' config/initializers/version.rb" + sh "sed -i 's/VERSION =.*/VERSION = \"${gitBranch} (${gitCommit.substring(7)})\"/g' config/initializers/version.rb" sh "gcloud docker -- build -t ${imageTag} -t 'bigbluebutton/${appName}:master' . && gcloud docker -- push ${imageTag}" sh "docker login -u $DOCKER_USER -p $DOCKER_PASSWORD" sh "docker push 'bigbluebutton/${appName}:master'" @@ -93,4 +93,4 @@ volumes: [ slackSend (color: '#FF0000', message: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' message: ${e} (${env.BUILD_URL})") } } -} \ No newline at end of file +} diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 00000000..3114a33b --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,13 @@ +# Helpers + +## Running automatic updates + +``` +sudo ln -s /root/greenlight/scripts/deploy.sh /usr/local/bin/greenlight-deploy +sudo cp /root/greenlight/scripts/greenlight-auto-deployer.service /etc/systemd/system/greenlight-auto-deployer.service +sudo cp /root/greenlight/scripts/greenlight-auto-deployer.timer /etc/systemd/system/greenlight-auto-deployer.timer +sudo systemctl daemon-reload +sudo systemctl enable greenlight-auto-deployer.service +sudo systemctl enable greenlight-auto-deployer.timer +sudo systemctl start greenlight-auto-deployer.timer +``` diff --git a/scripts/deploy.sh b/scripts/deploy.sh new file mode 100755 index 00000000..3fa3d2c7 --- /dev/null +++ b/scripts/deploy.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +STATUS="Status: Downloaded newer image for bigbluebutton/greenlight:v2" + +new_status=$(sudo docker pull bigbluebutton/greenlight:v2 | grep Status:) + +echo $new_status + +if [ "$STATUS" == "$new_status" ] +then + cd /home/ubuntu/greenlight + sudo docker-compose down + sudo docker rmi $(sudo docker images -f dangling=true -q) + sudo docker-compose up -d +fi + +exit 0 diff --git a/scripts/greenlight-auto-deployer.service b/scripts/greenlight-auto-deployer.service new file mode 100644 index 00000000..ccab73d9 --- /dev/null +++ b/scripts/greenlight-auto-deployer.service @@ -0,0 +1,5 @@ +[Unit] +Description=Greenlight Auto Deployer + +[Service] +ExecStart=/bin/bash /usr/local/bin/greenlight-deploy diff --git a/scripts/greenlight-auto-deployer.timer b/scripts/greenlight-auto-deployer.timer new file mode 100644 index 00000000..45123504 --- /dev/null +++ b/scripts/greenlight-auto-deployer.timer @@ -0,0 +1,12 @@ +[Unit] +Description=Runs greenlight-deploy every minute + +[Timer] +# Time to wait after booting before we run first time +OnBootSec=1min +# Time between running each consecutive time +OnUnitActiveSec=1m +Unit=greenlight-auto-deployer.service + +[Install] +WantedBy=multi-user.target