LoginSignup
21
14

More than 3 years have passed since last update.

GitHub Actionsでリリースする

Last updated at Posted at 2020-10-10

以下をやってみた

  • GitHubに v1.0.0 のようなタグをpushするとリリースする
  • 依存するライブラリのソースコードも含めてzipファイルを生成する
    • サブモジュールとCocoaPodsを利用しており、アーカイブにスナップショットを含めたかった

こんな感じでアーカイブが添付される。

release.png

ソース

公開用として、uhooiさんのサンプルプロジェクトに追加してみた。

リポジトリ名とタグ名を取得する

リポジトリ名は ${{ github.repository }} からorganizationを消せば得られる。(github コンテキスト)
${{ github.ref }}refs/tag/タグ名 なので、前半を消せばタグ名が得られる。
それぞれをoutputに入れておくと続くタスクで参照できる。(参考: GitHub ActionでDockerコンテナをビルドしてAmazon ECRに保存する, GitHub ActionsでJobのOutputの値を後続Jobで参照する)

- name: Set version
  id: version
  run: |
    REPOSITORY=$(echo ${{ github.repository }} | sed -e "s#.*/##")
    VERSION=$(echo ${{ github.ref }} | sed -e "s#refs/tags/##g")
    echo ::set-output name=version::$VERSION
    echo ::set-output name=filename::$REPOSITORY-$VERSION

サブモジュールを含めてcloneする

${{ secrets.GITHUB_TOKEN }} は、同じリポジトリのread/write権限しかない。(Authenticating to package registries on GitHub)
なので、もし別のprivateリポジトリも含めてcloneしたいなら、アクセストークンを作ってそれを指定する。(個人アクセストークンを使用する)

- name: Checkout code
  uses: actions/checkout@v2
  with:
    token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
    submodules: true

zipファイルを作るが.gitは含めない

書き方はおそらくシェルに依存するので、要動作確認。

- name: Archive
  run: |
    zip -r ${{ steps.version.outputs.filename }}.zip ./ -x "*.git*"
21
14
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
21
14