【GitHub Actions】CIを使って毎日自動でGitHubに草を生やそうｗｗｗ

# 【GitHub Actions】CIを使って毎日自動でGitHubに草を生やそうｗｗｗ

タイトルに草が生えてますし内容もネタですが、文章の調子は至って真面目な記事にする予定です。

分かる人は以下の

- fork する https://github.com/ykhirao/write-code-everyday-bot/
- GitHub Actionsを使えるように申請する(30分くらい)
- `touch .github/workflows/blank.yml` して後に記載のyamlファイルをpushする

以上で、なんとなくわかる方は以降の記事は読まなくても大丈夫かと思います。

```.github/workflows/blank.yml
name: CI

on:
  schedule:
  - cron: 0 0 * * * #JSTで9時
  push: # 一度動作確認してActionsが動きそうならオフにする

jobs:
  build:

    runs-on: ubuntu-latest
    
    steps:
    - uses: actions/checkout@v1
    - name: Run a one-line script
      run: echo Hello, world!
    - name: Run a multi-line script
      run: |
        echo Add other actions to build,
        echo test, and deploy your project.
        git config user.name "ykhirao-bot"
        git config user.email "yk@example.com"
        git remote set-url origin https://ykhirao:${{ secrets.GITHUB_TOKEN }}@github.com/ykhirao/write-code-everyday-bot-fork
        git branch
        git checkout master
        git branch
        ./omikuji.sh >> README.md
        git add .
        git commit -m "update!"
        git push origin master
```

## 前提条件確認

### 1. 草とは

こういう[GitHubの個人ページ](https://github.com/ykhirao)に行った時に表示される、いつどれくらいコミットされてるかわかるので、エンジニアの技術評価に使われていたりする。

<img width="819" alt="スクリーンショット 2019-09-26 13.01.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112929/28f13848-ff74-e920-b95b-ad2d3c700371.png">

エンジニア系のHRサイトだと以下のようなところがGitHubのデータ解析してポイントつけてくれたりするので面白いかも。

- https://lapras.com/
- https://findy-code.io/

**⚠⚠今回私が紹介する方法でコミット数だけ増やしても実力は何も変わらないのでネタだと思ってください**
**⚠⚠エンジニア採用する会社さんもコミット数が多い人を採用するのではなく、ちゃんとどういうレポジトリにコミットしているとか、ちゃんと面談で聞いていくのがいいのではないかなと思います**

### 設計確認

- 毎朝9時に占いをして、その結果をREADME.mdにコミットする
- それをPushする

![名称未設定.001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112929/7bd0d3ac-87ae-1c91-b047-c0c834913baf.jpeg)

簡単ですね。

### これを読んで得ること

- スケジュールでいろんなスクリプトをフックできる環境が手に入る
    - 毎月何かを実行したり、毎日運勢をSlackに送ったり…？
- GitHub Actions少し詳しくなる
- CircleCIなどにも応用できるので いわゆる `CI/CD` という分野のことが少しわかる

比較的初心者向けに書いていきますが、ある程度は省いていきます

### 間違いを見つけたとき、動かないとき
自分でデバックするか、このQiitaに編集リクエストくれると嬉しいかもです… :pray: 

## さて、毎日コミットする環境を作りましょう！！！！

ここからが本編です。

### 1. forkする

- 私のGitHubのページに行ってレポジトリをforkしてきてください
https://github.com/ykhirao/write-code-everyday-bot/

<img width="1073" alt="スクリーンショット 2019-09-26 13.53.25.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112929/7a764d2e-7a63-e9fc-73d6-8b2b6ff013ec.png">

ここの `Fork` というのを押して自分のGiｔHubへコピーします。

### 2. GitHub Actionsを有効にする

GitHub Actionsが有効になっていない人は有効にするために申請する。私の場合は夜中に30分待ちました。JST23時ころ。

<img width="1092" alt="スクリーンショット 2019-09-26 12.58.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112929/6efe5c20-3a3e-3455-76fa-ec2feb130e3e.png">

### 3. GitHub Actionsを設定する

<img width="1386" alt="スクリーンショット 2019-09-26 14.02.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112929/c588abca-942c-bfd1-b0c0-3f56b808d05b.png">

`Set up this workflow` をクリックする

<img width="1388" alt="スクリーンショット 2019-09-26 14.04.43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112929/b7ecb994-e347-fd05-6d0c-3fff8f12da79.png">

左側の編集画面に何も考えずに以下の文章を貼り付ける

```yml
name: CI

on:
  push: # 一度動作確認してActionsが動きそうならオフにする # オフにしないとpushの無限ループにおちいるよ。
#   schedule:
#   - cron: 0 0 * * *

jobs:
  build:

    runs-on: ubuntu-latest
    
    steps:
    - uses: actions/checkout@v1
    - name: Run a multi-line script
      run: |
        echo Add other actions to build,
        echo test, and deploy your project.
        git config user.name ${NAME}
        git config user.email ${EMAIL}
        git remote set-url origin https://${NAME}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repos }}
        git branch
        git checkout master
        git branch
        ./omikuji.sh >> README.md
        git add .
        git commit -m "update!"
      env:
        NAME: ${{ github.actor }}
        EMAIL: yk@example.com
        REPO: write-code-everyday-bot
```

そしてコミットするとpushに反応して、CIが動き出す。

<img width="1529" alt="スクリーンショット 2019-09-26 14.22.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112929/5d78351e-f17e-d621-98f0-49611cdbaff9.png">

<img width="1526" alt="スクリーンショット 2019-09-26 14.23.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112929/d50d0872-841a-f836-b4f6-2bf341711b25.png">

失敗してたらこのあたりに出てくるので、確認してみてください。たぶんパスワードがなくて失敗とかありそう。

## 最後に

CircleCIとかまともに設定いじったことなかったので、初めてのCIでした。すごく楽しかったのでまたスケジュールでhookできる面白そうな何かがあれば触ってみたいなと思ってます！！！

ここまで読んでいただきありがとうございました！

## 参考にした資料

- [シェルスクリプト(bash)のif文とtestコマンド([])自分メモ - Qiita](https://qiita.com/toshihirock/items/461da0f60f975f6acb10)

- [ユー。今年の運勢占っちゃいなよ！ |](http://blog.adjust-work.com/711/)


.