2020年9月25日 星期五

Bitbucket Pipeline 的 CI/CD: S3, SSH

 在 CI/CD 最後的 Deploy 中,最希望的是 Build 到 Deploy 的環境,盡量不需要手動設定就不要手動設定,比方說,在 Bitbucket Pipeline 執行的時候,自動建好 AWS Configure,然後上傳檔案到 S3 上面。


有部分功能可能只在 Bitbucket Pipeline 有用:

  • git lfs 功能 (見程式碼)

Pipelines.yaml:

# This is a sample build configuration for JavaScript.
# Check our guides at https://confluence.atlassian.com/x/14UWN for more examples.
# Only use spaces to indent your .yml configuration.
# -----
# You can specify a custom docker image from Docker Hub as your build environment.
clone:
  lfs: true # 支援大檔案模式
  
pipelines:
  tags:                         # add the 'tags' section
      release-*:                  # specify the tag
        - step:                   # define the build pipeline for the tag
            name: Build and release
            script:
              - mkdir -p ~/.ssh
              - (umask  077 ; echo $MY_SSH_KEY | base64 --decode > ~/.ssh/id_rsa) #事先在 Variables 新增 MY_SSH_KEY 變數,並把 privatekey.pem 用 base64 encode 放到環境變數中
              - ssh -o "StrictHostKeyChecking no" [email protected] "touch /tmp/testfile" #用 id_rsa key 登入 ssh,並且直接執行指令
      deploy-*: # 自動佈署到 s3 
        - step:
            name: upload to s3
            script:
              - apt-get update && apt-get install -y awscli
              - aws --version
              - mkdir ~/.aws
              - echo -e $AWS_ACCESS_KEY"\n"$AWS_SECRET_ACCESS_KEY"\nap-northeast-1\n\n" | aws configure 2>/dev/null
              - aws configure list
              - aws s3 cp ./XXX/views/ s3://BUCKETNAME/ --recursive --region ap-northeast-1
              - aws s3 cp ./XXX/public/ s3://BUCKETNAME/ --recursive --region ap-northeast-1
- echo "GOOD!"


在上面的 config 檔案中,共使用了三個變數,在 Pipelines 旁邊的 Variables 可以設定:

  • MY_SSH_KEY: (把 -----BEGIN PRIVATE KEY-----..... 轉成成 base64 字串,貼上去)
  • AWS_ACCESS_KEY: (access_key)
  • AWS_SECRET_ACCESS_KEY: (secret_key)

沒有留言:

張貼留言

© Mac Taylor, 歡迎自由轉貼。
Background Email Pattern by Toby Elliott
Since 2014