Submit Search
Upload
為 Node.js 專案打造專屬管家進行開發流程整合及健康檢測
•
6 likes
•
1,433 views
謝 宗穎
Follow
2016 CTJS conf 簡報,說明如何為 nodejs 專案建構持續整合流程
Read less
Read more
Software
Report
Share
Report
Share
1 of 53
Download now
Download to read offline
Recommended
中華電信 教育訓練
中華電信 教育訓練
謝 宗穎
JSDC 2015 - TDD 的開發哲學,以 Node.js 為例
JSDC 2015 - TDD 的開發哲學,以 Node.js 為例
謝 宗穎
JCConf 2015 workshop 動手玩 Java 專案建置工具
JCConf 2015 workshop 動手玩 Java 專案建置工具
謝 宗穎
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Fwdays
Евгений Жарков "React Native: Hurdle Race"
Евгений Жарков "React Native: Hurdle Race"
Fwdays
Live deployment, ci, drupal
Live deployment, ci, drupal
Andrii Podanenko
Continuous Delivery With Selenium Grid And Docker
Continuous Delivery With Selenium Grid And Docker
Barbara Gonzalez
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet
Recommended
中華電信 教育訓練
中華電信 教育訓練
謝 宗穎
JSDC 2015 - TDD 的開發哲學,以 Node.js 為例
JSDC 2015 - TDD 的開發哲學,以 Node.js 為例
謝 宗穎
JCConf 2015 workshop 動手玩 Java 專案建置工具
JCConf 2015 workshop 動手玩 Java 專案建置工具
謝 宗穎
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Fwdays
Евгений Жарков "React Native: Hurdle Race"
Евгений Жарков "React Native: Hurdle Race"
Fwdays
Live deployment, ci, drupal
Live deployment, ci, drupal
Andrii Podanenko
Continuous Delivery With Selenium Grid And Docker
Continuous Delivery With Selenium Grid And Docker
Barbara Gonzalez
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet
Modern Infrastructure from Scratch with Puppet
Modern Infrastructure from Scratch with Puppet
Puppet
Graphql usage
Graphql usage
Valentin Buryakov
Automated acceptance test
Automated acceptance test
Bryan Liu
Puppet in the Pipeline
Puppet in the Pipeline
Puppet
Lviv 2013 d7 vs d8
Lviv 2013 d7 vs d8
Andy Postnikov
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
Fwdays
Java Day Kharkiv - Next-gen engineering with Docker and Kubernetes
Java Day Kharkiv - Next-gen engineering with Docker and Kubernetes
Antons Kranga
[English][Test Girls] Zero to Hero: Start Test automation with Cypress
[English][Test Girls] Zero to Hero: Start Test automation with Cypress
Test Girls
Vagrant to-aws-flow
Vagrant to-aws-flow
Kimberly Macias
Using Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build Times
Using Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build Times
DevOps.com
Running JavaScript Efficiently in a Java World
Running JavaScript Efficiently in a Java World
irbull
DevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux Containers
inside-BigData.com
Супер быстрая автоматизация тестирования на iOS
Супер быстрая автоматизация тестирования на iOS
SQALab
CI/CD Using Ansible and Jenkins for Infrastructure
CI/CD Using Ansible and Jenkins for Infrastructure
Faisal Shaikh
Jenkins presentation
Jenkins presentation
Valentin Buryakov
Cypress e2e automation testing - day1 intor by: Hassan Hameed
Cypress e2e automation testing - day1 intor by: Hassan Hameed
Hassan Muhammad
Grooving with Jenkins
Grooving with Jenkins
Anton Weiss
Kubernetes x PaaS – コンテナアプリケーションのNoOpsへの挑戦
Kubernetes x PaaS – コンテナアプリケーションのNoOpsへの挑戦
Yoichi Kawasaki
Dockerizing BDD : Ruby-Cucumber Example
Dockerizing BDD : Ruby-Cucumber Example
Shashikant Jagtap
Cypress Automation
Cypress Automation
Susantha Pathirana
安小姐與詹先生的邂逅 Android + Jenkins
安小姐與詹先生的邂逅 Android + Jenkins
PRADA Hsiung
Google Cloud Platform 2014Q4
Google Cloud Platform 2014Q4
Simon Su
More Related Content
What's hot
Modern Infrastructure from Scratch with Puppet
Modern Infrastructure from Scratch with Puppet
Puppet
Graphql usage
Graphql usage
Valentin Buryakov
Automated acceptance test
Automated acceptance test
Bryan Liu
Puppet in the Pipeline
Puppet in the Pipeline
Puppet
Lviv 2013 d7 vs d8
Lviv 2013 d7 vs d8
Andy Postnikov
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
Fwdays
Java Day Kharkiv - Next-gen engineering with Docker and Kubernetes
Java Day Kharkiv - Next-gen engineering with Docker and Kubernetes
Antons Kranga
[English][Test Girls] Zero to Hero: Start Test automation with Cypress
[English][Test Girls] Zero to Hero: Start Test automation with Cypress
Test Girls
Vagrant to-aws-flow
Vagrant to-aws-flow
Kimberly Macias
Using Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build Times
Using Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build Times
DevOps.com
Running JavaScript Efficiently in a Java World
Running JavaScript Efficiently in a Java World
irbull
DevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux Containers
inside-BigData.com
Супер быстрая автоматизация тестирования на iOS
Супер быстрая автоматизация тестирования на iOS
SQALab
CI/CD Using Ansible and Jenkins for Infrastructure
CI/CD Using Ansible and Jenkins for Infrastructure
Faisal Shaikh
Jenkins presentation
Jenkins presentation
Valentin Buryakov
Cypress e2e automation testing - day1 intor by: Hassan Hameed
Cypress e2e automation testing - day1 intor by: Hassan Hameed
Hassan Muhammad
Grooving with Jenkins
Grooving with Jenkins
Anton Weiss
Kubernetes x PaaS – コンテナアプリケーションのNoOpsへの挑戦
Kubernetes x PaaS – コンテナアプリケーションのNoOpsへの挑戦
Yoichi Kawasaki
Dockerizing BDD : Ruby-Cucumber Example
Dockerizing BDD : Ruby-Cucumber Example
Shashikant Jagtap
Cypress Automation
Cypress Automation
Susantha Pathirana
What's hot
(20)
Modern Infrastructure from Scratch with Puppet
Modern Infrastructure from Scratch with Puppet
Graphql usage
Graphql usage
Automated acceptance test
Automated acceptance test
Puppet in the Pipeline
Puppet in the Pipeline
Lviv 2013 d7 vs d8
Lviv 2013 d7 vs d8
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
Java Day Kharkiv - Next-gen engineering with Docker and Kubernetes
Java Day Kharkiv - Next-gen engineering with Docker and Kubernetes
[English][Test Girls] Zero to Hero: Start Test automation with Cypress
[English][Test Girls] Zero to Hero: Start Test automation with Cypress
Vagrant to-aws-flow
Vagrant to-aws-flow
Using Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build Times
Using Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build Times
Running JavaScript Efficiently in a Java World
Running JavaScript Efficiently in a Java World
DevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux Containers
Супер быстрая автоматизация тестирования на iOS
Супер быстрая автоматизация тестирования на iOS
CI/CD Using Ansible and Jenkins for Infrastructure
CI/CD Using Ansible and Jenkins for Infrastructure
Jenkins presentation
Jenkins presentation
Cypress e2e automation testing - day1 intor by: Hassan Hameed
Cypress e2e automation testing - day1 intor by: Hassan Hameed
Grooving with Jenkins
Grooving with Jenkins
Kubernetes x PaaS – コンテナアプリケーションのNoOpsへの挑戦
Kubernetes x PaaS – コンテナアプリケーションのNoOpsへの挑戦
Dockerizing BDD : Ruby-Cucumber Example
Dockerizing BDD : Ruby-Cucumber Example
Cypress Automation
Cypress Automation
Viewers also liked
安小姐與詹先生的邂逅 Android + Jenkins
安小姐與詹先生的邂逅 Android + Jenkins
PRADA Hsiung
Google Cloud Platform 2014Q4
Google Cloud Platform 2014Q4
Simon Su
Developer team review of 2014
Developer team review of 2014
Caesar Chi
GCPUG.TW - 2016活動討論
GCPUG.TW - 2016活動討論
Simon Su
技術單兵作戰及團隊開發流程差異
技術單兵作戰及團隊開發流程差異
Caesar Chi
中原大學 Shift to cloud
中原大學 Shift to cloud
Simon Su
html5 & phonegap
html5 & phonegap
Caesar Chi
GCPUG.TW - 2015活動回顧
GCPUG.TW - 2015活動回顧
Simon Su
JCConf 2015 - Google Dataflow 在雲端大資料處理的應用
JCConf 2015 - Google Dataflow 在雲端大資料處理的應用
Simon Su
Web development, from git flow to github flow
Web development, from git flow to github flow
Caesar Chi
Docker with Cloud Service GCPUG
Docker with Cloud Service GCPUG
Caesar Chi
GCP - GCE, Cloud SQL, Cloud Storage, BigQuery Basic Training
GCP - GCE, Cloud SQL, Cloud Storage, BigQuery Basic Training
Simon Su
JCConf 2016 - Google Dataflow 小試
JCConf 2016 - Google Dataflow 小試
Simon Su
Brocade - Stingray Application Firewall
Brocade - Stingray Application Firewall
Simon Su
Google IO - When Bigquery meeet Node.js
Google IO - When Bigquery meeet Node.js
Simon Su
GCPUG meetup 201610 - Dataflow Introduction
GCPUG meetup 201610 - Dataflow Introduction
Simon Su
遠端團隊專案建立與管理 remote team management 2016
遠端團隊專案建立與管理 remote team management 2016
Caesar Chi
從失敗中學習打造技術團隊
從失敗中學習打造技術團隊
Caesar Chi
使用 Raspberry pi + fluentd + gcp cloud logging, big query 做iot 資料搜集與分析
使用 Raspberry pi + fluentd + gcp cloud logging, big query 做iot 資料搜集與分析
Simon Su
Introduce Angular2 & render & firebase flow
Introduce Angular2 & render & firebase flow
Caesar Chi
Viewers also liked
(20)
安小姐與詹先生的邂逅 Android + Jenkins
安小姐與詹先生的邂逅 Android + Jenkins
Google Cloud Platform 2014Q4
Google Cloud Platform 2014Q4
Developer team review of 2014
Developer team review of 2014
GCPUG.TW - 2016活動討論
GCPUG.TW - 2016活動討論
技術單兵作戰及團隊開發流程差異
技術單兵作戰及團隊開發流程差異
中原大學 Shift to cloud
中原大學 Shift to cloud
html5 & phonegap
html5 & phonegap
GCPUG.TW - 2015活動回顧
GCPUG.TW - 2015活動回顧
JCConf 2015 - Google Dataflow 在雲端大資料處理的應用
JCConf 2015 - Google Dataflow 在雲端大資料處理的應用
Web development, from git flow to github flow
Web development, from git flow to github flow
Docker with Cloud Service GCPUG
Docker with Cloud Service GCPUG
GCP - GCE, Cloud SQL, Cloud Storage, BigQuery Basic Training
GCP - GCE, Cloud SQL, Cloud Storage, BigQuery Basic Training
JCConf 2016 - Google Dataflow 小試
JCConf 2016 - Google Dataflow 小試
Brocade - Stingray Application Firewall
Brocade - Stingray Application Firewall
Google IO - When Bigquery meeet Node.js
Google IO - When Bigquery meeet Node.js
GCPUG meetup 201610 - Dataflow Introduction
GCPUG meetup 201610 - Dataflow Introduction
遠端團隊專案建立與管理 remote team management 2016
遠端團隊專案建立與管理 remote team management 2016
從失敗中學習打造技術團隊
從失敗中學習打造技術團隊
使用 Raspberry pi + fluentd + gcp cloud logging, big query 做iot 資料搜集與分析
使用 Raspberry pi + fluentd + gcp cloud logging, big query 做iot 資料搜集與分析
Introduce Angular2 & render & firebase flow
Introduce Angular2 & render & firebase flow
Similar to 為 Node.js 專案打造專屬管家進行開發流程整合及健康檢測
How and why i roll my own node.js framework
How and why i roll my own node.js framework
Ben Lin
Railsconf2011 deployment tips_for_slideshare
Railsconf2011 deployment tips_for_slideshare
tomcopeland
Laravel5 Introduction and essentials
Laravel5 Introduction and essentials
Pramod Kadam
Toolbox of a Ruby Team
Toolbox of a Ruby Team
Arto Artnik
SproutCore and the Future of Web Apps
SproutCore and the Future of Web Apps
Mike Subelsky
Easy Cloud Native Transformation using HashiCorp Nomad
Easy Cloud Native Transformation using HashiCorp Nomad
Bram Vogelaar
Introducing the Seneca MVP framework for Node.js
Introducing the Seneca MVP framework for Node.js
Richard Rodger
20120816 nodejsdublin
20120816 nodejsdublin
Richard Rodger
Rapid prototyping and easy testing with ember cli mirage
Rapid prototyping and easy testing with ember cli mirage
Krzysztof Bialek
Intro To JavaScript Unit Testing - Ran Mizrahi
Intro To JavaScript Unit Testing - Ran Mizrahi
Ran Mizrahi
JavaScript Growing Up
JavaScript Growing Up
David Padbury
Writing robust Node.js applications
Writing robust Node.js applications
Tom Croucher
Node.js Patterns for Discerning Developers
Node.js Patterns for Discerning Developers
cacois
Infrastructure = code - 1 year later
Infrastructure = code - 1 year later
Christian Ortner
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
Igor Bronovskyy
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
Chris Bailey
Introduction to REST API with Node.js
Introduction to REST API with Node.js
Yoann Gotthilf
Burn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websites
Lindsay Holmwood
Lecture: Webpack 4
Lecture: Webpack 4
Sergei Iastrebov
Grunt & Front-end Workflow
Grunt & Front-end Workflow
Pagepro
Similar to 為 Node.js 專案打造專屬管家進行開發流程整合及健康檢測
(20)
How and why i roll my own node.js framework
How and why i roll my own node.js framework
Railsconf2011 deployment tips_for_slideshare
Railsconf2011 deployment tips_for_slideshare
Laravel5 Introduction and essentials
Laravel5 Introduction and essentials
Toolbox of a Ruby Team
Toolbox of a Ruby Team
SproutCore and the Future of Web Apps
SproutCore and the Future of Web Apps
Easy Cloud Native Transformation using HashiCorp Nomad
Easy Cloud Native Transformation using HashiCorp Nomad
Introducing the Seneca MVP framework for Node.js
Introducing the Seneca MVP framework for Node.js
20120816 nodejsdublin
20120816 nodejsdublin
Rapid prototyping and easy testing with ember cli mirage
Rapid prototyping and easy testing with ember cli mirage
Intro To JavaScript Unit Testing - Ran Mizrahi
Intro To JavaScript Unit Testing - Ran Mizrahi
JavaScript Growing Up
JavaScript Growing Up
Writing robust Node.js applications
Writing robust Node.js applications
Node.js Patterns for Discerning Developers
Node.js Patterns for Discerning Developers
Infrastructure = code - 1 year later
Infrastructure = code - 1 year later
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
Introduction to REST API with Node.js
Introduction to REST API with Node.js
Burn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websites
Lecture: Webpack 4
Lecture: Webpack 4
Grunt & Front-end Workflow
Grunt & Front-end Workflow
More from 謝 宗穎
DevOps 及 TDD 開發流程哲學
DevOps 及 TDD 開發流程哲學
謝 宗穎
Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境
Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境
謝 宗穎
Scrum 開發流程導入經驗分享
Scrum 開發流程導入經驗分享
謝 宗穎
TDD 實戰
TDD 實戰
謝 宗穎
從軟體開發角度 談 Docker 的應用
從軟體開發角度 談 Docker 的應用
謝 宗穎
Sails.js Model / ORM introduce
Sails.js Model / ORM introduce
謝 宗穎
More from 謝 宗穎
(6)
DevOps 及 TDD 開發流程哲學
DevOps 及 TDD 開發流程哲學
Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境
Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境
Scrum 開發流程導入經驗分享
Scrum 開發流程導入經驗分享
TDD 實戰
TDD 實戰
從軟體開發角度 談 Docker 的應用
從軟體開發角度 談 Docker 的應用
Sails.js Model / ORM introduce
Sails.js Model / ORM introduce
Recently uploaded
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
Lionel Briand
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conference
ssuser9e7c64
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
Jean Silva
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
Shane Coughlan
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
vyaparkranti
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
31events.com
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
RTS corp
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
itservices996
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
Safe Software
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
osttopstonverter
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Cizo Technology Services
Osi security architecture in network.pptx
Osi security architecture in network.pptx
VinzoCenzo
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
confluent
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
Shane Coughlan
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
BradBedford3
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
andrehoraa
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Drew Moseley
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
Bert Jan Schrijver
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
rahul_net
Recently uploaded
(20)
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conference
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Osi security architecture in network.pptx
Osi security architecture in network.pptx
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
為 Node.js 專案打造專屬管家進行開發流程整合及健康檢測
1.
NODE.JS CT
2.
SPOOKY trunk.studio trunk.studio/blog
3.
4.
•
5.
•
6.
•
7.
• • Continuous Integration •
8.
9.
10.
11.
12.
13.
= /
14.
= /
15.
16.
DevOps
17.
= /
18.
19.
20.
21.
Continuous Improvement
22.
23.
24.
Sequelize module.exports = { attributes:
{ username: { type: Sequelize.STRING, allowNull: false }, email: { type: Sequelize.STRING, allowNull: false }, age: { type: Sequelize.INTEGER } }, associations: function() { User.hasMany(Post); User.hasMany(Passport); }, };
25.
26.
FROM mhart/alpine-node:4 RUN apk
add --update git RUN apk add --update build-base libffi-dev ruby ruby-dev && gem install sass compass --no-ri --no-rdoc && apk del build-base libffi-dev ruby-dev && rm -rf /var/cache/apk/* Dockerfile
27.
Edge of Tomorrow
28.
it('register user should
success.', async (done) => { try { let newUser = { username: 'newUser', email: 'newUser@gmail.com', password: 'newUser' } let result = await request(sails.hooks.http.app) .post('/auth/local/register').send(newUser); let {email} = newUser; let checkUser = await User.findOne({ where: {email}, include: Passport} ); checkUser.email.should.be.equal(newUser.email); result.status.should.be.equal(302); result.headers.location.should.be.equal('/'); done(); } catch (e) { done(e); } }); Mocha
29.
30.
"scripts": { "debug": "node
debug app.js", "test": "grunt test", "test-junit": "mocha test --reporter mocha-junit-reporter", "build": "npm i && node_modules/grunt-cli/bin/grunt build", "start": "node app.js", "pm2-start": "pm2 start -f app.js --name 'sailsSample'", "pm2-stop": "pm2 stop sailsSample", "start-prod": "NODE_ENV=production node app.js", "build-prod": "grunt prod", "build-docker-env": "docker build -t agileworks/sails_sample_env dockers/node", "build-docker-prod-image": "docker build -t agileworks/sails_sample_prod .", } Package.json
31.
deploy-production-docker: - ssh jenkins@localhost
docker rm -f sails_sample_prod ssh jenkins@localhost docker run -d --name sails_sample_prod -p 8800:1337 agileworks/sails_sample_prod deploy-production-legacy: ssh jenkins@localhost mkdir -p ~/deploy/production scp sailsSampleProd.tar.gz jenkins@localhost:~/deploy/production tar -C ~/deploy/production/ -vxf ~/deploy/production/ sailsSampleProd.tar.gz package-production: - rm sailsSampleProd.tar.gz tar cvf ./sailsSampleProd.tar.gz ./ restart-production: - ssh jenkins@localhost cd ~/deploy/production && pm2 delete production ssh jenkins@localhost cd ~/deploy/production && NODE_ENV=production pm2 start -f app.js --name 'production' Makefile
32.
33.
Jenkins 2 Pipeline
34.
node { stage 'checkout
project' git url: 'https://github.com/TrunkWorkshop/sailsSample.git' stage 'check env' sh "node -v" stage 'install pm2' sh "npm install pm2 -g" stage 'build project' sh "npm install" stage 'test project' sh "npm run test-junit" step([$class: 'JUnitResultArchiver', testResults: 'test-results.xml']) }
35.
node { stage 'run
project' sh "npm run pm2-start" try{ stage 'Approve, go production' def url = 'http://localhost:1337/' input message: "$url look good? ", ok: "Deploy to production" }finally{ sh "npm run pm2-stop" } stage 'package production' sh "make package-production" step([$class: 'ArtifactArchiver', artifacts: 'prod.tar.gz']) stage 'deploy production' sh "make deploy-production-legacy" stage 'restart production' sh "make restart-production" }
36.
37.
CI / CD 有效溝通 累積開發能量 快速迭代驗證 永生
38.
39.
40.
Checking
41.
42.
Cobertura
43.
Integration
44.
Pipeline
45.
Pull Request
46.
47.
Connects
48.
Slack + Github
+ Jenkins
49.
50.
51.
52.
53.
&
Download now