地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

GitHub

【GitHub Actions】タグpushを行った際にDockerHubにもpushするyaml

- name: Container Push if: startsWith( github.ref, 'refs/tags/' ) env: REF: ${{ github.ref }} DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }} DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }} run: | docker login -u ${DOCKERHUB_USER} -p $…

【GitHub Actions】GitHub Actionsで修正のあったファイルを取得しformatterを実行する

歴史あるリポジトリとかで数千ファイルが既にあったりするケースのリポジトリに対して全体的にformatterをかけたりはしたくないけど直近で修正してるファイルはformatterをかけたいみたいなケースで使える小技。 GitHub scriptを自分たちで書いても良さそう…

【GitHub Actions】便利な関数表

GitHub Actionsで使える関数一覧 contains() contains( search, item )searchがitem を含む場合、true を返す。 特定ラベルで動作するジョブの定義なんかで使う場合は以下のようになる。 if contains(github.event.issue.labels.*.name, 'bug') startWith() …

【Git】diffでファイル名のみを取得する

git diff 比較ブランチ名 --name-only って感じでブランチ名をしてしておけば特定ブランチとの差分があったファイルを取得できる。ついでにhelpをみてみた。 usage: git diff [<options>] [<commit>] [--] [<path>...] or: git diff [<options>] --cached [<commit>] [--] [<path>...] or: git diff [<options>] <commit> [<commit>..</commit></commit></options></path></commit></options></path></commit></options>…

【GitHub Actions】ブランチ名やコミットIDなどをシェル芸やらずに欲しい値だけ抜き出すaction 「GitHub Environment Variables Action」が便利だった話

ryuichi1208.hateblo.jp ↑の記事を書いてる最中にもずっと思ってがGitHub Actionsが公式で提供してくれてるリポジトリ名って扱いづらいなと。 で、調べていたら同じようなことを思っている人たちはそれなりにいて(stack overflow調べ)いい感じに変数を設定し…

【GitHub Actions】set-envの代替え

github.blog set-env/add-pathがCVEの関係で非推奨となったらしい。すぐに対応する必要は無さそうだがどうせ使えなくなるのならと言うことで代わりに使える方法が書いてあったので使ってみた。 サンプルyaml echo "{name}={value}" >> $GITHUB_ENVみたいな感…

【GitHub Actions】 特定ブランチへのpushだけ動作するジョブ 2

ryuichi1208.hateblo.jp この前かいたやつの追加版。特定ブランチが単独じゃなくて複数だった場合に上のままだと無限にjobsが増えてしまう。その対策が以下のように書ける。 contains('refs/heads/develop refs/heads/main', github.ref) containsはGitHub A…

【GitHub Actions】pull_requestイベントからメッセージを取得したい。

pull_requestのイベントからメッセージとかブランチとかを取得して何かをしたいワークフローがある場合に使える。PR->リリースみたいなケースでもこのフローを使っておけば問題ない予定。 PULL_REQUEST_NUMBER : ${{ github.event.pull_request.number }} PU…

【Go】GitHubActions GoのCIテンプレート

build -> test -> lintをするためのgo用のテンプレートyaml lintは以下を使ってます。 github.com jobs: setup: runs-on: ubuntu-latest steps: - name: set up uses: actions/setup-go@v2 with: go-version: ^1.13 id: go - name: check out uses: actions/…

【Git】git cloneで鍵を使い回す話

sshの公開鍵認証では秘密鍵と公開鍵のセットがサーバにあればよくて基本的には使い回しが可能。 例えばサーバAで作った鍵はサーバBへ公開鍵と秘密鍵をコピーすれば使用することが可能。 これを使ってサーバC/サーバDなんかでプライベートリポジトリのgit clo…

【GitHub Actions】Dockerを使うテンプレートyaml

ベース name: Push Docker image to ECR on: push env: # BuildKitを有効化 DOCKER_BUILDKIT: 1 IMAGE_NAME: sample IMAGE_TAG: test jobs: build: name: Build image runs-on: ubuntu-18.04 steps: - uses: actions/checkout@master - name: Login GitHub R…

【GitHub Actions】ジョブ失敗時の定義方法

always 常にtrueを返します。キャンセルされた場合であっても同じです。 クリティカルなエラーによりタスクが実行されない場合は、ジョブやステップも実行されません。 たとえば、ソースの取得に失敗した場合などがそれにあたります。 サンプル if: ${{ alwa…

【GitHub Actions】オブジェクト

オブジェクトフィルタ * 構文を使って、フィルタを適用し、コレクション内の一致するアイテムを選択できます。 たとえば、fruitsというオブジェクトの配列を考えます。 [ { "name": "apple", "quantity": 1 }, { "name": "orange", "quantity": 2 }, { "name…