iT邦幫忙

2022 iThome 鐵人賽

DAY 26
0
自我挑戰組

寫程式帶給我的無形快樂系列 第 26

巨人肩膀借我站一下 - Bitbucket Pipelines (中)

  • 分享至 

  • xImage
  •  

bitbucket 依照根目錄下的 bitbucket-pipelines.yml 設定 Pipelines 的內容,並執行對應的 step。

YAML ?

bitbucket-pipelines.yml 為 YAML 格式的檔案

  1. 採用 key:value 的形式
  2. 使用空白字元分行來分隔資料
  3. 縮排中空白字元的數目不重要,相同階層的元素左側對齊即可

詳細內容可參考 維基百科-YAML

怕寫錯的話,也可以使用 bitbucket 提供的 bitbucket-pipelines.yml validator 檢查


基本設定

bitbucket-pipelines.yml 基本設定如下:
基本設定
一但程式碼有異動發生,就會依照這份設定去找匹配的 pipelines 執行

Pipelinebitbucket pipelines 的核心,是由一系列的 steps 組成,可以在 bitbucket-pipelines.yml 設定檔中定義多個 pipeline
而每一個 step 都是在獨立的 Docker container 執行 (代表每個 step 都可以用不同的 image)

範例 1:

pipelines:
  default:
      - step: # 一個 pipeline 最多可以包含 100 個 step
          name: Install, Lint and Build Functions
          caches:
            - node
          script:
            - cd functions
            - npm install
            - npm run lint
            - npm run build

沒有定義其他 sections (例如: 特定 branches), 只有 default 這個 section,所以當有任何 push,都會觸發執行 default 中的 step,適合用來檢查所有 commit 程式碼的 style。

default V.S. branches

default 如果沒有符合的 sections,所有分支的變更都會執行 default 中的內容
branches 符合指定 branches 名稱或是符合指定格式的 expressions,會執行此 section 中的內容。都沒有符合的,通通去執行 default

parallel

使用 parallel steps 可同時執行多個 step,加速 buildtest

pipelines:
  default:
    - step: # non-parallel step
        name: Build
        script:
          - ./build.sh
    - parallel: # 這裡面的 2 個 steps 會同時執行
        - step:
            name: Integration 1
            script:
              - ./integration-tests.sh --batch 1
        - step:
            name: Integration 2
            script:
              - ./integration-tests.sh --batch 2
    - step:          # non-parallel step
        script:
          - ./deploy.sh

巨人肩膀的肩膀 pipes

bitbucket pipelines 還整合了很多好用的第三方工具/服務 --> pipes

例如:

script:
  - pipe: atlassian/aws-s3-deploy:0.2.2
    variables:
      AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
      AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
      AWS_DEFAULT_REGION: 'us-east-1'
      S3_BUCKET: 'my-bucket-name'
      LOCAL_PATH: 'build'

官網有將 pipes 做分類,分便搜尋

像是 Notifications 最常用到 mail 或是 slack 做通知
Notifications

打開內容,都有完整的 YAML 檔設定以及參數的說明
slack notify

如果是要 Deploy 到不同平台上 (像是: Heroku、Firebase、npm ...等),官網也有整理部署相關的 pipelines (裡面都有詳細的範例說明 Access Pipelines deployment guides)

deployment guides
圖截自Access Pipelines deployment guides

待續...


參考

Configure bitbucket-pipelines.yml
Cheatsheet for Bitbucket Pipelines.


上一篇
巨人肩膀借我站一下 - Bitbucket Pipelines (上)
下一篇
巨人肩膀借我站一下 - Bitbucket Pipelines (下)
系列文
寫程式帶給我的無形快樂30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言