LoginSignup
20
20

More than 5 years have passed since last update.

tagが作られたタイミングで、CircleCIがGitHubにreleaseする

Last updated at Posted at 2015-09-15

やりたいこと

GitHub上でtagを作ると、apkファイルがreleaseとしてアップロードされる。
apkを作成する人がいなくても、コード修正できて、GitHubでタグ作れればapkが取得できる。
イメージとしては下記のような感じ。

Kobito.r3kPin.png

手順

circle.ymlにtagの設定を追加する

GitHubの推奨に従って、タグ名はv1.0.9といった形を想定しています。

circle.yml
deployment:
  release:
    tag: /v[0-9]+(\.[0-9]+)*/
    commands:
      - ./gradlew assemble -PdisablePreDex
      - ./scripts/release.sh app/build/outputs/apk/app-debug.apk app-debug.apk
      - ./scripts/release.sh app/build/outputs/apk/app-release.apk app-release.apk

script/release.shを作成する

CircleCI上に、GITHUB_ACCESS_TOKENという名称で、GitHubのPersonal access tokenを設定しておく必要があります。
$1はファイルパス、$2にGitHub上で表示されるファイル名が設定される前提です。

script/release.sh
#!/usr/bin/env bash

sudo apt-get install jq

UPLOAD_URL=`curl -H "Authorization: token $GITHUB_ACCESS_TOKEN" https://api.github.com/repos/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/releases/tags/$CIRCLE_TAG | jq '.upload_url'`
UPLOAD_URL=`echo $UPLOAD_URL | sed -e 's/{?name,label}/?name=/g' | sed -e 's/"//g'`

curl --data-binary @$1 -H "Content-Type: application/zip" -H "Authorization: token $GITHUB_ACCESS_TOKEN" $UPLOAD_URL$2

まとめ

これで、またビルド職人の作業が減らせると思います。
シェルスクリプトの内容もそんなに凝ったものではないので、属人性も少ないと思います。

20
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
20