0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Github Actions てなんや【CI/CD】

Last updated at Posted at 2025-04-22

Github Actionsってなんだ

CI/CD関連で使われるサービスのようです。
CI/CDとは
継続的インテグレーション Continuous Integration
継続的デリバリー デプロイ Continuous Delivery Deployment

だそうです。単語の意味はよく分かりませんが
自動でテストして自動でデプロイすることです。
自分も何となく自動でやってくれるというあいまいな認識でしたが、興味だけはありました。

他のCI/CD関連のサービスは

  • Jenkins,
  • GitLab CI
  • CircleCI
  • AWS CodePipeline

どれも聞いたことないです...
とりあえず適当にリポジトリ作って使ってみます

.github/workflows/hoge.ymlを作成する

まずはGitHubのドキュメントに倣ってHelloWorld的なコードを実行してみます。

リポジトリに .github/workflowsディレクトリを作成します
.github/workflowsにあるymlファイルはワークフローファイルという名前で呼ばれているようです。

ワークフローファイルが実行されるのはワークフローファイルに記述したgithubのイベントがトリガーしたときです

pullRequestされたとき、pushされたときなど、実行するタイミングをワークフローファイルで設定できます

処理の内容もワークフローファイルに書いていきます。

.github/workflows/hoge.yml というワークフローファイルを作成しました。

hoge.yml
name: test no warkflow
run-name: ${{ github.actor }} test
on: [push]
jobs:
  Explore-GitHub-Actions:
    runs-on: ubuntu-latest
    steps:
      - run: echo "${{ github.event_name }}"
      - run: echo "${{ runner.os }}"
      - run: echo " ${{ github.ref }}  ${{ github.repository }}."
      - name: repo code check
        uses: actions/checkout@v4
      - run: echo "${{ github.repository }} "
      - name: file list
        run: |
          ls ${{ github.workspace }}

コードの内容はGithubのドキュメントとほぼ一緒です。echoの内容を変えただけです。
自分は、コピペでそのまま実行したくない病なのでなにかしら変更を加えてしまいます。

初見のコードでしたが、身に覚えがあるというか、Dockerfileに似てなくもないかなという印象でした。
ワークフローはホステッドランナーと呼ばれる仮想マシンで実行されるようです。
run-on:などはランナーのOSを定義しているようです。
Ubuntu Windows macOS の中から選べるようです。

on:pushこれがgitのイベントです。
つまりpushされたときにこのワークフローは実行されるということです。
他にも
on:pushpull_request プルリクされたとき
on:workflow_dispatch githubから手動実行されたとき
などがあるようです。

調べているとmergeというイベントがないことに気づきました。
mergeもpushの一部ということでないようです。

branchやディレクトリを指定することもできて

on:
  push:
    branches:
      - develop
    paths:
      - 'src/**'

このように記述すると
developブランチのsrcディレクトリにpushされたときに実行するようになります

jobs:ここからワークフローの処理を定義しますよの文言
Explore-GitHub-Actions:jobの任意の名前
steps:ワークフロー構成する一つの処理単位
run:ランナーでコマンドたたく
name:コメント的な感じ。stepsを実行中にログに出力される
uses:アクションを実行する
アクションとは再利用可能なコードの単位だそうです。
image.png
あらかじめ定義してあるアクションや、自前で定義したアクションを実行できるということです。
今回はあらかじめ定義されているactions/checkoutを使用して
レポジトリをランナーにクローンしています。
with:を使って引数を渡せるようです。

jobs:
 steps:
  - uses: action/checkout@v4
    with:
     ref:
      - develop

これはdevelopブランチを指定してクローンするコードです。

pushしてみる

試しにpushしてみると
image.png

githubにこのような出力があり正しく動作していることが確認できました。
CI/CDのCDだけなら結構簡単に使えそうな印象でした。
CIは難しそうです。そもそもテストってどうやるんでしょうか...
githubに出力されたワークフローのログを見て思い出したのですが、専門学校時代に教員が課題を自動でテストするときにつかってました。
CIに関してはまた調べます

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?