Skip to content

Installing Jenkins

Ben Heasly edited this page Jan 20, 2017 · 27 revisions

One good use for MatlabJobSupport will be to run automated tests and validations on a remote Jenkins server. This page is about how to set up Jenkins and Jenkins integration with GitHub and the Matlab test runner.

See Creating Jenkins Tests for more about setting up tests for specific projects.

Work in progress. Coming soon...

Diagnostics, TAP, and YAML http://blogs.mathworks.com/developer/2016/09/29/tap-with-yaml/ http://blogs.mathworks.com/developer/2016/10/24/passing-diagnostics/ http://blogs.mathworks.com/developer/2016/10/31/diagnostic-records/ http://blogs.mathworks.com/developer/2016/11/17/test-report/ Jenkins http://blogs.mathworks.com/developer/2015/01/20/the-other-kind-of-continuous-integration/?s_tid=srchtitle

Installing Jenkins

Need Matlab and Docker on host.

From Jenkins wiki: https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu

I'm using our AMI RTB Jobs 9

I'm following these sections as written: "Installation" "Using Linux iptables for port 80 -> 8080"

Then able to access Jenkins at server address! In this case, http://ec2-35-164-119-122.us-west-2.compute.amazonaws.com/

Found initial password with both: sudo cat /var/lib/jenkins/secrets/initialAdminPassword cat /var/log/jenkins/jenkins.log

Want to get Jenkins to run docker commands instead of straight shell commands. So need to put jenkins user in Docker group:

sudo gpasswd -a jenkins docker sudo service docker restart sudo service jenkins restart

GitHub Integration

Test out GitHub integration. Using advice on this blog, about a similar CI setup with GitHub, Jenkins, and Docker (but not Matlab), and Jenkins official but cryptic docs http://www.therightcode.net/use-docker-jenkins-to-run-github-tests/ https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Plugin

User access, tokens, etc

Need to create ssh key for jenkins user sudo passwd jenkins su jenkins ssh-keygen -t rsa -b 4096 -C "benjamin.heasly@gmail.com" eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa exit

Need to add jenkins ssh key to GitHub su jenkins cat ~/.ssh/id_rsa.pub

copy it

exit

GitHub log in as render.toolbox@gmail.com

add ssh key

Need to connect GitHub and Jenkins Add jenkins user to GitHub render toolbox org. At GitHub user settings, create Person Access Token with sensible scopes: repo admin:org admin:repo_hook admin:org_hook notifications In Jenkins Manage Jenkins -> Configure System -> Add GitHub Server Add Credentials, Secret Text, Secret: Personal Access Token, name: "GitHub" In Credentials drop-down, select "GitHub" Test Connection Save

Test It Out

Need to set up a job to be triggered by GitHub In Jenkins Select a job Choose "GitHub project", add URL In Source Code Management, choose "git", add URL, branches to build "/" Choose "Build when a change is pushed to GitHub" Add post-build action "set GitHub commit status", use Status Result: "one of default messages and statuses" Make a test change at github Status shows in commit log Status shows in PR discussion

Matlab Integration

TAP plugin

Status Badges

For example, in README. Or anywhere. Embeddabel Build Status plugin.

Install "Embeddable Build Status" plugin Choose a job -> Embeddable Build Status -> copy "protected" url Paste url into eg GitHub README Install "Role-based Authorization Strategy" plugin Manage Jenkins -> Configure Global Security Choose "Role-Based Strategy" Manage Jenkins -> Manage and Assign Roles -> Manage Roles Global roles, create "anonymous", check "ViewStatus" Manage Jenkins -> Manage and Assign Roles -> Assign Roles Global roles, for "Anonymous", check "anonymous" Check GitHub README

Clone this wiki locally