245 Views
October 20, 24
スライド概要
2024/10/20に「CI/CD・自動化勉強会 in 神戸」で発表したスライドです
https://kansai-web-app-dev.connpass.com/event/332368/
【PHPer向け】 GitHub Actions超入門 2024/10/20 CI/CD・自動化勉強会 in 神戸
自己紹介 ● 荒巻拓哉 / takaram ○ ○ X: @takaram71 GitHub: @takaram ● 1994年生まれ 社会人6年目 ● 大阪でSaaSを作ってるPHPerです
https://github.co.jp/features/actions
GitHub Actions ● GitHubが提供するワークフロー自動化ツール ○ ○ ○ ○ ● ビルド テスト デプロイ その他だいたい何でも パブリックリポジトリなら無料 ○ プライベートリポジトリも無料枠あり
name: Sample workflow
on:
pull_request:
起動タイミングを指定
● Pull Request作成、更新
● git push
● 他ワークフローから呼び出し
● Issue作成、コメント
● 手動実行
● 定時実行
jobs:
sample-job:
︙
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Get a random value
id: random
run: echo "val=$RANDOM" > "$GITHUB_OUTPUT"
- name: Print the value
run: echo "${{ steps.random.outputs.val }}"
name: Sample workflow
on:
pull_request:
実行するマシン・ OSを指定
●
●
●
●
Ubuntu
Windows
MacOS
自分で用意したマシン
jobs:
sample-job:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Get a random value
id: random
run: echo "val=$RANDOM" > "$GITHUB_OUTPUT"
- name: Print the value
run: echo "${{ steps.random.outputs.val }}"
name: Sample workflow
on:
pull_request:
実行ステップ
●
●
シェルコマンド
外部アクション
○ GitHub公式 (actions/…)
○ 3rd party
jobs:
sample-job:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Get a random value
id: random
run: echo "val=$RANDOM" > "$GITHUB_OUTPUT"
- name: Print the value
run: echo "${{ steps.random.outputs.val }}"
name: Sample workflow
on:
pull_request:
各ステップは同じマシンの別プロセスで実
行
jobs:
sample-job:
● 変数は引き継げない
● ファイルは引き継げる
runs-on: ubuntu-latest
● $GITHUB_OUTPUT に出力したデー
steps:
タは引き継げる
- name: Checkout code
uses: actions/checkout@v4
- name: Get a random value
id: random
run: echo "val=$RANDOM" > "$GITHUB_OUTPUT"
- name: Print the value
run: echo "${{ steps.random.outputs.val }}"
GitHub ActionsでPHPを使う
Step1: PHPをインストール shivammathur/setup-php を使う steps: - uses: shivammathur/setup-php@v2 with: php-version: '8.3' extension: swoole tools: php-cs-fixer, phpunit
Step2: composerパッケージをインストール ramsey/composer-install を使う ● ● キャッシュをいい感じに効かせてcomposer installしてくれる composerコマンドはsetup-phpがインストールしてくれてる
Step3: 各種ツールを実行 ● ● ● コマンドを叩くだけ ○ vendor/bin/phpunit ○ composer lint 終了ステータス != 0 ならジョブ失敗と判定される エラー内容をPull Requestのコメントに反映とかすると◎ ○ https://speakerdeck.com/o0h/phperkaigi-2022-cs2pr ○ https://zenn.dev/peraichi_blog/articles/01fy360dgteynbfv5tj3q6smv5
番外編: PHPをインストールせずに使う GitHubが用意しているUbuntuのイメージにはPHPがインストール済み シェルスクリプトの代わりに使う程度ならsetup-phpなしでもOK OS PHP ubuntu-20.04 7.4 ubuntu-22.04 8.1 ubuntu-24.04 8.3
番外編: PHPをインストールせずに使う
steps:
- name: Do something
shell: php {0}
run: |
<?php
echo "hoge", PHP_EOL;
file_put_contents(getenv('GITHUB_OUTPUT'), 'result=fuga');