DevOps

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

3
Simple CI / CD container ใน AWS
ฉันกำลังใช้ AWS Code Pipeline, Code Build เพื่อสร้างคอนเทนเนอร์ Docker ใหม่และผลักดันมันไปยัง ECR แอปพลิเคชันของฉันเป็นแบบเรียบง่ายแบบ Single-Forward สิ่งที่จะลดความเสียดทานให้น้อยลงเพื่อดึง Container ที่ใช้อยู่ในปัจจุบันออกมาและเรียกใช้ Container ใหม่จากรีจีสทรี ECS (เอาท์พุตของ Code Build ผ่าน Code Pipeline) ฉันลอง CloudFormation ด้วยข้อมูลผู้ใช้ EC2, สคริปต์ที่กำหนดเองในด้านหนึ่งและ CloudFormation กับ ECS พร้อมคำจำกัดความของงานในอีกด้านหนึ่ง (ยังไม่สำเร็จ) ฉันรู้สึกว่าจะต้องมีวิธีที่ชัดเจนและเรียบง่ายกว่า

4
วิธีการทดสอบประสิทธิภาพของฟังก์ชั่น AWS Lambda?
ค่าใช้จ่าย AWS แลมบ์ดาขึ้นอยู่กับเวลาที่ฟังก์ชั่นทำงานและขอบเขตของหน่วยความจำ การมีฟังก์ชั่นที่เสร็จเร็วขึ้นและใช้หน่วยความจำน้อยลงสามารถประหยัดเงินได้มาก โดยเฉพาะอย่างยิ่งเมื่อมีการใช้งานฟังก์ชันดังกล่าวบ่อยครั้ง ฟังก์ชั่น Node.js Lambda สามารถปรับความเร็วและหน่วยความจำขนาดเล็กเพื่อประหยัดค่าใช้จ่ายได้อย่างไร? มีแง่มุมอื่น ๆ สำหรับแลมบ์ดาที่เป็นประโยชน์ในการปรับปรุงหรือไม่

3
คุณจะทดสอบการเปลี่ยนแปลงกับปลั๊กอินเจนกินส์ก่อนนำไปใช้งานได้อย่างไร
หากคุณถูกกัดโดยการอัพเกรดปลั๊กอินที่ทำลายฟังก์ชั่นบางอย่างคุณต้องให้ความคิดเกี่ยวกับปัญหานี้: นโยบายการอัพเกรดปลั๊กอินเจนกินส์ควรทำอย่างไร? คุณจะทดสอบการเปลี่ยนแปลงก่อนนำไปใช้งานได้อย่างไร มีใครไปเท่าที่มีอินสแตนซ์ทดสอบที่ใช้งานหลอกตาเพื่อทดสอบเวอร์ชันใหม่หรือคุณเพียงแค่อธิษฐานว่าการอัพเกรดเวอร์ชันจะไม่ทำลายอะไรเลยหรือ

1
วิธีที่เป็นระบบในการทดสอบ RESTful API ด้วย curl หรือไม่
ฉันสังเกตเห็นในระหว่างการทดสอบการรวมระบบว่าฉันใช้งานกรณีการใช้ซ้ำ ๆ กับ API ที่พักผ่อนหย่อนใจ (หรืออินเทอร์เฟซ HTTP ทั่วไป) ฉันตรวจสอบที่นี่และมี bash + cURL มันเริ่มมองค่อนข้างยุ่งและยากที่จะรักษา ทำไมต้องเป็นระเบียบ? กรณีการใช้งานทั่วไปคือ: ตรวจสอบว่า URL ส่งคืนรหัสตอบกลับ http เช่น 200 ตรวจสอบว่าประเภทเนื้อหาตรงกับ MIME บางอย่างที่คุณต้องการในกรณีนั้น ตรวจสอบว่าเนื้อหาที่ส่งคืนตรงกับรูปแบบบางอย่างหรือผ่านขั้นตอนการตรวจสอบความถูกต้องแบบนามธรรม สิ่งที่ฉันได้พบและพิจารณาตัวเลือกใช้การได้โดยไม่ต้อง reinventing ล้อคือ: ไปกับ PyCurl ด้วยความหวังว่ามันจะใช้ตัวเลือกของ cURL ทั้งหมด พร็อกซี่ แต่ยังสวิตช์อื่น ๆ ที่ฉันอาจต้อง ใช้ Python สร้างขึ้นในหน่วย testng ตัวอย่างเช่นจากนั้นฉันสามารถทดสอบหนึ่งหน่วยต่อบริการที่ฉันต้องการตรวจสอบ: import unittest, pycurl class TestService (unittest.TestCase): def test_1(self): …

4
ทำไมการพัฒนาจึงต่อต้านการดำเนินงาน
ฉันยังเป็นนักเรียนอยู่ แต่ฉันไม่มีความรู้เกี่ยวกับการปฏิบัติงานและภาษาอังกฤษของฉันก็ยังไม่ดี คำถามของฉันคือทำไมการพัฒนาจึงต่อต้านการดำเนินงาน ? การพัฒนาต่อต้านการปฏิบัติงานเมื่อใด?
14 operations 

2
ฉันจะติดตามการใช้ทรัพยากรคลาวด์ได้อย่างไร
ฉันกำลังพยายามทำให้การปรับใช้แอปพลิเคชัน AWS ของฉันเป็นแบบอัตโนมัติด้วยเจนกินส์ ตอนนี้ถ้าเราต้องการอัปเดตแอปพลิเคชันในสภาพแวดล้อมใด ๆ พูด UAT เราสร้างภาพนักเทียบท่าของเราค้นหางาน ECS ปัจจุบันและอัปเดตด้วยภาพใหม่ค้นหากลุ่ม ECS ที่กำลังทำงานอยู่และอัปเดตงาน วิธีปฏิบัติที่ดีที่สุดในการติดตาม Id ทรัพยากรคลาวด์ (รหัสคลัสเตอร์ ECS, รหัสงานของ ECS, รหัสงาน EC2, ฯลฯ ) ในสภาพแวดล้อมการรวมอย่างต่อเนื่องของคุณคืออะไร

5
การเช็คอินและเช็คเอาต์แตกต่างกันอย่างไร
เมื่อสอนคลาส SCM ให้กับนักเรียนที่ยังใหม่ต่อการจัดการการกำหนดค่าซอฟต์แวร์มันเกิดขึ้นว่าคำถามเกิดขึ้นเช่น " What's the difference between checkin and checkout?" และความแตกต่างของมันก็คือนักเรียนเหล่านี้สับสนเกี่ยวกับแนวคิด SCM เหล่านี้ (พวกเขาเข้าใจว่าพวกเขาเป็นวิธีอื่น ๆ ) ดังนั้นอุปมาชนิดใดที่คุณสามารถใช้เพื่ออธิบายแนวคิด SCM ที่สำคัญนี้แก่ผู้ชมดังกล่าว
14 terminology  scm 

4
วิธีเพิ่มขนาดของดิสก์บนอินสแตนซ์ที่ทำงานอยู่บน Amazon EC2
ฉันได้รับอินสแตนซ์ที่ทำงานอยู่ของการตั้งค่าเซิร์ฟเวอร์ EC 2 กับ Ubunto วิธีที่ดีที่สุดในการเพิ่มขนาดดิสก์โดยไม่มีการหยุดทำงานและความเสี่ยงน้อยที่สุดคืออะไร การอ่านคำแนะนำวิธีหนึ่งคือการสร้างดิสก์ใหม่ย้ายข้อมูลปิดดิสก์การสลับอินสแตนซ์แล้วเปิดใหม่ วิธีนี้ฟังดูเสี่ยงเล็กน้อยจะต้องหยุดทำงานบ้าง ฉันสงสัยว่ามีวิธีการที่ดีกว่านี้ไหม?

2
เชื่อมต่อคอนเทนเนอร์ Docker กับทั้งโฮสต์และเครือข่ายบริดจ์ภายใน
ฉันกำลังพยายามที่จะใช้ภาชนะหางเป็นเราเตอร์ระหว่างเอกชน (ก--internal) เครือข่ายนักเทียบท่าและกำหนดไว้ล่วงหน้าhostเครือข่าย ซึ่งหมายความว่าคอนเทนเนอร์จำเป็นต้องมีอินเทอร์เฟซเครือข่ายสองอินเทอร์เฟซ "นอก" หนึ่งที่สามารถเข้าถึงที่อยู่ IP โฮสต์ทั้งหมดและอินเทอร์เฟซ "ภายใน" หนึ่งที่ทำหน้าที่เป็นเกตเวย์สำหรับคอนเทนเนอร์ในเครือข่าย Docker ภายใน คอนเทนเนอร์ของเราเตอร์นั้นจะ NAT เครือข่ายทราฟฟิกจาก / ไปยังคอนเทนเนอร์ ฉันไม่พบวิธีกำหนดค่า Docker ให้เรียกใช้คอนเทนเนอร์ด้วยอินเทอร์เฟซทั้งสองนั้น ที่ใกล้เคียงที่สุดที่ฉันจะได้รับคือมีbridgeอินเทอร์เฟซสองชุดซึ่งไม่ตรงกับที่ฉันต้องการ การพยายามเชื่อมต่อด้วยตนเองทำให้เกิดข้อผิดพลาด: # docker network connect host root_router_1 Error response from daemon: Container cannot be disconnected from host network or connected to host network ทุกคนสามารถแสดงให้ฉันเห็นว่าจะบรรลุสิ่งนี้ได้อย่างไรโดยเฉพาะอย่างยิ่งแม้เมื่อนักเทียบท่าเขียนข้อความ?

2
นักเทียบท่าในการปรับใช้ Kubernetes
ฉันใช้ห้องสมุดบุคคลที่สามที่สร้างคอนเทนเนอร์นักเทียบท่าพี่น้องผ่าน: docker run -d /var/run/docker.sock:/var/run/docker.sock ... ฉันพยายามสร้างการปรับใช้ Kubernetes ออกจากคอนเทนเนอร์ด้านบน แต่ขณะนี้กำลังรับ: ไม่สามารถเชื่อมต่อกับ Docker daemon ได้ที่ unix: ///var/run/docker.sock daemon ของนักวิ่งกำลังทำงานอยู่หรือไม่? นี่เป็นสิ่งที่คาดหวังเพราะฉันไม่ได้ประกาศ/var/run/docker.sockว่าเป็นโวลุ่มในการปรับใช้ yaml ปัญหาคือฉันไม่รู้วิธีการทำสิ่งนี้ เป็นไปได้ไหมที่จะเมานต์/var/run/docker.sockเป็นโวลุ่มในการปรับใช้ yaml? ถ้าไม่วิธีการที่ดีที่สุดในการรัน sibling-container จากภายใน Kubernetes คืออะไร

1
มีเครื่องมือที่ทำให้สามารถตรวจสอบ Jenkinsfiles ออนไลน์ได้หรือไม่?
ในขณะนี้ฉันกำลังแก้ไขไฟล์เจนกินส์แล้วปล่อยให้มันรันจนกว่าเจนกินส์จะรายงานปัญหา วิธีนี้มีค่าใช้จ่ายมาก ฉันชอบที่จะตรวจสอบไวยากรณ์ก่อนที่จะยอมรับ Jenkinsfile มีเครื่องมือที่ช่วยแก้ปัญหานี้หรือไม่? ในgitlabมี URI นั่นคือ/ci/lintทำให้สามารถส่งไฟล์ gitlab ได้โดยคลิกที่ปุ่มตรวจสอบจากนั้น UI จะระบุว่าไวยากรณ์นั้นถูกต้องหรือไม่

6
อะไรคือสัญญาณของทีม DevOps ที่มีข้อมูลไม่เพียงพอ?
อะไรคือสัญญาณและสัญญาณทั่วไปของทีม DevOps ที่มีสัญญาณไม่เพียงพอ? คุณจะแสดงเหตุผล / อธิบายคำขอให้เพิ่มทีมใหม่ได้อย่างไร ฉันชอบที่จะเก็บคำถามทั่วไป แต่นี่คือข้อมูลเพิ่มเติมบางส่วน: ขณะนี้เรามีผู้เชี่ยวชาญ DevOps 2 คนที่ทำงานร่วมกันเป็นทีม แต่ความต้องการและปริมาณและความซับซ้อนของผลิตภัณฑ์เพิ่มขึ้น เรากำลังคิดที่จะขอเพิ่มทีมใหม่ แต่มีปัญหาในการอธิบายและพิสูจน์ว่าทำไมจึงเป็นความคิดที่ดี

3
ใช้ปลั๊กอิน Artifactory ในไปป์ไลน์ของ Jenkins
ฉันใช้ Jenkins Declarative Pipeline เพื่อสร้างกระบวนการสร้างของฉันโดยอัตโนมัติ เราต้องการเผยแพร่สิ่งประดิษฐ์ของเราไปยังที่เก็บ JFrog ระยะไกลเฉพาะเมื่อผ่านเงื่อนไขบางอย่าง (Sonar, Checkmarx) หลังจากการวิจัยเล็กน้อยฉันพบว่าปลั๊กอิน Artifactory มีประโยชน์สำหรับสิ่งนี้ แต่ฉันไม่สามารถหาเอกสารใด ๆ เกี่ยวกับวิธีการรวมในขั้นตอนการประกาศ ด้านล่างนี้เป็นข้อมูลโค้ดจาก Jenkinsfile stages{ stage('Pre-Build'){ steps{ script{ def server = Artifactory.server 'LocalJfrog' def rtGradle = Artifactory.newGradleBuild() rtGradle.resolver server: server, repo: 'gradle-dev-local' rtGradle.deployer server: server, repo: 'gradle-release-local' rtGradle.useWrapper = true } } } } การเผยแพร่แบบมีเงื่อนไขไม่สามารถทำได้ด้วยรหัสด้านบนเนื่องจากฉันไม่สามารถใช้ตัวแปรเซิร์ฟเวอร์ซ้ำได้แม้ว่าฉันจะปิดการใช้งานการเผยแพร่อัตโนมัติ

3
คุณบังคับใช้พฤติกรรมคอมไพล์รวมถึงภายใน (โดยเฉพาะบน Windows) ได้อย่างไร
ฉันกำลังชี้ไปที่การย้ายร้านค้า NET นี้จาก svn ไป git และได้ระบุปัญหาเสริมบางอย่างที่ฉันต้องการมีวิธีแก้ไขก่อนที่เราจะสลับสวิตช์ สิ่งที่ฉันถามโดยเฉพาะในคำถามนี้คือการบังคับใช้การสิ้นสุดบรรทัด โดยค่าเริ่มต้น git สำหรับ Windows จะติดตั้งด้วย 'checkout crlf, commit lf' ซึ่งจะไม่ทำงานกับแหล่งที่มาซึ่งเป็นจำนวนมาก (เท่าที่ฉันทราบ) โดยเฉพาะประกอบด้วยจุดสิ้นสุด crlf ฉันไม่รู้ว่าฉันเชื่อถือคนตาบอดที่ได้รับ dev ใด ๆ เพื่อกำหนดค่านี้อย่างถูกต้องแม้จะได้รับคำแนะนำดังนั้นฉันจึงพิจารณาหนึ่ง (หรือทั้งสองอย่าง) ต่อไปนี้ แต่ก็อยากรู้อยากเห็นถ้าใครที่นี่ไปเส้นทางอื่น เบ็ดกระทำก่อนหน้าที่ตรวจสอบการสิ้นสุดบรรทัด lf ใด ๆ (หรืออาจสิ้นสุดการสิ้นสุดบรรทัด lf ทั้งหมด) และปฏิเสธในเหตุการณ์นั้น สคริปต์การติดตั้งถูกแจกจ่ายไปยัง devs ที่เติมการตั้งค่าส่วนกลางด้วย 'ตามที่เป็นอยู่ตามที่เป็น' ป.ล. ขณะที่เขียนสิ่งนี้เกิดขึ้นกับฉันว่าการแปลงเริ่มต้นจาก svn เป็น git สามารถกระทำวิธีการเริ่มต้นและตราบใดที่ผู้คนติดอยู่กับค่าเริ่มต้นที่จะราบรื่นเช่นกัน เคยเป็น dev ใช้ …
13 git  scm  windows 

2
โครงสร้างพื้นฐานการรวมอย่างต่อเนื่องสำหรับโครงการ iOS หลายโครงการ
ในฐานะนักพัฒนา iOS ฉันต้องการสร้างโครงสร้างพื้นฐาน CI และ CCQ (= คุณภาพรหัสต่อเนื่อง) สำหรับโครงการ iOS ที่เรามีในการพัฒนา เราใช้ Jenkins และ SonarQube สำหรับโครงการบนเว็บและ Android เกือบทั้งหมดแล้ว (โดยใช้โครงการ VM foreach การติดตั้งและกำหนดค่า CI และ CCQ เป็นไปโดยอัตโนมัติ) และใช้งานได้ดี แต่สำหรับโครงการ iOS เจนกินส์จำเป็นต้องสร้างบนคอมพิวเตอร์ที่ใช้ macOS ดังนั้นฉันไม่แน่ใจว่าฉันมีโซลูชันที่สมบูรณ์แบบสำหรับสิ่งนั้น ฉันกำลังมองหาวิธีแก้ปัญหาการจำลองเสมือน macOS สำหรับแต่ละโครงการเพื่อสร้าง macOS เสมือนและติดตั้ง Jenkins เป็นทาสที่นั่นเพื่อจัดการงานสร้าง โซลูชันดูสมบูรณ์แบบ แต่ดูเหมือนว่าผิดกฎหมายที่จะมี VM มากกว่า 2 เครื่องที่ทำงานกับ macOS (และแน่นอนว่าเฉพาะในคอมพิวเตอร์ Mac เท่านั้น) http://images.apple.com/legal/sla/docs/macOS1012.pdf …

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