以下をやってみた
- GitHubに
v1.0.0
のようなタグをpushするとリリースする - 依存するライブラリのソースコードも含めてzipファイルを生成する
- サブモジュールとCocoaPodsを利用しており、アーカイブにスナップショットを含めたかった
こんな感じでアーカイブが添付される。
ソース
公開用として、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*"