Jenkins CI for MacDevOps. Tim Sutton Concordia University, Faculty of Fine Arts Montreal

Similar documents
Continuous Integration (CI) with Jenkins

Bitte decken Sie die schraffierte Fläche mit einem Bild ab. Please cover the shaded area with a picture. (24,4 x 7,6 cm)

Seven Habits of Highly Effective Jenkins Users

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

TM DevOps Use Case TechMinfy All Rights Reserved

BUILDING A GPU-FOCUSED CI SOLUTION

CONTINUOUS INTEGRATION; TIPS & TRICKS

Chapter 1 - Continuous Delivery and the Jenkins Pipeline

Continuous Integration using Docker & Jenkins

Continuous Integration and Deployment (CI/CD)

USING GIT FOR AUTOMATION AND COLLABORATION JUSTIN ELLIOTT - MATT HANSEN PENN STATE UNIVERSITY

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

Accelerate at DevOps Speed With Openshift v3. Alessandro Vozza & Samuel Terburg Red Hat

By: Jeeva S. Chelladhurai

Distributed CI: Scaling Jenkins on Mesos and Marathon. Roger Ignazio Puppet Labs, Inc. MesosCon 2015 Seattle, WA

Anchore Container Image Scanner Plugin

Git Basi, workflow e concetti avanzati (pt2)

Continuous Integration & Code Quality MINDS-ON NUNO 11 APRIL 2017

JetBrains TeamCity Comparison

Continuous Delivery for Cloud Native Applications

DevNet Workshop-Hands-on with CloudCenter and Jenkins

NetApp Jenkins Plugin Documentation

Who Moved My Module? 1

Tools and Process for Streamlining Mac Deployment. Tim Sutton Concordia University, Faculty of Fine Arts Montreal

Lab 5 Exercise Build and continuous integration tools

Sunil Shah SECURE, FLEXIBLE CONTINUOUS DELIVERY PIPELINES WITH GITLAB AND DC/OS Mesosphere, Inc. All Rights Reserved.

Jenkins in the Enterprise Building resilient CI infrastructure

We are ready to serve Latest Testing Trends, Are you ready to learn?? New Batches Info

Orchestrating the Continuous Delivery Process

Con. Continuous Integration

Continuous Integration with Selenium and Jenkins

Continuous integration & continuous delivery. COSC345 Software Engineering

Continuous Integration, Continuous Deployment and Continuous Testing by HP Codar using ALM and Jenkins

Linux System Management with Puppet, Gitlab, and R10k. Scott Nolin, SSEC Technical Computing 22 June 2017

Creating pipelines that build, test and deploy containerized artifacts Slides: Tom Adams

What is git? Distributed Version Control System (VCS); Created by Linus Torvalds, to help with Linux development;

Large-Scale Automation with Jenkins

What I ll be talking about. About me & bol.com The CI/CD bol.com Current setup. The future in the cloud

DevOps examples on NonStop Tools Overview. Cor Geboers, ATC Consultant

An Introduction to Eclipse Che Lets build a custom cloud IDE. October 2015 Tyler Jewell, Eclipse Che Project

Leveraging the OO Jenkins Plugin in DevOps scenarios

9 Reasons To Use a Binary Repository for Front-End Development with Bower

Revision control. INF5750/ Lecture 2 (Part I)

Jenkins Inside Google

Simplified CICD with Jenkins and Git on the ZeroStack Platform

Azure Logic Apps. The big picture. API Apps, Logic Apps & API Management

Automating the Build Pipeline for Docker Container

Seven Habits of Highly Effective Jenkins Users. Andrew Bayer Cloudera OSCON Java 2011

JenkinsPipelineUnit. Test your Continuous Delivery Pipeline. Ozan Gunalp - Emmanuel Quincerot

Build & Launch Tools (BLT) Automating best practices for enterprise sites

Belle II - Git migration

Configuration Management

vrealize Code Stream Trigger for Git

#jenkinsconf. Managing jenkins with multiple components project. Jenkins User Conference Israel. Presenter Name Ohad Basan

GETTING TO KNOW GIT: PART II JUSTIN ELLIOTT PENN STATE UNIVERSITY

Using vrealize Code Stream. 16 MAY 2017 vrealize Code Stream 2.3

Using vrealize Code Stream

Lab 01 How to Survive & Introduction to Git. Web Programming DataLab, CS, NTHU

ContainerOps DevOps Orchestration

Jenkins: AMPLab s Friendly Butler. He will build your projects so you don t have to!

Preparing for Jenkins Certification

Branching and Merging

Release Pipelines in Microsoft Ecosystems

Continuous integration in a Cray multiuser environment

DEPLOYMENT MADE EASY!

Developing and Testing Java Microservices on Docker. Todd Fasullo Dir. Engineering

No, You Shouldn't Do That! Lessons from Using Pipeline Robert Sandell James Nord

Using vrealize Code Stream. 12 APRIL 2018 vrealize Code Stream 2.4

White Paper(Draft) Continuous Integration/Delivery/Deployment in Next Generation Data Integration

Continuous Delivery the hard way with Kubernetes. Luke Marsden, Developer

Index. Chaminda Chandrasekara 2017 C. Chandrasekara, Beginning Build and Release Management with TFS 2017 and VSTS, DOI /

How to get started using the JSL

Parallelizing CI using Docker Swarm-Mode

Version Control with Git ME 461 Fall 2018

A CD Framework For Data Pipelines. Yaniv

Code Repository. P Blanchfield

FPLLL. Contributing. Martin R. Albrecht 2017/07/06

Review Version Control Concepts

Your Engineering Excellency

Empowering Developers to Take Flight Continuous Integration at Gogo

Container Orchestration on Amazon Web Services. Arun

PHP Composer 9 Benefits of Using a Binary Repository Manager

Using EasyBuild and Continuous Integration for Deploying Scientific Applications on Large Scale Production Systems

Azure DevOps. Randy Pagels Intelligent Cloud Technical Specialist Great Lakes Region

KTH Royal Institute of Technology SEMINAR 2-29 March Simone Stefani -

ThinkPalm s BreakThrough DevOps Capabilities ThinkPalm

Use git rm to remove files from workspace

Organising benchmarking LLVM-based compiler: Arm experience

Deployment and Testing Automation in Web Applications Implementing DevOps Practices in Production

ACCELERATE APPLICATION DELIVERY WITH OPENSHIFT. Siamak Sadeghianfar Sr Technical Marketing Manager, April 2016

Software Development I

ContainerOps - DevOps Orchestration. Quanyi Ma

Think Small to Scale Big

Look ma, no hands Jenkins Configuration-as-Code All Rights Reserved.

GIT FOR SYSTEM ADMINS JUSTIN ELLIOTT PENN STATE UNIVERSITY

CSE 332: Data Structures and Parallelism Winter 2019 Setting Up Your CSE 332 Environment

ONAP Developer Typical Setup 2017 July ONAP Virtual Developers Event

Git Workflows. Sylvain Bouveret, Grégory Mounié, Matthieu Moy

Strengthen and Scale security using DevSecOps

Configuration As Code. #jenkinsconf. Jenkins User Conference Europe #jenkinsconf. The Job DSL Plugin. Daniel Spilker CoreMedia

Transcription:

Jenkins CI for MacDevOps Tim Sutton Concordia University, Faculty of Fine Arts Montreal

A story

svn update./configure make

Hudson Jenkins

git pull cd code/tools./make_munki_mpkg.sh

munkibuilds.org

Continuous Integration

Continuous Integration Software Development Run unit, integration, performance tests Fix code style, handle compiler warnings Define a single trusted build environment (no works on my machine ) Automate merging or pushing code if conditions pass Orchestrate complex build tasks, shared dependencies

Continuous Integration Operations Run tests on configuration management tooling A build == any long-running task ending in a product, and which needs a specific environment set up Move magic you ve internalized into shared code Delegate access to others, remove bus factor

For example

Auto-build your MacAdmin tools

Single input, multiple builds Munki Imagr NetBoot / BSDPy

Single input, multiple builds AutoDMG Cache Builder (Nick McSpadden)

Monitor external code

Monitor external code

Monitor external code http://swcdn.apple.com/content/downloads/47/02/031-63096/ dejq3zu7l8qejx7r8xckqzuugus4qfinke/xprotectplistconfigdata.pkg <key>version</key> <real>2079</real> <key>pluginblacklist</key> <dict> <key>10</key> <dict> <key>com.microsoft.silverlightplugin</key> <dict> <key>minimumpluginbundleversion</key> <string>5.1.41212.0</string> <key>pluginupdateavailable</key> <true/> </dict> <dict> <key>matchfile</key> <dict> <key>nsurlnamekey</key> <string>cleanmymac</string> <key>nsurltypeidentifierkey</key> <string>public.unix-executable</string> </dict> <key>matchtype</key> <string>match</string> <key>identity</key> <data>8amuu0odotywejth+qcd5sepzk4=</data>

Monitor external code http://swcdn.apple.com/content/downloads/19/38/031-61264/ fn3uieyv462h1xqriahvvn0ri6niv60vb0/mrtconfigdata.pkg $ strings MRT OSX.XcodeGhost.A OSX.Genieo.A /Applications/InstallMac /Applications/Genieo.app ~/Library/Safari/Extensions/Omnibar.safariextz ~/Library/Safari/Extensions/GoldenBoy.safariextz

Iteration

Iteration Start with a manual process that could be fully automated Whether a big or small job, encapsulate it into a single command Now make the required environment reproducible Add nodes (or runners ) to isolate this environment as required Isolate the inputs and outputs and turn them into variables Makes the build parameterized, allows for more flexible processing

Iteration Don t let perfect be the enemy of good Fail fast (`set -eux`, exit non-zero on unexpected results) Entropy is inevitable, exercise workflows regularly Job configurations get dense, so keep build steps short....and as much in SCM as possible

Patterns and tools

Multiple configurations (https://jenkins.osquery.io)

Triggers (SCM polling)

Triggers (GitHub webhook on push event)

Triggers (HTTP response)

Triggers (GitHub issue/pr bot)

Slave nodes Master -> Slave via SSH Slave -> Master via java -jar slave.jar (either way, set -Djava.awt.headless=true) (either way, slave nodes must be managed statically) Jenkins Swarm plugin Docker, EC2 dynamic slaves plugins

Dynamic environment variables EnvInject Plugin SSH Publisher

Publishing artifacts (SSH)

Publishing artifacts (CIFS)

Auth (GitHub OAuth)

Auth (Active Directory)

Credentials Managed centrally, no need to manage on slave nodes SSH keys Service tokens User authentication etc.

Plugins

Demo

Management, automation

Job DSL Plugin streamfilefromworkspace("${recipe_list_file}").eachline { def recipename = it job { name "${recipename}" logrotator(30, -1, -1, -1) label('macpro') multiscm { git('git://github.com/autopkg/autopkg.git', 'master') } triggers { cron('h H(0-7),H(8-15),H(16-23) * * *') } steps { shell("echo ${recipename} > recipe.txt") shell(readfilefromworkspace('autopkg-ci/steps/autopkg_run.py')) } configure { project -> def setter = project / publishers / 'hudson.plugins.descriptionsetter.descriptionsetterpublisher'

Job DSL Plugin

Jenkins Job Builder - job: name: job-name project-type: freestyle defaults: global description: 'Do not edit this job through the web!' disabled: false display-name: 'Fancy job name' concurrent: true workspace: /srv/build-area/job-name quiet-period: 5 block-downstream: false block-upstream: false retry-count: 3 node: NodeLabel1 NodeLabel2 logrotate: daystokeep: 3 numtokeep: 20 artifactdaystokeep: -1 artifactnumtokeep: -1

API Wrappers

Mature workflows

Pipelines Concourse (Pivotal) pipeline

Jenkins Blue Ocean Project

Jenkins https://jenkins.io brew install jenkins

Other CI platforms Name Self-hosted / Enterprise Cloud-hosted Bring your own runner buildbot Go (Thoughtworks) Concourse (Pivotal) Buildkite Travis-CI Appveyor GitLab CI Circle CI Bamboo BitBucket Pipelines buddybuild

Thank you! @timsutton @tvsutton https://macops.ca/macdevopsyvr-2016