Design Pipeline - taritinth/sw-dev-tools-and-environments-project GitHub Wiki

Design Pipeline

ออกแบบ Pipeline สำหรับทำ CI/CD เพื่อให้สามารถผลิตและส่งมอบ Software ไปยังผู้ใช้ได้อย่างต่อเนื่อง เกิดความราบรื่น และลดต้นทุนด้านเวลาในระหว่างการพัฒนา Software โดยอาศัยหลักการของ Automation คือ การทำทุกอย่างให้เป็นไปอย่างอัตโนมัติ โดยพวกเราได้ออกแบบ Pipeline สำหรับ test โปรเจคคร่าว ๆ ดังนี้

  • Pull Code
  • Download Dependency
  • Unit Testing
  • Component Testing
  • Code Coverage Report

Software Tool ที่นำมาใช้สำหรับสร้าง Pipeline คือ Jenkins ที่ http://128.199.188.21:8080/ โดยมี 2 Pipelines ดังนี้

Frontend Pipeline

Pull Code

  • ดึง Code ทั้งหมดจาก Branch main
        stage('Pull code') {
            steps {
                git branch: 'main', url: 'https://github.com/taritinth/sw-dev-tools-and-environments-project.git'
            }
        }

Download Dependency

  • ดาวน์โหลดและติดตั้ง Dependency ของโปรเจคโดยใช้ npm install
        stage('Download dependency') {
            steps {
                sh 'cd frontend && npm install'
            }
        }

Unit Testing

  • ทดสอบ Code ในรูปแบบ unit test โดยใช้คำสั่ง npm run test:unit
        stage('Run unit test') {
            steps {
                sh 'cd frontend && npm run test:unit'
            }
        }

Component Testing

  • ทดสอบ Code ในรูปแบบ component test โดยใช้คำสั่ง npm run test:component
        stage('Run component test') {
            steps {
                sh 'cd frontend && npm run test:component'
            }
        }

Code Coverage Report

  • เป็นการ show code coverage โดยใช้ plugin OpenClover แสดงเป็น Graph report
        stage("Code coverage report") {
            steps {
                clover(cloverReportDir: 'frontend/coverage', cloverReportFileName: 'clover.xml',
                    healthyTarget: [methodCoverage: 70, conditionalCoverage: 80, statementCoverage: 80],
                    unhealthyTarget: [methodCoverage: 50, conditionalCoverage: 50, statementCoverage: 50],
                    failingTarget: [methodCoverage: 0, conditionalCoverage: 0, statementCoverage: 0]
                )
            }
        }

Backend Pipeline

Pull Code

  • ดึง Code ทั้งหมดจาก Branch main
        stage('Pull code') {
            steps {
                git branch: 'main', url: 'https://github.com/taritinth/sw-dev-tools-and-environments-project.git'
            }
        }

Download Dependency

  • ดาวน์โหลดและติดตั้ง Dependency ของโปรเจคโดยใช้ npm install
        stage('Download dependency') {
            steps {
                sh 'cd backend && npm install'
            }
        }

Unit Testing

  • ทดสอบ Code ในรูปแบบ unit test โดยใช้คำสั่ง npm run test:db
        stage('Run unit test') {
            steps {
                sh 'cd backend && npm run test:db'
            }
        }

Component Testing

  • ทดสอบ Code ในรูปแบบ component test โดยใช้คำสั่ง npm run test:api
        stage('Run component test') {
            steps {
                sh 'cd backend && npm run test:api'
            }
        }

Code Coverage Report

  • เป็นการ show code coverage โดยใช้ plugin OpenClover แสดงเป็น Graph report
        stage("Code coverage report") {
            steps {
                clover(cloverReportDir: 'backend/coverage', cloverReportFileName: 'clover.xml',
                    healthyTarget: [methodCoverage: 70, conditionalCoverage: 80, statementCoverage: 80],
                    unhealthyTarget: [methodCoverage: 50, conditionalCoverage: 50, statementCoverage: 50],
                    failingTarget: [methodCoverage: 0, conditionalCoverage: 0, statementCoverage: 0]
                )
            }
        }

Back to top