2019年2月25日月曜日

GitHub Actions を試してみた





1ヶ月ほど前から使えるようになったので、ちょこちょこ弄ってました。

割と手こずったのでハマったところを書いておこうと思ったのですが、ちゃんとドキュメント読めよ。に落ち着いたので、ここに書くことはなくなりました。。。
ので、駄文です。

とりあえずやってみた
とりあえず、GitHub Actions でなにかをさせることができました。
「なにか」については、別途ブログにします。
今回は、GitHub Actions を使ってみた感想と、詰まったところを書きます。
使い方とかはすでに書かれている方も多いと思うので、ここでは書きません。


いろいろ手間取った
とりあえず、なにかさせることはできるようになったのですが、そちらは既存のアクションを使っています。最初、アクションを自分で用意してやっていたのですが、いきなり見よう見まねでやったのがよくなかったです。。。

サンプルリポジトリを用意して、ドキュメントを理解しながらやるべきでした。。。
https://github.com/srz-zumix/github_actions_sample


今後やりたいこと
GitHub Actions ならではなことができたらなーと思ってます。
ただ単に他の CI サービスと同じことをさせるのではなく、なにか便利なことができればなと。

では。

2019年2月19日火曜日

[Azure Pipelines] ファイルがなかった場合にステップをスキップする

Add an exists() on Task Custom Condition - Developer Community



とあるファイルがある場合にだけ実行する Job/Step が欲しくなったのですが、condition に簡単に書けたら嬉しかったのですが、今の所ない模様。

こんな感じできたら・・・
- script: |
    echo "xml がある場合にしたいこと"
  condition: exist('./test/*.xml')


状態を variable に記録して条件とする
ワンステップではできないものの、比較的簡単にやりたいことは実現できます。

condition で variables を参照してスキップさせることはできるので、ファイルが存在しない場合にスキップ用の variable をセットするようにしました。

- script: |
    TEST_RESULTS=`find ./test -maxdepth 1 -name *.xml 2>/dev/null`
    if [ $? -ne 0 ] || [ -z "$TEST_RESULTS" ]; then echo "##vso[task.setvariable variable=XmlFileNotExist]true"; fi

- script: |
    echo "xml がある場合にしたいこと"
  condition: ne(variables['XmlFileNotExist'], 'true')



この方法であれば、「ファイルが存在するかどうか」以外でも、条件付けできそうですね。

2019年2月12日火曜日

Windows + Git で実行権限をつけて commit する

何回かハマって、何回も調べ直してるので、記憶の定着・備忘録のために自分のブログにも書き残しておくことにした。

Windows + Git Bash では 644 で commit される
chmod +x としておいても commit したときに書き換えられます。
$ git commit -m 'sample action a'
[master e432bd4] sample action a
 4 files changed, 21 insertions(+), 4 deletions(-)
 create mode 100644 action-a/Dockerfile
 create mode 100644 action-a/README.md
 create mode 100644 action-a/entrypoint.sh

この状態でもう一回 chmod +x しても差分として出てこない。

git update-index --add --chmod=+x
パーミッションの変更は上記コマンドで行います。

しょっちゅう忘れるので alias にしました。
git config --global alias.addx 'update-index --add --chmod=+x'

これで、addx エイリアスから chmod +x できるようになりました。



+x/-x 両方に対応したエイリアス
せっかくなのでもう少し汎用的なエイリアスも用意しました。
git config --global alias.chmod '!f(){ cd ${GIT_PREFIX:-.} && git update-index --add --chmod=$1 ${@:2:($#-1)};};f'

git chmod +x hoge
git chmod -x foo bar
のように使えます。