debianパッケージを作成するGitHubActionsを作った
GitHubActionsでさっとDebianパッケージを作成してgithub releaseにアップしたくなった
せっかくなので自作した
手動でDebianパッケージを作る手順はdebianパッケージを作る手順を参照
この手順見るとわかるけれど、debファイル作るの簡単なんで、このActions使ってもあんまり楽にはならない
手でdebファイル作るコード書いてもそんなにコストが高くないの意
成果物
ソースコード: jiro4989/build-deb-action: build-deb-action builds a simple debian package.
Marketplace: build-deb-action · Actions · GitHub Marketplace
使い方
上のリポジトリのREADMEに書いてあるとおり
この例ではsamplescriptというただのシェルスクリプトを/usr/bin/配下にインストールする
package_rootで指定したパスに任意のコマンドを配置すればよい
実行可能バイナリとかを作ってこのパスに配置してactionsを実行するとdebファイルができあがる
この辺なんでこういう作りにしたかはdebianパッケージを作る手順を見るとわかる
上記手順をGitHubActionsにしただけなので
code:ci.yml
name: build
on:
push:
tags:
- 'v*.*.*'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set tag
id: vars
run: echo ::set-output name=tag::${GITHUB_REF:10}
- name: create sample script
run: |
mkdir -p .debpkg/usr/bin
mkdir -p .debpkg/usr/lib/samplescript
echo -e "echo sample" > .debpkg/usr/bin/samplescript
chmod +x .debpkg/usr/bin/samplescript
echo -e "a=1" > .debpkg/usr/lib/samplescript/samplescript.conf
- uses: jiro4989/build-deb-action@v2
with:
package: samplescript
package_root: .debpkg
maintainer: your_name
version: ${{ steps.vars.outputs.tag }} # vX.X.X
arch: 'amd64'
desc: 'this is sample package.'
使用例
nimjsonという自作のツールで実際に使ってみた
jiro4989/nimjson: nimjson generates nim object definitions from json documents.
リリースをpublishするとdebをリリースするようなワークフローにしている
コード
https://github.com/jiro4989/nimjson/blob/master/.github/workflows/main.yml#L51-L86
成果物はここにアップされる
https://github.com/jiro4989/nimjson/releases
ポリシー
簡単に使用できて、使い方がわかりやすいものを目指した
最初、僕もdebianパッケージを作ろうとして、既存のGitHubActionsも探したけれど、いまいち使い方が分からないものばかりだった
直感的に使えるものが全然見つからなかったと記憶している
なので、直感的に使えるもので、見れば使い方が分かる、ってくらい単純なものとしてbuild-deb-actionを作成した
ディレクトリ作って、その中に必要な実行可能ファイルを詰め込むだけ
配置先もここで決める
あとは作ったディレクトリを入力パラメーターに渡せば終了
リポジトリのREADMEのExampleを見れば使い方が一目瞭然なので、実行可能ファイル1つ配布するだけのdebパッケージであれば誰でも使えるのではと
preinstやpostinstとかやりたくなったら、ちょっと工夫が必要だけどね
以上