CircleCIのArtifactにアップロードしたファイルのURLをSlackに通知する仕組みを作ります。作業リポジトリは以下です。
Artifacts Sample
artifacts-sample
created by create-book.
References
- VFM https://vivliostyle.github.io/vfm/#/vfm
- Vivliostyle CLI https://github.com/vivliostyle/vivliostyle-cli#readme
- Vivliostyle Themes https://github.com/vivliostyle/themes#readme
- Awesome Vivliostyle https://github.com/vivliostyle/awesome-vivliostyle#readme
- Vivliostyle (GitHub) https://github.com/vivliostyle
- Vivliostyle https://vivliostyle.org
サンプルとしてvivriostyleでビルドして出来上がったpdfファイルをArtifactとしてアップロードしています。
アーティファクトのアップロード
https://circleci.com/docs/ja/2.0/artifacts/
公式にある通り、 store_artifacts
にパスを指定します。
jobs:
build:
executor:
name: node/default
tag: 'lts-browsers'
working_directory: ~/project # 作業用ディレクトリ指定
steps:
- checkout
- node/install-packages:
cache-path: ~/project/node_modules
override-ci-command: yarn install
- run:
name: build
command: yarn build
- run:
command: mkdir ~/project/artifacts # アップロード用ディレクトリ生成
- run:
command: mv output.pdf ~/project/artifacts/output.pdf # pdfファイルの移動
- store_artifacts:
path: ~/project/artifacts # アップロード
URLの取得
https://circleci.com/docs/api/v1/#download-an-artifact-file
CircleCIのAPIにリクエストして環境変数に保存します。
artifacts=$(curl -X GET "https://circleci.com/api/v2/project/github/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/$CIRCLE_BUILD_NUM/artifacts" \
-H "Accept: application/json" \
--header "Circle-Token: $CIRCLE_TOKEN") # APIをたたいてレスポンス値を代入する
artifact0=$(echo $artifacts | jq '.items[0].url') # jqコマンドでurlの文字列を取得する
echo "export ARTIFACT0=$artifact0" >> $BASH_ENV # 環境変数に登録する
変数に関しては過去記事もありますので合わせてみてください。
Slackに通知
https://circleci.com/developer/ja/orbs/orb/circleci/slack
CircleCIのSlackOrbを使うと簡単に通知させることができます。メッセージの組み立てはSlackのBlock Kit Builderを使っています。
https://app.slack.com/block-kit-builder/
- slack/notify:
event: always # 常に通知させる
custom: |
{
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Book Artifacts <${ARTIFACT0}>"
}
}
]
}
結果
正しく登録できると以下の画像のようなSlack通知が来ると思います。リンククリックしたら実際にPDFファイルがブラウザで確認ができます。
Top comments (0)