Travis CIでS3に自動デプロイ

前回の続き

1. AWSマネジメントコンソールにログイン
2. S3を選択
3. 「バケットを作成する」押下
バケット名は何にしましょう。とりあえず「travisci-s3」としておきます。

4. デプロイ用のIAMポリシーを作成
ん? IAM? IAMは確かユーザとロールだった筈。json形式で記載する。

IAM Management Consoleを開きます

あああああああああああああああ、S3のIAMポリシーの作成方法がわからんーーーー

Travis CIを使ってみよう

まず、githubでリポジトリをつくります。
適当に「travis-s3」としておきましょう。

リポジトリにファイルを作成

<!DOCTYPE html>
<html lang="ja">
<head>
	 <meta charset="UTF-8">
	 <title>エンジニアの名言</title>
	 <meta name="viewport" content="initial-scale=1.0,width=device-width">
</head>
<body>
  <p>おしゃべりはいいから、お前のコードを見せろ</p>
</body>
</html>

vagrantに入ります
deployというディレクトリにいます。ここで作業すると仮定しましょう。

前準備ができました。それでは、いよいよTravisに触っていきましょう^^

Github Marketplaceを押下します。

ページ中段のApps with free trialsでTravis CIをクリックします。
続いて、ページ中断のpricing and setupで、デフォルトで$69となっているので、Open sourceをselectし、install it for freeを選択します。

こんな感じの画面。見やすいですね。

リポジトリの選択画面になるので、先ほど作った「travis-s3」を選択します。

インストールすると、Travis CIのページにリダイレクトされます。

認証画面が出てくるので、「Authorize travis-pro」を押下します。

Git hubのレポジトリと連携したTravis CIのページが表示されます

ちょっと長くなったので、続きは次回。

Travis CIの使い方

まず、Travisの公式サイトを見てみましょう。
https://travis-ci.com/
Features to help you get the job done
– quick setup
– live build views
– pull request support ☆
– pre-installed database services
– auto deployments on passing builds ☆
– clean VMs for every build
– Mac, Linux, and iOS support

やりたいのに星(☆)をつけました。ずばりauto deployments

フローが書いてありますね。

イメージとしてはBranch build flowがイメージしやすいか。
Branch build flow
-push code to Github
-github trigger
-build passes
-Travis CI deploys to server
-Travis CI tells team all is well
pushしてテストにパスすると自動でデプロイされる。
なるほど、なかなか良い。
概要は大体イメージできたので、早速やってみましょう。

Trvis CI

どうやら失敗したようです。

0.55s$ git clone --depth=50 --branch=chat https://github.com/githubix/bengoshi_chat.git githubix/bengoshi_chat
Cloning into 'githubix/bengoshi_chat'...
remote: Counting objects: 50, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 50 (delta 0), reused 2 (delta 0), pack-reused 47
Unpacking objects: 100% (50/50), done.
$ cd githubix/bengoshi_chat
$ git checkout -qf db05fb4b37219f42856c6148d96e13a6fbde87a5
Disabling Gradle daemon
$ mkdir -p ~/.gradle && echo "org.gradle.daemon=false" >> ~/.gradle/gradle.properties
rvm
4.10s$ rvm use default
Using /home/travis/.rvm/gems/ruby-2.4.1
** Updating RubyGems to the latest version for security reasons. **
** If you need an older version, you can downgrade with 'gem update --system OLD_VERSION'. **
ruby.versions
$ ruby --version
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
$ rvm --version
rvm 1.29.3 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]
$ bundle --version
Bundler version 1.16.2
$ gem --version
2.7.7
No Gemfile found, skipping bundle install
0.15s$ rake
rake aborted!
No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)
/home/travis/.rvm/gems/ruby-2.4.1@global/gems/rake-12.3.0/exe/rake:27:in `'
(See full trace by running task with --trace)
The command "rake" exited with 1.
Done. Your build exited with 1.

.travis.ymlがnullだったからでしょうか。

yamlを書きます。

language: php

php:
  - 5.6
  - 5.7
  - hhvm

before_script:
  - curl -s http://getcomposer.org/installer | php
  - php composer.phar install --dev --prefer-source

script:
  - mkdir -p build/logs
  - phpunit --coverage-clover build/logs/clover.xml --configuration tests/phpunit.xml tests

after_script:
  - php vendor/bin/coveralls -v

notifications:
  slack:
    rooms:
      secure: your_token_key

TravisCI 画面

なるほど、こういうことか。テスト内容をyamlに書いて、rubyが実行するのね。それをslackなどに送付することも可能。