GitHub Actionsでカバレッジを表示するハンズオン
環境構築
connpass-clientをforkします
https://github.com/fin-py/connpass-client にアクセスし、 Fork
をクリックします
Create fork
をクリックします
forkしたリポジトリから Settings
-> Actions
-> Workflow permissions
から Read and write permissions
を選択して Save
します
forkしたリポジトリをclone し、カレントディレクトリを移動します
git clone git@github.com:<your github account>/connpass-client.git
cd connpass-client
仮想環境にインストール
Attention
Poetryを使う場合は Poetryを使って仮想環境にインストール に進んでください。
仮想環境を作成します。実行環境の合わせて python
は python3
などに置き換えてください。
python -m venv .venv
Note
Windwsの場合は py
コマンドから仮想環境を作成します。
py -m venv .venv
仮想環境を有効化します。
source .venv/bin/activate
Note
WindwsでPowerShellを使う場合、スクリプトの実行許可を与えていない場合は次のコマンドを1回だけ実行します。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
仮想環境を有効化します。
.venv\Scripts\activate
パッケージをインストールします。
python -m pip install pip -U
pip install . pytest coverage pytest-cov "genbadge[coverage]"
Poetryを使って仮想環境にインストール
Caution
仮想環境にインストール の手順を実施している場合は以降の手順は不要です。
virtualenvs.in-project
の設定を確認します。
poetry config --list
virtualenvs.in-project = true
になっていなければ、仮想環境をカレントディレクトリに生成する設定にします(オプション)。
poetry config --local virtualenvs.in-project true
Note
virtualenvs.in-project
の設定をグローバルにするには --local
を省略します。
poetry config virtualenvs.in-project true
Poetryの環境にインストールします。
poetry install
Poetryの環境を有効化します。
poetry shell
はじめてのGitHub Actions
GitHub Actions のクイックスタート の手順に従って、GitHub Actionsを実行してみます
.github/workflows
ディレクトリを作成します
mkdir -p .github/workflows
.github/workflows/github-actions-demo.yml
ファイルを作成し、下記の内容を記述します
1name: GitHub Actions Demo
2run-name: ${{ github.actor }} is testing out GitHub Actions 🚀
3on: [push]
4jobs:
5 Explore-GitHub-Actions:
6 runs-on: ubuntu-latest
7 steps:
8 - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
9 - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!"
10 - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
11 - name: Check out repository code
12 uses: actions/checkout@v3
13 - run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
14 - run: echo "🖥️ The workflow is now ready to test your code on the runner."
15 - name: List files in the repository
16 run: |
17 ls ${{ github.workspace }}
18 - run: echo "🍏 This job's status is ${{ job.status }}."
See also
コミット、プッシュします
git add .
git commit -m "Add Github Actions example"
git push orgin main
ブラウザからforkしたリポジトリにアクセスし、 Actions
からワークフローの結果を確認します
ワークルフローをクリック
ジョブ( Explore-GitHub-Actions
)をクリック
GitHub Actionsによるカバレッジの実行
ここでは次の内容をGitHub Actionsを利用して実行します
カバレッジのレポートを生成(HTML、XML)
XMLファイルをもとに、カバレッジのバッジを生成
レポート(HTML)とバッジを
coverage
ブランチにコミット・プッシュ
YAMLファイルの作成
.github/workflows/coverage.yml
ファイルを作成し、下記の内容を記述します
1name: coverage
2on:
3 push:
4 branches: [ main ]
5env:
6 BRANCH_NAME: coverage
7jobs:
8 generate-coverage:
9 runs-on: ubuntu-latest
10 steps:
11 - name: checkout
12 uses: actions/checkout@v3
13 - name: pip install
14 uses: actions/setup-python@v3
15 with:
16 python-version: '3.10'
17 - run: |
18 python -m pip install --upgrade pip
19 python -m pip install pytest coverage pytest-cov "genbadge[coverage]"
20 - name: genarate coverage and badge
21 run: |
22 pytest --cov=connpass_client tests
23 coverage html
24 mv htmlcov/* .
25 coverage xml
26 genbadge coverage -i - < coverage.xml
27 - name: commit and push
28 run: |
29 git config --local user.email "actions@github.com"
30 git config --local user.name "GitHub Actions"
31 git fetch origin $BRANCH_NAME && git push --delete origin $BRANCH_NAME
32 git checkout --orphan $BRANCH_NAME
33 git rm -rf .
34 git add .
35 git commit -m "generate coverage"
36 git push origin $BRANCH_NAME
2on:
3 push:
4 branches: [ main ]
main
ブランチにプッシュされた場合に、ワークフローにトリガーされます
See also
6env:
7 BRANCH_NAME: coverage
環境変数 BRANCH_NAME
に coverage
を設定しています
See also
12 uses: actions/checkout@v3
このステップで actions/checkout@v3 を実行します
リポジトリをランナーにチェックアウトするアクションであり、コードに対してスクリプトまたはほかのアクション (ビルド、ツールやテスト、ツールなど) を実行できます
See also
14 uses: actions/setup-python@v3
15 with:
16 python-version: '3.10'
このステップで actions/setup-python@v3 を実行します
このアクションは、GitHub Actionsのユーザーに対して、次の機能を提供します
PythonまたはPyPyのバージョンをインストールし、(デフォルトで)PATHに追加
オプションでpip、pipenv、poetryの依存関係をキャッシュ
エラー出力のためのプロブレムマッチャーを登録
23 coverage html
24 mv htmlcov/* .
25 coverage xml
Coverage.py を利用してカバレッジのレポートを生成しています
coverage html
コマンドでカバレッジのレポートをHTML形式に出力します
See also
coverage xml
コマンドでカバレッジデータを Cobertura と互換性のあるXML形式に出力します
See also
26 genbadge coverage -i - < coverage.xml
genbadge を利用してバッジを生成します
31 git fetch origin $BRANCH_NAME && git push --delete origin $BRANCH_NAME
$BRANCH_NAME
ブランチを確認し、ブランチが存在している場合は削除します
32 git checkout --orphan $BRANCH_NAME
空の $BRANCH_NAME
ブランチを生成します
ワークフローの実行
コミット、プッシュします
git add .
git commit -m "Add Github Actions coverage"
git push orgin main
ブラウザからforkしたリポジトリにアクセスし、 Actions
からワークフローの結果を確認します
リポジトリの Code
に移動し、 coverage
ブランチがあることを確認します
coverage
ブランチに coverage-badge.svg
が作成されていることを確認します
GitHub Pagesの設定
リポジトリの Settins
-> Pages
から Branch
を coverage
、 /(root)
に変更して、 Save
します
Actions
で pages build and deployment
が実行されたことを確認します
deploy
に表示されているリンク( https://<your github account>/connpass-client/
)を開き、カバレッジがHTMLで表示されることを確認します
READMEに追加
README.md
2行目以降に次の行を追加します
[](https://<your github account>.github.io/connpass-client/)
コミット、プッシュしてREADMEにバッジが表示されていることを確認します