【超小ネタ】CircleCIへのssh接続にハマった

 

GitHubのCIにCircleCIを使っていて、途中でjobが失敗した時CIの中身見たくてsshで接続したくなりますよね💡
例えば、「ディレクトリ配置うまくいってるかなー」「このパッケージちゃんとインストールされてるかな」とか… 🤔

その時、わたしがハマったポイントとしては、、、

\ ssh接続に使うid_rsaはGitHubのもの /

ということでした!

 

1.Rerun Job with SSHする

 

2. 出力されたIPにssh接続する 👈ここでハマった

↑に表記されている通り$ ssh -p 64535 [IP]とするとpermission deniedになってしまい、ssh接続できずハマっていました。

$ ssh -p 64536 [IP]
The authenticity of host '[IP]:64536 ([IP]:64536)' can't be established.
ED25519 key fingerprint is SHA256:xxxxx.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[IP]:64536' (ED25519) to the list of known hosts.
user@[IP]: Permission denied (publickey).

 

私のローカルでは、GitHubのid_rsaを~/.ssh/id_rsa_githubに置いてます。
そのため-i ~/.ssh/id_rsa_githubで指定してあげるのが正解でした😇

ssh -i ~/.ssh/id_rsa_github -p [発行されたport] [発行されたip]

 

Use the same SSH public key that you use for your VCS-provider (e.g., GitHub).
と親切に説明してくれてるのを、素直に受け止めればこんなことにはならなかったでしょう…

 

Travis CIで自動テスト(PHPUnit)をしてもらう。〜 入門編〜

やっと、テストコード…PHPUnitの使い方をわかってきた今日この頃です。
さらに、テストは自分でもやりますが、コミットしたら勝手にテストしてくれるCIがいると、頼れるうって思います。


↑これを(「passing」になってるのを)README.mdに貼りたかっただけなんですけどね!!

ということで
PHPUnit と Travis CI
の使い方を書きたいと思います。(自己流)

https://github.com/kin29/ci-test ←ここにソース置いています。

PHPUnit

テストコードにそって、テストしてくれるツール。

Travis CI

テスト/ビルド環境を作ってくれるツール。
ただし、環境を用意してくれるだけなのでビルド/テスト内容は「.travis.yml」に記述しなければならない。
CIツールの代表的なものである、Jenkinsさんはテストのための環境構築が必要となるが、その手間が省ける。(=>SaaS)

実践!GithubでコミットしたらTravisCIに自動でテスト(PHPUnit)をしてもらう。

PHPUnitの準備

$ mkdir ci-test 
$ cd ci-test/

composer.json をつくる。composer initだと対話式でできます。
依存関係も適切に設定してくれるので、自分で生にcomposer.json書くより安全な気がします。
今回でいうとPHPとPHPunitのバージョン関係もここでいい感じにしてくれました。

$ composer init
                                            
  Welcome to the Composer config generator  
                                          

This command will guide you through creating your composer.json config.

Package name (/) [kin29/ci-test]:
Description []: it is ci-test.
Author [kin29 <kin29.com@gmail.com>, n to skip]: 
Minimum Stability []: 
Package Type []: 
License []: MIT

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]? 
Search for a package: php
Enter the version constraint to require (or leave blank to use the latest version): >=7.0.0
Search for a package: 
Would you like to define your dev dependencies (require-dev) interactively [yes]? 
Search for a package: phpunit/phpunit
Enter the version constraint to require (or leave blank to use the latest version): 
Using version ^7.3 for phpunit/phpunit
Search for a package: 

{
    "name": "kin29/ci-test",
    "description": "it is ci-test.",
    "require": {
        "php": ">=7.0.0"
    },
    "require-dev": {
        "phpunit/phpunit": "^7.3"
    },
    "license": "MIT",
    "authors": [
        {
            "name": "kin29",
            "email": "kin29.com@gmail.com"
        }
    ]
}

Do you confirm generation [yes]? 
Would you like the vendor directory added to your .gitignore [yes]? 

$ ls
composer.json   //できた!!autoloadとかはあとで追加する。
$ composer install
$ ls
composer.json   composer.lock   vendor
$ vi composer.json  //autoload追加
//以下を追記
  "autoload": {
      "psr-4": {
            "App\\": "src/"
        }
  },
  "autoload-dev": {
      "psr-4": {
            "Test\\": "tests/"
      }
  }
$ composer update   //autoloadを適用させる
//実装とテストを書く。構成こんな感じ
$ tree src/ tests/ bootstrap.php
src/
└── Kin29.php
tests/
└── Kin29Test.php
bootstrap.php 

0 directories, 2 files
//phpunit.xmlを作る。
$ vi phpunit.xml

<phpunit bootstrap="./bootstrap.php">
    <testsuites>
        <testsuite name="Ci Test">
            <file>tests/Kin29Test.php</file>
        </testsuite>
    </testsuites>
</phpunit>
//テスト実行→成功!
//これを、コミットした時、自動でテスト実行してもらうようにする(→CIの役目)
$ phpunit tests/
PHPUnit 7.2.4 by Sebastian Bergmann and contributors.

.                                                                   1 / 1 (100%)

Time: 296 ms, Memory: 10.00MB

OK (1 test, 1 assertion)

Travis CIの準備

$ vi .travis.yml //ビルド・テストの設定ファイルを作成
language: php
php:
 - 7.1
 - 7.2

before_script:
 - composer install

script:
 - phpunit tests/
$ git add .
$ git commit -m 'travis-ci,phpunit追加'
$ git push origin master

ビルド・テスト開始!!!

Githubのリポジトリにコミットすると、ビルド・テストが始まります。
↑trigger word設定で変更可能です。

「passing」になれば、テスト合格です!
「failed」になってもコンソールのログが見れるので、原因を突き止めやすいです!
PHPとPHPUnitのバージョンがあってないって、何回も言われました。
CIが自分では知らないことも気づいてくれて教えてくれて助かります。