Bitbucket pipeline CI

Please download to get full document.

View again

of 76
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Similar Documents
Information Report
Category:

Technology

Published:

Views: 0 | Pages: 76

Extension: PDF | Download: 0

Share
Description
1. Continue Integration on Bitbucket Pipelines Zero 2019/09/20 2. Outline  Continuous Integration 介紹  Continuous Delivery 簡介  Bitbucket Pipleline 學教…
Transcript
  • 1. Continue Integration on Bitbucket Pipelines Zero 2019/09/20
  • 2. Outline  Continuous Integration 介紹  Continuous Delivery 簡介  Bitbucket Pipleline 學教 2
  • 3. 十年前的開發流程  瀑布式開發流程 3
  • 4. 十年前的開發流程  瀑布式開發流程 – 迭代 (iteration) 速度慢 – 好不容易實作完成需求就改了 – 測試到一半,程式按照需求改寫 – ..... – 計畫 不上變化趕 4
  • 5. 敏捷式開發  敏捷式開發流程 5
  • 6. 敏捷式開發  敏捷式開發流程 – 認 需求本來就是會改變的為 – 專案並非一次到位,漸進開發 – 迭代速度較快 ( 有些團隊以「天」 單位為 ) 6
  • 7. 敏捷式開發  重視團隊成員之間的溝通  快速回應變化  重視配套工具、軟體 8
  • 8. 敏捷式開發 - 重視配套工具  事件追蹤工具 (issue tracker)  溝通工具 (Slack, Google Chat ... et c)  專案文件 (Wiki ... etc)  程式碼靜態分析工具  功能測試工具  自動佈署工具  錯誤追蹤 (Rollbar ... etc) 9
  • 9. 敏捷式開發 - 重視配套工具  事件追蹤工具 (issue tracker)  溝通工具 (Slack, Google Chat ... et c)  專案文件 (Wiki ... etc)  程式碼靜態分析工具  功能測試工具  自動佈署工具  錯誤追蹤 (Rollbar ... etc) 10 本次討論內容
  • 10. Continue Integration
  • 11. Continuous Integration  縮寫為 CI  整合 – features – bug fixes – 測試 – .... etc 12
  • 12. Continuous Integration  專案有異動就做一次整合  一天至少一次整合 (nightly build)  dev / testing / stage / production  詳細的整合結果、報告 13
  • 13. Continuous Integration  優點 – 流程自動化 – 快速了解 品狀態產 – 增加機動性 – 提高專案品質 14
  • 14. Continuous Integration  缺點 – 初期建制成本高 – CI 環境較複雜、機動性差 – 大型專案、團隊較辛苦 15
  • 15. Continuous Delivery  簡稱 CD – 將 品交付產 (delivery) 給客戶 – 盡快展示實作成果 – 讓客戶了解需求、規格是否正確 16
  • 16. Bitbucket Pipelines
  • 17. Bitbucket Pipelines  Issue tracker  Wiki 文件功能  Project building  自動化測試  自動化佈署  .... and more 18
  • 18. Bitbucket Pipelines 19  Docker container  Environment isolation  Set build / test scripts in YAML  Different build / test behaviour based on different branch
  • 19. Bitbucket Pipelines 20  Put all scripts in bitbucket.yml
  • 20. bitbucket.yml 21  要做的工作按照順序描述  每項工作都在獨立的 docker containe r (isolation)  使用 YAML 描述語言,入門門檻低 ( 進階功能就難說了 .... ㄎㄎ )
  • 21. Reserved Words 22  幾個較常見的保留字 – pipelines – image – default / branches / tags – custom
  • 22. 撰寫 bitbucket.yml 23  構思需要做的是 些事項哪 – building ? – testing ?  排好順序,開始撰寫 scripts
  • 23. 撰寫 bitbucket.yml 24  要使用 PHP 環境 – image: php-7.2  使用 node.js – image: node:10.15  也可自行建立 docker image – image: johnroyer/laravel-testing
  • 24. 撰寫 bitbucket.yml 25  建立流程  pipeline pipeline: - step: name: build - step: name: unit test
  • 25. 撰寫 bitbucket.yml 26  不同 branch 做不同的動作 pipeline: default: branches: master: stage:
  • 26. 撰寫 bitbucket.yml 27  透過 step 指定操作順序 pipeline: default: - step: name: build ENV script: - cd /home/laravel - ./artisan XXX
  • 27. 撰寫 bitbucket.yml 28  script 的指令 == shell script script: - cd /home/laravel/ - chmod -R 777 storage/ - composer install - ./artisan key:generate
  • 28. 撰寫 bitbucket.yml 29  注意: bitbucket.yml 均使用 root 執 行 script: - apt-get install php7.3-cli - cd /home/laravel/ - chmod -R 777 storage/ - ./artisan key:generate
  • 29. 觸發 bitbucket.yml 30  被觸發的時機 – 設定檔有對應的 branch – 有 default 的設定 – git push bitbucket susccess
  • 30. 觸發 bitbucket.yml 31 $ git push origin devel
  • 31. 執行測試 32  PHP 語法檢查  Unit test via PHPUnit
  • 32. PHP 語法檢查 33  - step name: "Check PHP syntax" script: - find -name '*.php' -exec php -l {} ;
  • 33. PHP 語法檢查 34  - step name: "Run php tests" script: - composer install --no-interaction --no-progress - vender/bin/phpunit
  • 34. 執行測試 35 - step script: - ..... - step script: - ..... - .....
  • 35. Task Paralleling
  • 36. 執行測試 37
  • 37. 執行測試 38  每個 step 都是獨立的 (isolation) => 可以同時進行  使用 parallel 參數
  • 38. 執行測試 39 - parallel - step script: - ..... - step script: - ..... - .....
  • 39. 執行測試 40 - parallel => 同時進行
  • 40. Simple Review
  • 41. Review 42  "pipeline" 開始建立 scipt  透過 "image" 建立執行環境
  • 42. Review 43  "default" 代表任意 branch  透過 "branches" 特定為 branch 撰寫流程  也可針對 feature branch 或 tag
  • 43. Review 44  可用 "perellel" 同時處理工作項目  回顧一下前面的簡報 ....
  • 44. Bitbucket Pipelines  Issue tracker  Wiki 文件功能  Project building  自動化測試  自動化佈署  .... and more 45
  • 45. Bitbucket Pipelines  似乎還漏掉了些什 ?麼 46
  • 46. Bitbucket Pipelines  Issue tracker  Wiki 文件功能  Project building  自動化測試  自動化佈署  .... and more 47
  • 47. Bitbucket Pipelines  CD 不再本次的討論範疇  「建立測試環境」其實沒那 簡單麼 48
  • 48. Enviroment Building
  • 49. Bitbucket Pipelines  安裝 composer & checkout vendor curl -ss https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer composer install --no-interaction --no-progress --prefer-dist 50
  • 50. Bitbucket Pipelines  使用 root 執行 scripts  可安裝、刪除、修改 packages  可依需求調整 daemon config 51
  • 51. Bitbucket Pipelines  安裝專案會使用到的 extension apt-get install -y unzip libssl-dev libmcrypt-dev libpng-dev docker-php-ext-install pdo_mysql pdo zip pcntl 52
  • 52. Bitbucket Pipelines  部 專案比較辛苦份 nvm install 10.XX nvm use cd path/to/npm/ npm install npm run lint npm run build 53
  • 53. Bitbucket Pipelines  十年挑戰: 家你 node_modules 有幾 MB ? 54
  • 54. Bitbucket Pipelines  使用 cache 來加速環境建制  step 順利執行完成後會備 指定份 cache  cache 並非永久 cache  cache 使用限制 55
  • 55. Bitbucket Pipelines pipelines: default: - step: caches: # cache node_modules - node script: - npm install 56
  • 56. Bitbucket Pipelines pipelines: default: - step: caches: # ~/.composer/cache - composer script: - npm install 57
  • 57. Bitbucket Pipelines  可自訂要 cache 的項目 – 定義 keyword – 定義要 cache 的 target 59
  • 58. Bitbucket Pipelines definitions: caches: php-ext: /usr/src/php/ext php-conf: /usr/local/etc/php php-ext-bin: /usr/local/lib/php 60
  • 59. Bitbucket Pipelines  需要 cache 時 1. 檢查 cache target 是否存在 2. 下載 cached files 3. 執行 scripts 4. 順利執行完成,則 cache 未進尚 cache 的 target ( 發生錯誤則不建立 cache) 62
  • 60. Bitbucket Pipelines  cache 保留時間 一週為 65
  • 61. Bitbucket Pipelines  必要時, cache 也可手動刪除 66
  • 62. Enviroment Variables
  • 63. Bitbucket Pipelines  shell script 是有變數可用的  Piplelines => Settings => Repository variables 68
  • 64. Bitbucket Pipelines image: php:7.3 pipeline: default: - step sciprt: - nvm install $NPM_VERSION - npm .... 70
  • 65. Bitbucket Pipelines  注意 – YAML 不支援變數 – schell script 才支援變數 71
  • 66. Bitbucket Pipelines  注意 – 客製化的環境選項 72
  • 67. pipelines: branches: master: - step: deployment: Production script: - echo $NAME
  • 68. pipelines: branches: master: - step: deployment: master script: - echo $NAME
  • 69. Q & A
  • 70. Thanks for your attention
  • We Need Your Support
    Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

    Thanks to everyone for your continued support.

    No, Thanks
    SAVE OUR EARTH

    We need your sign to support Project to invent "SMART AND CONTROLLABLE REFLECTIVE BALLOONS" to cover the Sun and Save Our Earth.

    More details...

    Sign Now!

    We are very appreciated for your Prompt Action!

    x