Date post: | 15-Apr-2017 |
Category: |
Technology |
Upload: | michael-dawson |
View: | 137 times |
Download: | 0 times |
Keeping the Node.js Community Infrastructure
HummingMichael Dawson, IBM
About Michael Dawson Loves the web and building software (with Node.js!)
Senior Software Developer @ IBMIBM Runtime Technologies Node.js Technical Lead
Node.js collaborator and CTC member
Active in LTS, build, benchmarking , apiand post-mortem working groups
Contact me:
[email protected]: @mhdawson1https://www.linkedin.com/in/michael-dawson-6051282
3
About The Build TeamLoves hardware, operating systems, infrastructure and building Node.js
Johan Bergström@jbergstroem
João Reis@joaocgreis
Rod Vagg@rvag
Alexis Campailla@orangemocha
Michael Dawson@mhdawson
Hans Kristian Flaatten@Starefossen
Julien Gilli@misterdjules
Rich Trott@trott
Myles Borins@thealphanerd
Ryan Graham @rmg
Imran Iqbal@iWuzHere
Phillip Johnsen @phillipj
4
https://github.com/nodejs/build/blob/master/README.md
Providing computing infrastructure
Streamline testing and releasing
Operate and maintain
– Jenkins(ci and release)
– benchmarking
– nodejs.org
– and more
Purpose
Preference for community donations
–Expands involvement
–In line with Node.js approach - contributions influence
direction
Cloud based
Spread across providers
5
Our Approach
6
Infrastructure Providers
Tier 1
Tier 2
Microsoft Joyent IBM(osusol/softlayer)Voxer Scaleway NodesourceCloudFlare Arm
DigitalOcean Rackspace
7
Community Donations
From -> https://github.com/nodejs/build/blob/master/README.md
Picture provided by Rod Vagg
Jenkins Based
Separate Build and Release Instances
– https://ci.nodejs.org
– https://ci-release.nodejs.org
Build– 116 machines on last count
– 8 architectures (x86, x64, arm6, arm7, arm8, PPC be 64bit , PPC le
64 bit, s390x)
– 6 OS’s (Linux®, SmartOS, Windows®, OSX, AIX, FreeBSD)
Release– 14 machines on last count
– 8 architectures (x86, x64, arm6, arm7, arm8, PPC be 64bit , PPC le
64 bit, s390x)
– 4 OS’s (Linux, SmartOS, Windows, OSX)8
Infrastructure
9
Many Linux Variants
Test
Release
10
Builds
Nothing too interesting here
bash like syntax
Most of logic built into:
11
Jobs
https://github.com/nodejs/node/blob/master/Makefile
Mostly virtual machines except:
– Arm (Nodesource)
– Bare metal benchmarking machine (Softlayer)
Virtual machines
– free accounts from Infrastructure Providers
It’s a lot of Machines to manage ! (over 130)
Ansible - https://www.ansible.com/12
Machines
Picture provided by Rod Vagg
Agentless
Connects over ssh
Key files
– ansible-inventory
– ansible-playbook.yaml
– ansible-vars.yaml
13
Ansible
https://github.com/nodejs/build/tree/master/setup
14
Ansibleansible-inventory
ansible-vars.yaml
15
ansible-playbook.yaml
Multiple machines (at least 2 per platform)
ccache
Fanned jobs
Parallel test execution
16
Staying Nimble
Build/testacross all platforms
30 Mins
Shared secrets
– Infra
– Test
– Release
17
Trust Delegation
Website - https://nodejs.org
Benchmarking - https://benchmarking.nodejs.org/
Bots
Machine availability notifications
Backups
rsync mirrors
May support other projects
– Ex serialport module
18
Not just build/testing
You may not have access to test on all platforms/os combinations
Potential access to build infra to test/investigate issues
https://github.com/nodejs/build/blob/master/doc/process/special_access_to_build_resources
.md
19
Machine Access
OSX Support
Jenkins
20
Current Challenges
Get Involved !
Great chance to learn
– Hardware, OS’s, Jenkins, Ansible
– Cloud provisioning (openstack etc)
Donate
Where
–Most work done through GitHub
issues/Pull Requests
–https://github.com/nodejs/build/
–IRC: #node-build at Freenode
Copyrights and Trademarks
© IBM Corporation 2016. All Rights Reserved
IBM, the IBM logo, ibm.com are trademarks or registered
trademarks of International Business Machines Corp.,
registered in many jurisdictions worldwide. Other product and
service names might be trademarks of IBM or other companies.
A current list of IBM trademarks is available on the Web at
“Copyright and trademark information” at
www.ibm.com/legal/copytrade.shtml
Node.js is an official trademark of Joyent. IBM SDK for Node.js is not formally related to
or endorsed by the official Joyent Node.js open source or commercial project.
Java, JavaScript and all Java-based trademarks and logos are trademarks or registered
trademarks of Oracle and/or its affiliates.
Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both.
Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both.