もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

github action上で別レポジトリに対して、ブランチを切り替えたり、commit & mergeしてpushしたり...

はじめに

こんばんは。

とある案件で github action上で 別レポジトリをcloneして、もろもろ操作を行うというものがあったので、備忘録として残しておきます。

本題

対応した方法は以下

      - name: Clone For Main Branch
        uses: actions/checkout@v3
        with:
          repository: xxxxx/repo_a
          token: ${{ secret.github_token }}
          path: repo_a
          fetch-depth: 0  ← depthは0指定

      - name: Edit
        run: |
          cd ${{ github.workspace }}/repo_a
          echo "edit..." >> edit.txt

      - name: Commit
        run: |
          git config --local user.email "zzzzzz@users.noreply.github.com"
          git config --local user.name "github-actions[bot]"
          git add .
          git commit -m "edit"

      - name: Push For Main
        uses: ad-m/github-push-action@master
        with:
          branch: main
          directory: ${{ github.workspace }}/repo_a
          repository: xxxxx/repo_a

      - name: Merge Branch Main -> Develop
        run: |
          cd ${{ github.workspace }}/repo_a
          git checkout develop
          git merge main

      - name: Push For Develop
        uses: ad-m/github-push-action@master
        with:
          branch: develop
          directory: ${{ github.workspace }}/repo_a
          repository: xxxxx/repo_a

無理やりやった感が強い...

以下の機能を使うことで、対象のレポジトリのworkflowを動かえせるようなのですが、僕の場合は403エラーでうまくいきませんでした...

personal access tokenも設定したのですが、うまく行かず...

github.com

終わりに

github action周りの話はこれでおしまいかも。

現場からは以上です。

laravelのmergeBindings()はちょっと使いづらかった

はじめに

こんばんは。

最近laravelの mergeBindings() を使う機会がありましたが、うまく使えなかったので備忘録です。

参考サイトは以下

qiita.com

本題

条件付きのサブクエリを作る必要があったのですが自分の場合、mergeBindings()ではうまくいきませんでした。

参考サイトで紹介されている マージする順番も気をつける必要がありますので注意してください。 という話なのかな?

どんな状況になったかというと、bindingされている順番が崩れてしまいました。

そんな感じで自分が解決した方法はこちら。

private function createSubQuery(int $status, int $groupId):Builder
{
        return DB::query()
            ->select(DB::raw(<<<SELECT_COLUMNS
                users.id AS user_id,
                MAX(points.id) AS latest_point_id
            SELECT_COLUMNS))
            ->from('users')
            ->join('points', 'points.user_id', '=', 'users.id')
            ->whereRaw('users.status = ?')    ← whereではなくwhereRawで指定する
            ->whereRaw('users.groupId = ?') ← whereではなくwhereRawで指定する
            ->groupBy('users.id')
            ->setBindings([$status, $groupId]); ← mergeBindingsではなくsetBindingsを使う
}

使用する側

            $builder->joinSub($this->createSubQuery($status, $groupId, 'latest_point', static function(JoinClause $join) {
                $join->on('point.id', '=', 'latest_point.id');
            })

上記のような感じでsbuqueryをくっつければbindingの順番が崩れずにうまくSQLが構築されました。

終わりに

年始に怪我した指がやっと治ってきたと思ったら今度は風邪を引いてしまい、最近散々な僕です。

2月からは心機一転頑張りたい。

workflow_callを使ってgithub actionのymlを分割する

はじめに

こんばんは。

最近github actionの知見が少しだけ溜まった僕です。

github actionやってるとymlがすごい量になって、めちゃんこみにくくなりますよね。

うまいこと分割できないかなと調べたら、いいやりかたあったので、備忘録で残しておきます。

本題

公式のドキュメントはこちら

docs.github.com

workflow_call を使う感じです。

もととなる ymlはこちら

main.yml

    uses: ./.github/workflows/deploy.yml

deploy.yml

name: deploy

on:
  workflow_call:

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      ...

たとえば 呼ばれる側の deploy.ymlに引数を渡したい場合は、以下みたいなかんじで渡せます。

main.yml

    uses: ./.github/workflows/deploy.yml
    with:
      arg_1: 100

deploy.yml

on:
  workflow_call:
    inputs:
      arg_1:
        required: false
        type: number
        default: 0

終わりに

そういえば39歳になりました。

ラスト30代がんばります!

github actionの失敗時にslack通知を行う

はじめに

あけましておめでとうございます(2回目)

新年早々、高熱・そして指の怪我で意図せず1月中旬くらいまで休む羽目になりました。

今回も簡単な備忘録

去年の年末はずーっと github actionを触ってましたが、失敗した際に slackに通知したいなと思い、調べてやってみました。

本題

実際のコードはこちら

      - name: Failure Notification
        if: ${{ failure() }}
        uses: slackapi/slack-github-action@v1.23.0
        with:
          payload: |
            {
              "blocks": [
                {
                  "type": "section",
                  "text": {
                    "type": "mrkdwn",
                    "text": ":skull: *デプロイが失敗しました* :skull: \n\n <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|github actionを確認してください>"
                  }
                }
              ]
            }
        env:
          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
          SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK

エラーを判定してくれているのは failure() です。

docs.github.com

簡単に実装が出来ました。

終わりに

githubのslackアプリが優秀で、デフォで通知も豪華なんですが、別途actionを回す際にでも使えたらいいですね。

ああ。。ゆびがいたい。。。

2023年の目標

こんにちは。

新年から気管支炎・突き指等をして厄年でもないのにツイてないkojirockです。

kojirooooocks.hatenablog.com

2023年の目標を立てようと思います。

1. ダイエットで62kgにする

去年で76kg -> 68kgまでダイエットに成功したので次は肥満体重からの脱却ということで 62kgまでを目標にします。

去年の段階で一番ダイエット成功した際は 65.6kgまで戻すことが出来たので行けそうです!

(ちなみに現状の体重は年末年始で食いすぎたので69.8kg...)

2. 毎月1冊積本を読破する

結局去年も積本が増えただけだったので今年からは計画的に1月1冊(年12冊)を読み切れるようにしたいです。

3. アドベントカレンダーを必ず1件参加する

去年も1つも参加しなかったので今年こそは余裕を持って必ず1件参加しようと思います。

終わりに

こんな感じで今年も健康に気をつけつつ、頑張っていきたいと思うので、よろしくおねがいします!

2022年のまとめ

こんばんは。

あけましておめでとうございます。

2022年も本当にお疲れさまでした。

そして毎年恒例2022年の振り返りをやっていきたいと思います。

kojirooooocks.hatenablog.com

  1. ブログ数年間51件を目指す

=> 年間では52件で一応クリア(内容は微妙だけど...)

12月のアドベントカレンダブログ(3件)

=> ✗ 今年は全くやってません。

  1. アドベントカレンダー参加数は3件

=> ✗ 今年は全くやってません。

  1. 資格を1種類以上取得する

=> ✗ 全くやりませんでした。

  1. 積本を8冊以上読破する

=> ✗よりの△ 3冊しか読めませんでした...

  1. ダイエットで60キロ台に戻す

=> ○ これはまじで大成功でした。年末の暴飲暴食で68まで戻っちゃいましたが、マックス65.5kgまで減らすことに成功しています。

総括

こんな感じで、アウトプット的な目標は全然だめでしたが、ダイエットは大成功という結果になりました。

子供もどんどん大きくなって、すごくしゃべるようになって、いろんな質問もしてくるようになったから、父ちゃんとしてうまく答えられるように、きちんと勉強しておきたいなと思います。

github actionでconfigure-aws-credentialsを使うときに警告が出てた

はじめに

こんばんは。 頑張って github actionでデプロイできる環境を構築中です。

今回は簡単な報告

github actionからawsの操作を行うためによく使う aws-actions/configure-aws-credentials が警告を吐いていたので調べました。

本題

aws-actions/configure-aws-credentials を使うとこんな警告が出てました。

なんだなんだ?とみてみると READMEにこんな文言が

NOTICE: node12 deprecation warning
GitHub actions has recently started throwing warning messages regarding the deprecation of Node 12. If you would like to stop seeing this warning, configure your action to use aws-actions/configure-aws-credentials@v1-node16. Both the v1 branch and the v1-node16 branch will receive the same updates moving forward. See this issue for more information on this topic.

github.com

github actionがnode12の使用に警告を出し始めてて、その警告を消すためには v1-node16 を使用してね。

ってことみたいです。なので、以下みたいに対応しました。

    steps:
      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@v1-node16
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ${{ secrets.AWS_DEFAULT_REGION }}

終わりに

調べてみると クラスメソッドさんがまさにな記事を上げてくれていました。

dev.classmethod.jp

僕の場合はクラスメソッドさんの記事にある 引き続きwarningが出る場合 の現象には出会ってないのです。

現場からは以上です。