11
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

GitHub Actionsでリリースする

以下をやってみた

  • 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*"
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
11
Help us understand the problem. What are the problem?