±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½²½âÁËCI
¹¤¾ßÑ¡Ð͵Ŀ¼ÂÇÊÂÏîÒÔ¼°CI ¹¤¾ßµÄÓÅÁÓÊÆ¶Ô±È¡£
±¾ÎÄÀ´×ÔÓÚinfoq£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼ÍƼö¡£ |
|
³ÖÐø¼¯³É£¨Continuous integration£¬CI£©ÊÇÒ»ÖÖÿÌìÊý´Î½«ËùÓпª·¢ÈËÔ±µÄ¹¤×÷¸±±¾ºÏ²¢µ½Ò»Ìõ¹²ÏíÖ÷ÏßÉϵÄʵ¼ù¡£ÌýÆðÀ´£¬³ÖÐø¼¯³ÉҲûÓÐ×öºÜ¶àÊÂÇ飬ֻÊǼ¯³É²¢×Ô¶¯»¯ÁËһϵÁÐÈÎÎñ£¬ÒÔ±ãËùÓпª·¢ÈËÔ±µÄ¹¤×÷¶¼¿ÉÒÔÿʱÿ¿ÌµØ½øÐкϲ¢¡£µ«Æäʵ³ÖÐø¼¯³ÉÖÐÓкܶàÃŵÀ£¬¶øÇÒ¹¤¾ßÑ¡ÐÍÒ²ÓкܶàÖµµÃ˼¿¼µÄµØ·½¡£
̸µ½ CI£¬¾Í²»µÃ²»Ëµ Jenkins£¡

ΪÁ˰ïÖú DevOps ÐÂÊÖ¼ÓÉîÈÏʶ£¬ÎÒÃÇÏÈÀ´¿ìËٻعËһϠJenkins µÄÀúÊ·£º
Jenkins ÆðÔ´ÓÚ Hudson ÏîÄ¿¡£Hudson ʼÓÚ 2004 ÄêÏÄÌ죬ÓÉ Sun Microsystems
¹«Ë¾´´½¨£¬ÓÚ 2005 Äê 2 ÔÂÔÚ java.net ÖÐÊ״η¢²¼¡£
ÔÚ 2007 Äêǰºó£¬Hudson ³ÉΪÁË Cruise Control ºÍÆäËû¿ªÔ´¹¹½¨·þÎñÆ÷µÄ¸üºÃÌæ´úÆ·¡£ÔÚ
2008 Äê 5 Ô嵀 JavaOne »áÒéÉÏ£¬¸ÃÈí¼þ»ñµÃÁË¡°¿ª·¢ÈËÔ±½â¾ö·½°¸¡±Àà±ðµÄ¡° Duke¡¯s
Choice Award¡£
2010 Äê 11 Ô£¬Oracle ÊÕ¹ºÁË Sun Microsystems Ö®ºó£¬Hudson
ÉçÇø³öÏÖÁËÒ»¸öÓÐ¹ØÆäʹÓûù´¡ÉèÊ©µÄÎÊÌ⣬Õâ¸öÎÊÌâÖð½¥À©Õ¹µ½¶Ô Oracle ¹ÜÀíºÍ¿ØÖƵÄÖÊÒÉ¡£Ö÷ÒªÏîÄ¿¹±Ï×ÕߺÍ
Oracle ½øÐÐÁË̸ÅУ¬¾¡¹ÜÔÚºÜ¶à·½Ãæ´ï³ÉÁËÒ»Ö£¬µ«¹Ø¼üµÄÖ¢½áÔÚÓÚÉ̱êÃû³Æ¡° Hudson¡±£¬ÕâÊÇ
Oracle Éù³ÆÔÚ 2010 Äê 12 Ô¾ÍÓµÓиÃÃû³ÆµÄȨÀû²¢ÉêÇëÁËÉ̱ꡣÒò´Ë£¬ÔÚ 2011 Äê
1 Ô£¬ÏîÄ¿ÔÚͶƱ֮ºó½«Ãû³Æ´Ó¡°Hudson¡±¸ü¸ÄΪ¡°Jenkins¡±¡£
Jenkins ÀúÊ·ÓÆ¾Ã£¬Í¬Ê±»¹ÓÐÅÓ´óµÄÓû§Èº£¬´ó¼Ò¿ÉÄܾÍÓÐÒÉÎÊÁË£¬Ê¹Óà Jenkins ²»¾ÍÐÐÁË£¬ÎªÊ²Ã´»¹ÒªÈ¥ÕÒÆäËüµÄ
CI ¹¤¾ßÄØ£¿ÄѵÀÊÇ Jenkins ³öÏÖʲôÎÊÌâÁËÂ𣿡 ÊÂʵÉÏ£¬Õâ¸öÎÊÌâºÜÄѻش𣬵«ÎÒÈÏΪ Jenkins
ûÓÐÈκÎÎÊÌ⣬ÉõÖÁ¿ÉÒÔ˵ÈκΠCI ¹¤¾ß¶¼Ã»ÓÐ´í¡£

CI Ö»ÊÇÓÃÓÚÖ´ÐÐһЩ×Ô¶¯»¯ÈÎÎñµÄ¹¤¾ß£¬¿ÉÒÔÓëÔ´´úÂë¹ÜÀí¹¤¾ß¼¯³ÉÔÚÒ»Æð£¬¿ÉÒÔ¸ù¾ÝijЩÌõ¼þ×Ô¶¯´¥·¢×÷Òµ£¬²¢Ö´ÐÐһЩ¿ÉÅäÖõÄÃüÁî¡£Jenkins
¾ÍÊÇÕâÑù×öµÄ£¬²¢ÇÒÒѾÍêÃÀµØ×öÁË 15 ÄêÁË¡£
È»¶ø£¬Õâ¿ÉÄÜÕýÊÇÎÊÌâËùÔÚ£º
ÔÚ Hudson ÒÔ¼° Jenkins ʱ´úµÄ³õÆÚ£¬Ðí¶à¶«Î÷ÉÐδ±»·¢Ã÷£¬»òÕßÖÁÉÙûÓб»¹ã·ºÊ¹ÓᣱÈÈ磬VM¡¢¹«ÓÐÔÆ¡¢ÈÝÆ÷¡¢Kubernetes
µÈ¡£Òò´Ë£¬ÎªÁË´¦ÀíÎÒÃÇÏÖÔÚʹÓõÄй¦ÄÜ£¬Ò»¸ö¶àÄêǰÉè¼ÆµÄ¹¤¾ß£¬Èç½ñ±ØÐëÒÀÀµÒ»Ð©¸½¼ÓµÄ×é¼þºÍ²å¼þ¡£
×÷Ϊ Jenkins µÄ¹ÜÀíÔ±ºÍÓû§£¬ÎÒÃDZØÐëÒª¸üÁ˽â Jenkins£¬È·ÇеÄÖªµÀij¸ö²å¼þ×öÁËʲô£¬ÕýÈ·µÄÅäÖ÷½·¨£¬ÉõÖÁÓÐʱΪÁËÕý³£ÔËÐÐ
Jenkins£¬ÎÒÃÇÐèÒª±àдµÄ CI ´úÂë±È¹¦ÄÜʵÏÖ´úÂë¸ü¶à¡£
CI µÄÄ¿±êÊÇÒÔ×Ô¶¯»¯µÄ·½Ê½½øÐÐÆµ·±µØ¼¯³É¡£Èç¹ûÎÒÃÇ»¨·ÑÁË´óÁ¿µÄʱ¼äÀ´ÅäÖÃÓÃÓÚʵÏÖÕâһĿ±êµÄ¹¤¾ß£¬ÄÇôËü¾ÍûʲôÒâÒåÁË¡£
¾Ù¸öÀý×Ó£¬ÎªÁËʹ Jenkins Slave ·þÎñÆ÷Äܹ»ÔÚ Kubernetes
ÖÐÔËÐУ¬ÎÒÃÇÐèҪʹÓà Jenkins µÄ Kubernetes ²å¼þ£¬²¢ÇÒÐèÒªÅäÖãº
/**
* Õâ¸ö¹ÜµÀÃèÊöÁËÒ»¸ö¶àÈÝÆ÷×÷Òµ£¬ÓÃÓÚÔËÐÐ Maven ºÍ Golang ¹¹½¨
*/
podTemplate(yaml: """
apiVersion: v1
kind: Pod
spec:
containers:
- name: maven
image: maven:3.3.9-jdk-8-alpine
command: ['cat']
tty: true
- name: golang
image: golang:1.8.0
command: ['cat']
tty: true """
) {
node(POD_LABEL) {
stage('Build a Maven project') {
git 'https://github.com/jenkinsci/ kubernetes-plugin.git'
container('maven') {
sh 'mvn -B clean package'
}
}
stage('Build a Golang project') {
git url: 'https://github.com/terraform -providers/terraform
-provider-aws.git'
container('golang') {
sh """
mkdir -p /go/src/github.com/terraform-providers
ln -s `pwd` /go/src/github.com/terraform -providers/terraform
-provider-aws
cd /go/src/github.com/terraform -providers/terraform-provider
-aws && make build """
}
}
}
}
|
¼ò¶øÑÔÖ®£¬ÎªÁËͬʱʹÓà Maven ºÍ Golang£¬±ØÐëÏÈÔڹܵÀ´úÂëÖж¨ÒåÈÝÆ÷¡£ÔÚ±¾ÀýÖУ¬¶¨ÒåÃüÁÔںδ¦ÔËÐеĴúÂëÐÐÊý¼¸ºõÓë¹ÜµÀ±¾ÉíµÄ´úÂëÐÐÊýÏàͬ¡£ÔÚ´ó¶àÊýÇé¿öÏ£¬Èç¹ûÎÒÃǽ«
Pod ×÷Ϊ Jenkins µÄ Slave ÔËÐУ¬ÄÇô¿ÉÄÜÐèÒªµÚÈý¸öÈÝÆ÷À´´æ·Å JNLP¡£
Èç¹ûÎÒÃǹ¹½¨Ò»¸ö¸ü¸´ÔӵĹܵÀ£¬ÄÇôËüÊÆ±Ø»áÓиü¶àµÄ²½Ö裬ʹÓøü¶àµÄ¹¤¾ß£¬ÐèÒª¸ü¶àµÄÈÝÆ÷¡£Õû¸öÏîÄ¿¾Í»á±äµÃ¸´ÔÓÎޱȣ¬ÄÑÒÔά»¤¡£
CI ¹¤¾ßÑ¡Ð͵Ŀ¼ÂÇÊÂÏî
ÄÇôÎÊÌâÀ´ÁË£¬ÔÚÑ¡Ôñ CI ¹¤¾ßʱ£¬ÎÒÃÇÓ¦¸Ã¿¼ÂÇÄÄЩÊÂÏîÄØ£¿Ò»°ãÀ´Ëµ£¬ÐèÒª¿¼ÂÇÒÔϼ¸µã£º
Ò×ÓÚ°²×°£¨Èç¹û²»´òËãʹÓà SAAS/PAAS ½â¾ö·½°¸£©
Ò×ÓÚʹÓÃ
SAAS/PAAS ½â¾ö·½°¸
°²×°ÔÚÔÆÉÏ
°²×°ÔÚ K8s ÉÏ
°²×°ÔÚ±¾µØ£¨on-premise£©
¿ªÔ´
×÷Ϊһ¿î¹¤¾ß£¬Ò×ÓÚʹÓÃÊÇ×îÖØÒªµÄ£¬Ö»ÓÐÕâÑù²ÅÄÜÌá¸ßÎÒÃǵŤ×÷ЧÂÊ¡£ÁíÍ⣬Ëü»¹ÒªÒ×ÓÚ°²×°£¬Èç¹ûÕâ¸ö¹¤¾ß°²×°ºÜ¸´ÔÓ£¬ÎÞ·¨×Ô¶¯»¯»òºÜÄÑ×öµ½×Ô¶¯»¯£¬ÄÇôËü¾Í²»ÄܺܺõØÀ©Õ¹µ½¶à¸öÏîÄ¿ºÍ»·¾³ÖС£¶ÔÓÚСÐÍÍŶӶøÑÔ£¬ËûÃǸù±¾²»Ïëά»¤×Ô¼ºµÄ
CI£¬¸üÇãÏòÓÚʹÓÃÏÖÓеÄÔÆ·þÎñ£¬¶ø´óÐ͹«Ë¾¸üÏ£Íû×Ô¼º¿ØÖÆ CI£¬ÎÞÂÛÊÇÔÚÔÆÉÏ»¹ÊÇÔÚ±¾µØ¡£Kubernetes
ÏÖÔÚÈç´ËÈÈÃÅ£¬Óû§µ±È»Ï£Íû CI ¹¤¾ßÁ´×÷ΪÈÝÆ÷ÔËÐÐÔÚ K8s ÉÏ£¬Èç¹ûÕâ¸ö¹¤¾ßÊÇ¿ªÔ´µÄ¾Í¸üºÃÁË£¬»¹¿ÉÒÔ»ñµÃ¸ü¶àµÄÉçÇøÖ§³Ö¡£
CI ¹¤¾ßµÄÓÅÁÓÊÆ¶Ô±È
1 Jenkins
ǰÎÄÎÒÃÇÒѾ½²¹ý Jenkins ÁË£¬Jenkins ÊÇÒ»¿î¿ªÔ´Ãâ·Ñ²úÆ·£¬ÔÚ GitHub ÉÏÓÐ 1.5
Íò¿Å stars£¬Í¬Ê±Ò²ÓкܶàÈËʹÓã¬Èç¹ûÔÚ Stack Overflow ÖÐËÑË÷ Jenkins£¬Äã»á·¢ÏÖÓг¬¹ý
40 Íò¸öÎÊÌâ¡£µ«ÕýÈçǰÎÄËù˵£¬Jenkins ÊÇÒ»¸öºÜ¾Ã֮ǰÉè¼ÆµÄ¹¤¾ß£¬Èç¹ûÏëÒª¼æÈÝÏÖÔڵļܹ¹£¬¾Í±ØÐëÒÀÀµÒ»Ð©¸½¼ÓµÄ×é¼þºÍ²å¼þ¡£
2 CircleCI

CircleCI Ïà¶ÔÀ´Ëµ±È½Ï±ãÒË£¬ÓÐÃâ·Ñ¼Æ»®£¬Ò×ÓÚʹÓã¨ÅäÖÃÊÇ»ùÓÚ YAML µÄ£¬ËäÈ»²¢²»ÊÇÿ¸öÈ˶¼Ï²»¶
YAML£©²¢Ò×ÓÚÔĶÁ¡£
²»ÍƼöʹÓÃËüµÄÀíÓÉ£º
ÓÐÏÞµÄÆóÒµ¼¶²¿ÊðÑ¡Ï½öÔÚ¾ßÓÐ Terraform µÄ AWS ÖÐÖ§³Ö
ºÜÄÑÔÚ±¾µØ²¿Êð
²»Ö§³ÖÔÚ K8s Öв¿Êð
ºËÐÄ×é¼þÊÇÓà Clojure ±àдµÄ£¬ËäÈ»ºÜ¿á£¬µ«ÊÇʹÓÃȺÌåÏà¶Ô½ÏÉÙ£¬¶øÇÒ Clojure Ò²±È
Java Âý
3 TeamCity

TeamCity ÊÇÒ»¿îʹÓà Java ±àдµÄÃâ·Ñ²úÆ·¡£ÆäȱµãÊÇÈç¹ûÒªÔÚ K8s Öн«Æä×÷ΪÈÝÆ÷ÔËÐУ¬ÄÇô¾µÏñ»áºÜ´ó¡£Ò»°ãÀ´Ëµ£¬ÓÉÓÚ
JRE/JVM µÄ´æÔÚ£¬Java Ó¦ÓóÌÐò²»ÊʺÏÈÝÆ÷»¯¡£
4 Bamboo

Bamboo ÊÇʹÓà Java ±àдµÄ£¬ÊÇÓɰĴóÀûÑǹ«Ë¾ Atlassian ¿ª·¢µÄ²úÆ·£¬Óë TeamCity
ÀàËÆ¡£
5 GitLab CI

GitLab CI µÄÓÅÊÆÊÇÖ§³ÖÔÚ Kubernetes Öд´½¨ Runner£¬Èç¹ûÄãµÄÔ´´úÂë¹ÜÀí¹¤¾ßʹÓõIJ»ÊÇ
GitLab£¬ÄÇô²»½¨Òé CI ¹¤¾ßÑ¡ÐÍ GitLab CI¡£
6 Buddy

Èç¹ûʹÓà Buddy£¬ÄÇô¶ÔÓÚÔ¤ÖÃÐͱ¾µØ£¨on-prem£©°²×°£¬ÐèÒª°´Óû§ÊýÁ¿¸¶·Ñ£¬Õâ¿ÉÄÜ»á·Ç³£°º¹ó£¬¿¼Âǵ½ÓÐÐí¶àÃâ·ÑµÄ¿ªÔ´Ñ¡Ï²»½¨ÒéÑ¡Ôñ
Buddy¡£
7 TravisCI

Travis CI ÊÇʹÓà Ruby ±àдµÄ£¬ÐÔÄܲ»Èç Java£¬¶øÇÒ±¾µØ / ÔÆ£¨on-premise/cloud£©²¿ÊðÑ¡ÏîÒ²ºÜÓÐÏÞ¡£
8 Codeship

Codeship µÄ¡°Ó²ÉË¡±ÔÚÓÚ²»ÊÇ¿ªÔ´²úÆ·£¬¶øÇÒ²»Äܲ¿Êðµ½ÔÆ»ò±¾µØ¡£
9 GoCD

GoCD£¬¿´µ½Õâ¸öÃû×ÖÄã¿ÉÄÜ»á¾õµÃËüÊÇʹÓà Go ÓïÑÔ±àдµÄ£¬µ«Êµ¼ÊÉÏËüÊÇÓà Java ºÍ Ruby
±àдµÄ¡£Í¬Ê±£¬ËüÒ²ÊÇÒ»¿îÃâ·Ñ¿ªÔ´Èí¼þ£¬Ö§³Ö Kubernetes ²¿Êð¡£
ΨһµÄȱµãÊDz»ÊʺÏÔÚ Kubernetes Öв¿Êð Java Ó¦ÓóÌÐò¡£
10 Wercker

Wercker ÒѾ±» Oracle ÊÕ¹ºÁË£¬Ê¹Óà Go ÓïÑÔ±àдµÄ¡£µ«ÊÇÓëÆäËü Go ÓïÑÔ±àдµÄ¿ªÔ´ÏîÄ¿Ïà±È£¬Wercker
µÄ stars ÊýºÜÉÙ£¬ÎÒ²ÂËüµÄÓû§»ùÊýÓ¦¸ÃºÜÉÙ¡£
11 Drone

Drone ÊÇÒ»¿î¿ªÔ´²úÆ·£¬GitHub É쵀 stars Êý³¬¹ýÁË 2 Íò£¬¾µÏñ½ÏС£¬Ê¹Óà Go
ÓïÑÔ±àд£¬Ö§³ÖÔÆ¡¢±¾µØºÍ Kubernetes ²¿Êð£¬ÓÈÆäÊʺÏÔËÐÐÔÚ Kubernetes ÉÏ£¬²¢ÄÜÓë
Kubernetes ½øÐкܺõɣ¬ÀýÈçÔÚ CI ×÷ÒµÖÐʹÓÃµÄ secrets ¿ÉÒÔ×÷Ϊ secret
´æ´¢ÔÚ K8s ÖС£
Drone ûÓÐÃ÷ÏÔȱµã£¬Èç¹ûӲҪ˵һ¸öµÄ»°£¬ÎÒ¾õµÃËüµÄʾÀý / ¹Ù·½Îĵµ»¹²»ÊǺÜÍêÉÆ¡£
12 Semaphore

Ö±µ½½ñÌ죬Semaphore ÈÔȻûÓпªÔ´£¬Ò²²»Ö§³Ö±¾µØ£¨on-prem£©²¿Êð¡£
13 Nevercode

Nevercode Ò²²»ÊÇ¿ªÔ´²úÆ·£¬Í¬Ê±²»Ö§³Ö±¾µØ²¿Êð¡£
14 Spinnaker

Spinnaker ÊÇÓÉ Netflix ´´½¨µÄ¿ªÔ´²úÆ·£¬Ö§³Ö¶àÔÆ¡£ÔÚ¹¦ÄÜ·½Ãæ»ù±¾Ã»ÓÐȱµã£¬Î¨Ò»Òź¶µÄÊÇÔÚ
K8s ÉϽøÐб¾µØÊÔÔËÐв¿Êð£¬ËüÐèÒªÀÈ¡ºÜ¶à¾µÏñ£¬°²×°ÆðÀ´·Ç³£»ºÂý£¬²¢ÇÒËüÊÇÓà Java ±àдµÄ¡£
15 Buildbot

Buildbot ÊÇÓà Python ±àдµÄ£¬Ò×ÓÚÔĶÁ£¬ÐÔÄܲ»Èç±È Java/Golang£¬stars
±ÈÆäËûÑ¡ÏîÉÙ£¬Ö÷Ò³µÄ UI Ò²²»ÊǺܺã¬ÎÒ¸öÈËÊDz»»áÐÅÈÎÄÇЩ¶Ô×Ô¼ºµÄÁ³Ãæ¶¼²»¹Ø×¢µÄÈ˵ġ£
https://buildbot.net/
16 Bitrise

Bitrise ËÆºõÊÇרÃÅÎªÒÆ¶¯Ó¦ÓóÌÐòÉè¼ÆµÄ£¬¿ÉÄܲ»ÊÊÓÃÓÚÒ»°ãÓÃ;£¬¶øÇÒËüÒ²²»ÊÇ¿ªÔ´µÄ¡£
17 CodePipeline/CodeBuild

ÕâÁ½¿î²úÆ·¶¼ÊÇÓÉ AWS ¿ª·¢µÄ£¬³öÓÚ¹©Ó¦ÉÌËø¶¨µÄ¿¼ÂÇ£¬ÎһᵣÐÄÕâ¸öÏîÄ¿ÎÞ·¨Ç¨ÒƵ½ÆäËüÔÆ¹©Ó¦ÉÌ£¬Òò´Ë½¨Òé½÷É÷ʹÓá£
½áÂÛ
½ØÖÁ 2020 Ä꣬Êг¡É쵀 CI ¹¤¾ß¿Ï¶¨Óг¬¹ý 17 ÖÖ£¬µ±È»±¾ÎÄ¿ÉÄÜÒ²»áÒÅ©һЩ±È½Ï³öÃûµÄ CI
¹¤¾ß£¬ÀýÈç Google CloudBuild¡£µ«Êǹ¤¾ßÑ¡ÐÍûÓзÅÖ®Ëĺ£¶ø½Ô×¼µÄ¹æÔò£¬Ã¿¸öÈ˵ÄÐÂÐèÇóÒ²²»Í¬£¬´ó¼Ò¿ÉÒÔ¸ù¾ÝÎÒÃÇÌáµ½µÄ¿¼ÂÇÊÂÏîÖðÌõ¿¼ÂÇ¡£
µ±È»£¬ÔÚ×îºóÎÒ»¹ÊÇÏë×ܽáһϹØÓÚ CI ¹¤¾ßÑ¡Ð͵ÄÄÚÈÝ£º
¶ÔºÜ¶àÈËÀ´Ëµ£¬CircleCI »ò TravisCI ÒѾ×ã¹»ºÃÁË£¬Ò²Ã»ÓкܴóµÄȱµã£»
¶ÔÓÚÄÇЩ׷ÇóÃô½ÝºÍ¿ìËÙµÄÈËÀ´Ëµ£¬drone.io ¿ÉÄܸüÊʺϣ¬ÒòΪËüÒ×ÓÚ°²×°¡¢ÅäÖá¢Ê¹Óã¬ËüÄÜÁé»îµØ²¿ÊðÔÚ±¾µØ²¢ÄÜÔÚÔÆÉÏʹÓã¬Êʺϸü¹ã·ºµÄÊÜÖÚ¡£Í¬Ê±ËüÊÇ¿ªÔ´µÄ£¬ÔÚ
GitHub ÉϺÜÊÜ»¶Ó£¬Ò²ÓкܺõÄÉçÇøÖ§³Ö£¬²¢ÇÒËü¾ßÓÐÔÆÔÉú /12 ÒªËØÓ¦Óã¨cloud-native/12-factor-app£©µÄÊôÐÔ£º¾µÏñС£¬ÉèÖÃѸËÙ£¬ÓÃ
Golang ±àдµÄ£¬Óë Ruby/Python µÈ±àдµÄijЩѡÏîÏà±È£¬¾ßÓиü¸ßµÄÐÔÄÜ¡£
²»¹ý£¬¶ÔÓÚ´ó¶àÊýÈËÀ´Ëµ£¬Jenkins ÈÔÈ»ÊÇÒ»¸ö²»´íµÄÑ¡Ôñ£¬ÒòΪËü·Ç³£Áé»î£¬¿ÉÒÔÃÖ²¹ÁËÅäÖ÷½ÃæµÄÏà¶Ô¸´ÔÓÐÔ¡£¾¡¹Ü
Jenkins ʹÓõÄÊÇ Java£¬²»ÊʺÏÔÚ K8s ÉÏÔËÐУ¬µ«ÓëÆäËûÑ¡ÏîÏà±È£¬Ëü²¢²»²î¡£
Èç¹ûÄúʹÓà Jenkins ÓÐÍ´µãµÄ»°£¬¿ÉÒÔ³¢ÊÔ Travis/Circle/Drone¡£ |