Github Actions


# Github ActionsでCIしよう！
11月13日から、GithubはActionsと言う機能をリリースしました。
そのActionsは簡単なCIを使いたいチーム向けです。YAMLファイルを作ると、コードをプッシュした時か、プルリクエストをオープンするときに、Githubは自動にCode Styleのチェックして、ユニットテストを起動する。

この記事でDjangoのチュートリアルのアプリを使います。
https://docs.djangoproject.com/en/2.2/intro/tutorial01/

まずはGithubのプライベートリポジトリを作りましょう
<img width="500" alt="Screen Shot 2019-12-20 at 10.10.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/7c776ee8-d645-1030-1fde-49d9eb3661a5.png">

<img width="500" alt="Screen Shot 2019-12-20 at 10.20.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/394a7c81-a426-094c-5192-b6d93c580971.png">

Guacamole 完了！やった！![guacamole.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/ab6eea81-4ffc-336d-c2e2-9e46ead7a097.jpeg)


これでターミナルをオープンして、ローカルリポジトリを作る

```
django-admin startproject super_duper_guacamole
git init
touch requirements.txt
echo ‘django==3.0.1’ > requirements.txt
```
これをした後で、かんたんなテストファイルを作りましょう
tests.py と言うファイルを作って、そのファイルに次のコードを使いましょう

```
from django.test import TestCase
    

class testCase(TestCase):
      def test_test(self):
            return True
```

```
git add .
git commit -m “first commit”
git remote add origin https://github.com/<username>/super-duper-guacamole.git
git push -u origin master
```
<img width="600" alt="Screen Shot 2019-12-20 at 15.36.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/346e12d1-7f55-40c8-3352-5719db1ca24c.png">
これで、DjangoのサンプルプロジェクトをGithubにプッシュしました。
その後、Actionsをクリックして、Python application を選択して、pythonapp.ymlが自動で作ります。これでプルリクエストをオープンしましょう。
<img width="1666" alt="Screen Shot 2019-12-20 at 15.39.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/263721ff-9f5e-c8ff-338f-c06eee53e3bc.png">
/!\ pytestの設定はここにしませんのでその代わりに、
python manage.py test でテストを起動します /!\
これでGithubは自動でビルドを起動する。<img width="600" alt="Screen Shot 2019-12-20 at 15.56.19.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/06922373-6055-f661-7367-8d50e5af0d92.png">
<img width="800" alt="Screen Shot 2019-12-20 at 15.43.54.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/830e6142-6885-c8c1-cbf6-54da5d7249bb.png">

# Private Submoduleがある時にどうすれば良い？

## Submoduleを加う

まずは新しいPrivate Repository を作りましょう
<img width="725" alt="Screen Shot 2019-12-20 at 15.48.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/78e03127-bfed-0cc2-072c-d04c469e2690.png">
<img width="500" alt="Screen Shot 2019-12-20 at 17.24.08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/fd36f654-0815-6a8a-0943-7b40d14b2f2c.png">
やった！ミュジカルパンケーキを作った！
![musical pancake.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/70c6d487-23ec-fc3f-a46a-44401157b42f.jpeg)


この後 super-duper-guacamoleに戻って、submoduleを加えましょう。

```
git checkout -b add_submodule && git push -u origin add_submodule
git submodule add https://github.com/<username>/musical-pancake.git
git commit -m “added musical pancake”
git push
```
その後Githubでpythonapp.ymlのファイルにSubmoduleのCheckoutを加えて、プルリクエストをオープンしましょう。
<img width="259" alt="Screen Shot 2019-12-20 at 17.17.36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/ca5c86e1-f879-65ef-25f4-a778c6629ec3.png">
<img width="500" alt="Screen Shot 2019-12-20 at 17.33.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/9fa75f73-b3f1-831f-caa0-b291877fb24e.png">
<img width="1000" alt="Screen Shot 2019-12-20 at 17.31.40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/07faca79-5b76-11ff-5f8a-b901bf76b568.png">

ビルドが失敗した！
その理由は、ビルドする環境が認証情報が無いです。
Github ActionsをPAT(Personal Access Token)をあげれば、Private RepositoryのSubmoduleをプルできるになります。
<img width="1000" alt="Screen Shot 2019-12-20 at 17.38.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/329ee124-2c81-340a-7186-e1e05b25b0f7.png">
Generate new token をクリックして、新しいトークンが作られる
repoをチェックしてね！
<img width="764" alt="Screen Shot 2019-12-20 at 18.48.14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/8164bff4-cca2-c259-e1b8-8f4e82cc268f.png">
<img width="752" alt="Screen Shot 2019-12-20 at 17.42.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/af94568e-884f-e3ee-8964-eb4030d7442e.png">
## PATができた！でも今どうやって使えるか？
super-duper-guacamoleに戻ってSettingsタブでAdd a new secret をクリックして、PATを登録しましょう！
<img width="500" alt="Screen Shot 2019-12-20 at 17.47.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/46af7f0f-3f9a-a5b2-c396-475a19f6ed64.png">

もうすぐ終わる！最後にステップは、そのSecretをpythonapp.ymlに加えましょう。
<img width="332" alt="Screen Shot 2019-12-20 at 17.58.04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/e61918b2-310f-974f-ad9f-d107c2c966e6.png">
<img width="764" alt="Screen Shot 2019-12-20 at 17.57.36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/366f2991-5456-9dc0-abb8-62b59aacdd82.png">
やった！ビルドが成功した！
これでGithubで自動でCode Styleチェックとユニットテストを自動で起動できる！

長かった。。。疲れた。。。おやすみなさい！
![tired cat.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554491/ec1d026a-4509-db9b-e4ed-100570e7c7fa.jpeg)