DevOps

ถาม & ตอบสำหรับวิศวกรซอฟต์แวร์ที่ทำงานเกี่ยวกับการทดสอบอัตโนมัติการส่งมอบอย่างต่อเนื่องการรวมบริการและการตรวจสอบและการสร้างโครงสร้างพื้นฐาน SDLC

4
วิธีการบรรลุการกระทำขนานแบบไดนามิกอย่างเหมาะสมกับท่อส่งประกาศ
ปัจจุบันฉันจะต้องมีการใช้งานที่ต้องค้นหาไฟล์ทั้งหมดในไดเรกทอรีและเริ่มงานแบบขนานสำหรับทุกไฟล์ที่พบ เป็นไปได้ไหมที่จะใช้สิ่งนี้ได้โดยใช้ท่อส่ง pipeline { agent any stages { stage("test") { steps { dir ("file_path") { // find all files with complete path parallel ( // execute parallel tasks for each file found. // this must be dynamic } } } } } } }

5
วิธีชักชวนให้ผู้พัฒนาเริ่มใช้สลับการตั้งค่าสถานะได้อย่างไร
สมมติว่าการสลับค่าสถานะคุณลักษณะเป็นความคิดที่ดีและควรนำไปใช้กับโค้ดที่นักพัฒนาเขียน ตัวอย่าง Etsy สาบานต่อพวกเขาเป็นส่วนสำคัญของวัฒนธรรมของพวกเขา เป็นวิธีที่ดีในการชักชวน (และบังคับใช้) นักพัฒนาเพื่อเริ่มใช้สลับการตั้งค่าคุณสมบัติคืออะไร? ข้อมูลเพิ่มเติมเกี่ยวกับคุณลักษณะสลับธงมีการอธิบายในQ: วิธีการใช้คุณลักษณะสลับธง , Q: อะไรคือคุณลักษณะสลับธงและมากอย่างกว้างขวางในพีทฮอดจ์สันบทความเกี่ยวกับเรื่องในบล็อกของฟาวเลอร์มาร์ตินของ

4
วิธีกำจัดการพัฒนาสาขาเพื่อให้การไหลของ Git ง่ายขึ้น
ในโครงการพัฒนาอย่างต่อเนื่องเว็บ (ไม่ใช่สินค้า) ขณะนี้เรามียุทธศาสตร์ต่อไปนี้แยกตามประมาณในการไหลเวียนของคอมไพล์ : พัฒนาสาขา: รุ่นที่ใช้งานล่าสุด สาขาหลัก: รุ่นที่จะวางจำหน่าย / รุ่นที่วางจำหน่าย ฟีเจอร์ต่าง ๆ : ฟีเจอร์ในการพัฒนา กิ่งก้านของโปรแกรมแก้ไขด่วน: การแก้ไขข้อบกพร่องเร่งด่วนในรุ่นที่วางจำหน่าย ปริญญาโทจะอ่านเพียงการปรับปรุงผ่านการร้องขอดึงจากการพัฒนาหรือสาขาแก้ไขด่วน การอัปเดตแต่ละครั้งจะส่งผลให้ตัวเลือกการวางจำหน่ายถูกสร้างและปรับใช้กับระบบการจัดเตรียม ผู้สมัครที่วางจำหน่ายจะถูกนำไปใช้กับการผลิตหลังจากการอนุมัติด้วยตนเอง สาขาคุณลักษณะถูกสร้างขึ้นตามการพัฒนาหรือจากการคอมมิทล่าสุดที่รวมเข้ากับมาสเตอร์ คำขอดึงจากสาขาคุณลักษณะเพื่อการพัฒนาถูกสร้างขึ้นปรับใช้กับระบบทดสอบฟรีที่ดำเนินการทดสอบการรวมและการทดสอบการยอมรับ (อัตโนมัติ & คู่มือ) เมื่อทดสอบและตรวจสอบเรียบร้อยแล้ว PR จะถูกรวมเข้าด้วยกันเพื่อที่จะกลายเป็นส่วนหนึ่งของการเปิดตัวครั้งต่อไป (เช่นผสานจากการพัฒนาไปสู่การควบคุมหลัก) เป้าหมายของฉัน ฉันต้องการทำให้สิ่งนี้ง่ายขึ้นและกำจัดสาขาที่กำลังพัฒนา สาขาที่พัฒนาแล้วส่วนใหญ่มีเหตุผลทางประวัติศาสตร์และเนื่องจากมันเป็นรุ่นที่ผ่านการทดสอบมาอย่างยาวนานฉันคิดว่ามันไม่จำเป็นที่จะต้องแยกมันออกจากมาสเตอร์ การนำออกจะทำให้ขั้นตอนการวางจำหน่ายง่ายขึ้นเพราะจะไม่มีการผสานเพิ่มเติมอีกต่อไป ฉันมีข้อ จำกัด ดังต่อไปนี้: กำหนดวางจำหน่ายและไม่ควรทำแบบอัตโนมัติทั้งหมด ในขณะที่สาขาฟีเจอร์มักมีอายุสั้น แต่บางช่วงก็ยังคงไม่ได้รับการบำรุงเป็นเวลาหลายสัปดาห์ (เช่นการออกแบบใหม่) แต่ต้องมีการทดสอบเช่นกัน บางครั้งควรปล่อยคุณลักษณะเดียวนอกรุ่นปกติอย่างมีประสิทธิภาพเปลี่ยนเป็นโปรแกรมแก้ไขด่วน ด้วยกลยุทธ์ปัจจุบันฉันสามารถรีบูทฟีเจอร์และรวมเข้ากับมาสเตอร์โดยตรง มันก็เกิดขึ้นที่เราจำเป็นต้องระงับคุณสมบัติหลังจากการทดสอบการยอมรับกับระบบภายนอกเกี่ยวกับการแสดงละครล้มเหลว ที่ฉันไม่แน่ใจเกี่ยวกับการเปลี่ยนแปลง: ขณะนี้ฉันกำลังสร้างคำขอดึงสำหรับการทดสอบและผสานความมุ่งมั่นสำหรับการเปิดตัว ฉันสามารถรวมสิ่งนี้ได้ไหม วิธีจัดการกับโปรแกรมแก้ไขด่วนเมื่อต้นแบบอยู่ข้างหน้าของรุ่นล่าสุด ฉันควรสร้างและปรับใช้การวางจำหน่ายโดยตรงจากสาขาโปรแกรมแก้ไขด่วนหรือไม่ มีวิธีที่เหมาะสมในการจัดการกับคุณสมบัติที่ควรแยกออกจากการวางจำหน่ายหลังจากที่รวมกันแล้วหรือไม่ สาขาที่พัฒนาแยกต่างหากเป็นข้อได้เปรียบสำหรับกรณีเหล่านี้หรือไม่? …

1
Git clean / smudge filter สำหรับความลับของห้องนิรภัย
ฉันกำลังพยายามตั้งค่าตัวกรอง clean / smudgeใน git ให้มีการเข้ารหัสและถอดรหัสไฟล์ที่มีความลับโดยอัตโนมัติผ่านคำสั่งansible-vault ความผิดปกติของคำสั่ง ansible-vault คือมันไม่ใช่ idempotent (มันสร้างไบนารีที่แตกต่างกันในแต่ละครั้งที่เรียกใช้กับข้อมูลเดียวกัน) ฉันเริ่มต้นด้วยการดำเนินงานข้อเสนอแนะในหน้าบล็อกนี้ น่าเสียดายที่มันไม่ทำงานอย่างถูกต้องเนื่องจากเมื่อใดก็ตามที่มีการเรียกรอยเปื้อน (ไม่ว่าจะเป็นเช็คเอาต์ git หรือเพียงแค่สถานะ git) ไฟล์ลับดูเหมือนว่าแก้ไขสำหรับ git แม้ว่ามันจะไม่ ดังนั้นฉันสงสัยว่า git จะเปรียบเทียบไบนารี่ที่เขามีในดัชนีกับไฟล์ปัจจุบันที่กรองแล้วหรือไม่และฉันพยายามสร้างสคริปต์เหล่านั้นดังนี้: #!/bin/sh -x # clean filter, it is invoked with %f if [ ! -r "$HOME/.vault_password" ]; then exit 1 fi tmp=`mktemp` cat > $tmp # get the …

2
SecOps คืออะไร
ครั้งแรกเมื่อฉันได้ยินคำว่า SecOps ฉันคิดว่ามันเป็นวิธีการจัดการที่มีจุดมุ่งหมายเพื่อเชื่อมต่อทีมรักษาความปลอดภัยและการดำเนินงานในลักษณะเดียวกับที่ DevOps รวบรวมนักพัฒนาและทีมปฏิบัติการไว้ด้วยกัน แต่ความปลอดภัยไม่ใช่แค่ส่วนหนึ่งของปริศนา DevOps ใช่ไหม DevOps มีกระบวนการต่างๆเช่นการตรวจสอบส่วนประกอบการจัดการเวอร์ชันการเปรียบเทียบการตรวจสอบโค้ดการตรวจสอบอย่างต่อเนื่อง .. SecOps อื่น ๆ สามารถเพิ่มอะไรให้กับทีม DevOps หรืออาจเป็นอีกคำหนึ่งที่ฉวัดเฉวียน

4
การรวมอย่างต่อเนื่องเกี่ยวข้องกับการจัดส่ง / การปรับใช้อย่างต่อเนื่องอย่างไร
นี่คือคำพูดจากเนื้อหาปัจจุบันของการรวมกลุ่มอย่างต่อเนื่อง : ... กระบวนการรวมสำเนารหัสการทำงานของนักพัฒนาซอฟต์แวร์ไปยังรหัสฐานที่ใช้ร่วมกันบ่อยครั้งเพื่อป้องกันหรือลดปัญหาการรวม ตกลงฉันเข้าใจแล้ว แต่จากนั้นยังมีการจัดส่งอย่างต่อเนื่องและ การปรับใช้อย่างต่อเนื่องและนั่นคือสิ่งที่ฉันทำหายไปอย่างต่อเนื่อง : วิธีการที่ไม่บูรณาการอย่างต่อเนื่องที่เกี่ยวข้องกับการส่งมอบอย่างต่อเนื่องและ / หรือการใช้งานอย่างต่อเนื่องสมมติว่าบางที่ตามเส้น (s) ผ่านทางintegrationคุณจะจบลงในสภาพแวดล้อมเป้าหมายที่ทุกอย่างจะเป็นdeliveringdeployed อะไรคือความแตกต่างระหว่างการส่งมอบอย่างต่อเนื่องและการใช้งานอย่างต่อเนื่อง ? ย้อนกลับไปในวันก่อนที่ DevOps จะถูกเรียกว่า DevOps เราใช้คำศัพท์ซึ่งอาจช่วยให้เข้าใจข้อกำหนด DevOps ใหม่เหล่านี้เช่น: เลื่อนระดับไปยัง (หรือลดระดับจาก) เป้าหมายก่อนการผลิตบางรายการรวมกับกระบวนการฟื้นฟูบางประเภท (คอมไพล์, ผูก, ฯลฯ ) เพื่อรวมส่วนประกอบทั้งหมดที่เกี่ยวข้องเข้าด้วยกันในสิ่งที่คล้ายปฏิบัติการ นั่นคือสิ่งที่ควรจะคล้าย / ใกล้เคียงกับการรวมกลุ่มอย่างต่อเนื่องหรือไม่? แจกจ่ายไปยังสภาพแวดล้อมเป้าหมายโดยใช้บางอย่างเช่น FTP (หากสำเนามาตรฐานไม่สามารถเชื่อมช่องว่าง) แต่ยังไม่เปิดใช้งานในเป้าหมาย นั่นคือสิ่งที่ควรจะคล้าย / ใกล้เคียงกับการจัดส่งอย่างต่อเนื่องหรือไม่? ติดตั้ง (หรือเปิดใช้งาน ) ในบางสภาพแวดล้อมเป้าหมายรวมกับสิ่งต่าง ๆ เช่นการผูกการหยุด / เริ่มการทำงานเป็นต้นนั่นคือสิ่งที่ควรจะคล้าย / ใกล้เคียงกับการปรับใช้อย่างต่อเนื่องหรือไม่?

6
ฉันจะจ้าง DevOps ที่ดีเหมาะสมกับ บริษัท ของฉันได้อย่างไร
ผู้พัฒนาที่ดีควรสอดคล้องกับกฎที่ 11 ของการทดสอบ Joel : ผู้สมัครใหม่เขียนรหัสในระหว่างการสัมภาษณ์หรือไม่? อย่างไรก็ตามฉันรู้อะไรเล็กน้อยเกี่ยวกับคอนเทนเนอร์ของ Docker วิธีกำหนดค่า Jenkins หรือ AWS เป็นต้นจะมีวิธีใดที่ดีในการทดสอบว่าบุคคลที่ใช้สามารถจัดการงานดังกล่าวได้หรือไม่ คำถามย่อย: ฉันเชื่อว่าพนักงาน devops ที่ดีสามารถกำหนดค่าห่วงโซ่การสร้างครั้งเดียวและควรทำงานตั้งแต่นั้นมา ฉันสามารถคาดหวังให้เขาหรือเธอเป็นนักพัฒนาใน บริษัท (DEVops) ได้หรือไม่? เนื่องจาก DevOps เป็นงานที่ค่อนข้าง "ใหม่" อาจจะดีกว่าหรือที่ บริษัท ขนาดเล็กจะแบ่งปันพนักงาน devops หรือจ้างเขาหรือเธอเป็นอิสระเมื่อใดก็ตามที่คุณต้องการเขาหรือเธอ? ความสับสนของฉันเกี่ยวกับคำที่มาจากข้อเสนองานเช่นนี้แม้ที่นี่ใน stackexchange (= ลิงค์ที่หน้าจอด้านบนถูกนำมาจาก) ฉันพบบทความที่เป็นประโยชน์ แต่เป็นไปได้ที่คุณอาจต้องการอ่านหากคุณสะดุดกับคำถามนี้: https://hackernoon.com/devoops-some-common-common-anti-patterns-1850ac2f5074

5
วิธีหลีกเลี่ยงความไม่แน่นอนที่เกิดจากการรวมอย่างต่อเนื่องในสภาพแวดล้อมการทดสอบ
สมมติว่าคุณกำลังใช้กระบวนการรวมอย่างต่อเนื่องซึ่งมักจะปรับปรุงสภาพแวดล้อมเป้าหมายบางอย่างเพื่อให้ทุกครั้งที่มีการเปลี่ยนแปลง "คุณ" สามารถทดสอบการเปลี่ยนแปลงได้ทันที นั่นเป็นส่วนหนึ่งของเป้าหมายของ CI ใช่ไหม แต่สมมติว่าคุณมีบุคคลอื่นที่เกี่ยวข้องในรอบการทดสอบของคุณเช่นผู้จัดการหรือลูกค้า เหมาะสมที่จะให้คนอื่นมีส่วนร่วมในการลองตรวจสอบ (แตกหัก) การเปลี่ยนแปลงที่กำลังจะเกิดขึ้นไม่ใช่หรือ? แต่ถ้าคุณอย่างต่อเนื่องให้การส่งมอบการเปลี่ยนแปลงในสภาพแวดล้อมที่คนอื่น ๆ เหล่านั้นอย่างจริงจังพยายามที่จะทดสอบพวกเขาแล้วหลายประเด็นที่อาจเกิดขึ้นเช่น: they อาจเสียเวลาในการรายงานปัญหาซึ่งเมื่อถึงเวลาบันทึกรายงาน (เชิงลึก) พวกเขาไม่สามารถทำซ้ำปัญหาได้อีก (เช่นเนื่องจากคุณบังเอิญพบปัญหาเดียวกันและแก้ไขในสภาพแวดล้อมของพวกเขาแล้ว) you อาจไม่สามารถทำซ้ำปัญหาที่พวกเขารายงานเนื่องจากสภาพแวดล้อมที่พวกเขาพบปัญหาบางอย่างไม่เหมือนกันอีกต่อไป (คุณ (!!!) อาจทำให้สภาพแวดล้อมของพวกเขาซ้อนทับ) ดังนั้นคุณจะทำอย่างไร (จะกำหนดค่าสิ่งต่าง ๆ ได้อย่างไร) เพื่อหลีกเลี่ยงสถานการณ์ (ที่น่าผิดหวัง)?

2
การแม็ปสตรีมค่าคืออะไร
ฉันได้ยินมามากมายเกี่ยวกับการทำแผนที่มูลค่าและวิธีการใช้วิเคราะห์กระแสมูลค่าของกระบวนการผลิตรวมถึงกระบวนการส่งมอบซอฟต์แวร์ ฉันไม่เคยเห็นมันประสบความสำเร็จในบริบทของการพัฒนาซอฟต์แวร์และทีมปฏิบัติการ Value Stream Mapping คืออะไรและนำไปใช้กับการจัดส่งซอฟต์แวร์ได้อย่างไร

2
การจำลองแบบข้ามภูมิภาคสามารถป้องกันคนโง่ได้ 100% สำหรับพื้นที่ขาดหาย S3
Amazon S3 มีตัวเลือกในการจำลองข้อมูลข้ามภูมิภาคซึ่งน่าจะทนต่อความผิดพลาดจากการขาดพื้นที่ / โซน นั่นหมายความว่าคนที่คุยโวเกี่ยวกับไฟดับไม่ได้ใช้ประโยชน์จากแง่มุมนี้หรือไม่? หรือว่าการจำลองแบบข้ามภูมิภาคนั้นไม่ได้โง่อย่างสมบูรณ์และจะไม่ได้ช่วย?
19 amazon-s3 

7
วิธีสร้างอิมเมจที่เล็กที่สุดในการทำงานทุกครั้ง?
มุ่ง:เพื่อสร้างอิมเมจที่เล็กที่สุดในการทำงานทุกครั้ง ปัจจุบัน REPOSITORY TAG IMAGE ID CREATED SIZE a-docker-image latest x 42 minutes ago 1.92 GB พยายาม การเพิ่มขั้นตอนการล้างข้อมูลในตอนท้ายของ Dockerfile: #clean RUN apt-get purge -y wget RUN rm -r a-build-dir RUN apt-get purge -y a-package ลดขนาดภาพลงเล็กน้อย: REPOSITORY TAG IMAGE ID CREATED SIZE a-docker-image latest y 2 minutes ago 1.86 GB อภิปรายผล …
19 docker 

4
ข้อดีของการเทียบท่า nginx และ php ในตู้คอนเทนเนอร์ที่แตกต่างกันคืออะไร?
ฉันเพิ่งเริ่มทำงานกับ Docker และ Kubernetes และฉันได้ดูสแต็คจำนวนมากซึ่งบางคนสร้าง nginx + php ในภาพเดียวและบางคนสร้างภาพด้วย nginx และอีกคนหนึ่งที่มี php (ติดตั้งเส้นทางเดียวกันและล้อมรอบ คอนเทนเนอร์ทั้งสองในการปรับใช้เดียวกันใน Kubernetes) อะไรคือข้อดีของการสร้างอิมเมจเทียบท่าสองชิ้นแทนที่จะติดตั้งทั้ง nginx + php ในอันเดียวกัน

8
จะติดตั้งปลั๊กอิน Certbot ได้อย่างไร?
ฉันติดตั้ง Certbot โดยทำตามบทช่วยสอนนี้ : sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install python-certbot-nginx และตอนนี้ฉันต้องการตั้งค่าใบรับรองของฉัน แต่ฉันต้องการdns-digitaloceanปลั๊กอิน: # certbot certonly --dns-digitalocean Saving debug log to /var/log/letsencrypt/letsencrypt.log Could not choose appropriate plugin: The requested dns-digitalocean plugin does not appear to be installed The requested dns-digitalocean plugin does not appear to be installed …
19 ssl  certbot 

7
วิธีการเริ่มต้นใหม่อย่างปลอดภัยเจนกินส์?
ฉันจำเป็นต้องทำการเปลี่ยนแปลงการกำหนดค่าบางอย่างในอินสแตนซ์ของเจนกินส์ของเราซึ่งจะเกี่ยวข้องกับการรีสตาร์ทเจนกินส์สองสามครั้ง อย่างไรก็ตามนักพัฒนาของเรายอมรับบ่อยพอที่ฉันไม่ได้เห็นเจนกินส์ที่ไม่มีงานทำในสามวัน มีวิธีดั้งเดิม (ผ่าน GUI หรือผ่านบรรทัดคำสั่ง) เพื่อเริ่มต้นใหม่อย่างปลอดภัย Jenkins หรือไม่ IE: รอให้งานปัจจุบันเสร็จก่อนที่จะลงและติดตามงานที่อยู่ในคิวเพื่อเริ่มต้นเมื่อ Jenkins กลับมาทำงานอีกครั้ง ฉันรู้ว่ามีปลั๊กอินแต่เพื่อที่จะติดตั้งฉันต้องรีสตาร์ทเจนกินส์ ...
19 jenkins 

3
ประเภทนักเทียบท่าที่ไม่ถูกต้องควรเป็นสตริง
ฉันมีตัวแปรสภาพแวดล้อมต่อไปนี้ได้รับการกำหนดค่าในไฟล์ docker-compose.yml: version: '3' services: server: ports: - 13045:3000 environment: - NODE_CONFIG: '{"DATABASE_URL":"http://db:5984"}' เมื่อพยายามเรียกใช้docker-compose upฉันได้รับข้อผิดพลาดนี้: services.server.environment contains {"NODE_CONFIG": "{\"DATABASE_URL\":\"http://db:5984\"}"}, which is an invalid type, it should be a string ฉันต้องการตัวแปรสภาพแวดล้อมที่จะตั้งเป็นสตริง JSON (ดูhttps://github.com/lorenwest/node-config/wiki/Environment-Variables#node_config ) ฉันกำลังทำอะไรผิดที่นี่? ฉันจะทำให้มันทำงานได้ไหม?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.