This is my life.

There are many like it, but this one is mine.

GitHub Actions のワークフローで Go 1.11 Modules のキャッシュを扱う

GitHub Actions で Golang の vet と test を実行したいと思います。 ( ※実際には Go 1.10 からは go test の前に go vet が実行されますが、2つ以上のコマンドを実行したい場合を想定しています。) ワークフローを以下のように定義しました。 workflow "v…

GitHub Actions で利用するDockerfileについて考える

最近 GitHub Actions を色々と試しています。 GitHub Actions で使う Dockerfile や対象リポジトリのディレクトリ構成についてちょっと考えてみました。 DockerfileにおけるADD GitHub Actions では、イベントの発生直後にDockerイメージのビルドを行うよう…

GitHub Actions で Pull Request のチェックをする

前回の記事 で GitHub Actions を使って push の度に test を動かす方法を紹介しました。 今回は、 Pull Request で実行する Workflow を作ってみたいと思います。 (2018/12/24 現在、 Pull Request での実行は private repository のみでの提供となっていま…

GitHub Actions で push の度にテストを動かす

GitHub Actions が public repository でも使えるようになりました! (2018/12/24現在まだ public beta 版での提供です。) 早速、現在アクティブに開発しているリポジトリで試してみました。 対象のリポジトリには既に以下の様な Dockerfile があります。 FR…

Spring Boot WebアプリケーションをCI上でスモークテストする

CI

機能も作り込んだ。テストもオールグリーン。さあ張り切ってみんなの前でデモするぞ... $ ./gradlew bootRun ... エラー ってこと、ありませんか? 僕はありました。 できるだけ実行コストをかけないように、ユニットテストではSpringに依存しないようにして…

Golang で CI を作っている話

前回の記事 で CI サーバーを作った話をしました。 ペライチ300行だったコードはコミットを重ね、少しずつ大きくなってきています。 github.com リポジトリの名前も minimal-ci から duci に変えました。命名はお世話になっている先輩です。 コンセプト CIは…

ペライチ300行弱のコードで簡易CIサーバーを作った

皆さんはゴールデンウィークいかがお過ごしでしょうか。 僕は暇すぎたので雑にCIサーバーのようなものを作ることにしました。 github.com CIサーバーを運用する際の悩みとして、サーバーの環境構築が挙げられます。 色々なプロジェクトでは言語や依存するサ…

Nginx の Webdav でデプロイ時のみパスワードが必要な Mavenリポジトリ を立てる

前回の記事で JitPack を使えば Mavenリポジトリ を立てる必要すらないっていう話を書いたのですが、 クローズドな環境では外部サービスの利用が難しい場合があります。 そこで、今回は Nginx を使ってサクッと Mavenリポジトリ を立ててみます。 さらにリポ…

Mavenライブラリ配布の自動化をやめた話

この記事は モバイル 自動化/自動テスト Advent Calendar 2017 の19日目です。 皆さんは、JavaやKotlinで作成したライブラリ、加えてGradleプラグインの配布について悩んだことはないでしょうか。 クロスプラットフォームな開発環境も増えましたが、Android…

iOSDCで当日スタッフ & LTトークしてきました

i will blog. 全写真です。ご査収ください! #iosdc 前夜祭https://t.co/bDZi3cbgQM1日目https://t.co/DXQSr3xyx42日目https://t.co/25tEGJRrZAみんなのアルバムhttps://t.co/nEuFBpBZaD— iOSDC (@iosdcjp) 2017年9月21日 こちらのiOSDCの写真をみてたんです…

GitHubと各種CIサービスを連携してみる

普段GitHubを使っていて、Travis CIと連携してバッヂをつけたりしています。 Pull Requestが来たときなんかも自動でビルド・テストをしてくれるので便利ですよね。 今回は、自分でサーバーを用意せず利用できるCIとGitHubを連携してみました。 今回ご紹介す…

Dangerプラグインを作ろう

Danger 最近流行りつつある? Danger です。 Pull Request に対して色々チェックできるようになります。 先月末にポツポツと紹介記事が出ました。 cookpadさんの記事 Recruit Jobsさんの記事 Node版のDangerJSは こちらの記事 が詳しいです。 Dangerとても便…

Dangerを使ってみる

Danger What is Danger? CI上で、バージョン管理ホスティングサービス の Pull Request / Merge Request の内容を解析して、コメントすることができるツール。 設定ファイルは Ruby DSL で記述するので、様々なチェックができる。 サポート状況 サポート状況…

JJUG CCC 2016 Fallに行ってきました

JJUG CCC 2016 Fallに行ってきました。 何回か参加させていただいて、いつも電車で行ってたのですが、今回は車で行きました。 伊豆から新宿、高速使うと近い近い。 家帰ってから見たら、新宿まで行ったのに全然歩いていませんでした。 さて、聞いたセッショ…

Perl6のコンストラクタと継承

view_gist('animal.pm') view_gist('bird.pm') view_gist('main.pl') Perl5にはクラス構文がありません。 モジュール名で bless された リファレンスをインスタンスとして扱うことができます。 ハッシュリファレンスまたは無名ハッシュを bless した場合、キ…

DBUnitでxmlからインサートするときに最初のレコードでnullを指定したい

DBUnitが便利ですね。 Spring Bootにおけるテストでは以下のように書けば毎回データセットをインサートしてくれます。 view_gist('string.java') 最初のレコードでnullを指定したい場合にちょっと戸惑いました。 二つ目以降のレコードに null を指定したい場…

Perl6でprivateなメンバにコンストラクタで値を渡したい

※ 追記あり Perl6でprivateなメンバを作ったときに、コンストラクタで値を渡せなくてちょっとハマったのでメモ。 publicなメンバを設定する場合、 view_gist('public.pl6') メンバ変数の $ の後に . をつけることで、アクセッサが自動的にできます。 インス…

ウェブでログインが必要なルーチンワークをPythonスクリプト書いてJenkinsさんに実行してもらう

最近、ルーチンワークを少しずつ自動化しています。 ウェブをチェックするようなルーチンはスクレイピングを行うのですが、ログインなどのブラウザ操作が必要な場合もあります。 ブラウザ操作が必要な場合でも自動化するのが今回の目標。 Python + Selenium…

GmailをSlackに通知するPerlスクリプトを書いた

チームSlackを導入してしばらくたったのですが、 まだ一部のやり取りはメールで行っています。 この通知をまとめたい場合、SlackにはEmail連携が用意されています。 Slack便利。 が、これは有料版でしか使えません。 メールクライアントソフト使えばいいかも…

Gitで試行錯誤したコミットをまとめたい

git

GitとCIサービスを連携していて、CIサーバの設定がうまくいかなくて何度もコミットしちゃうことありますよね。 amend をつけててもリモートリポジトリに push する段階でマージを余儀なくされたり。 --force で push すればよいのですが、あとから一連のコミ…

Spring BootプロジェクトをIntelliJでJUnitするときプロファイルを指定したい

あー、やっぱphantomjsやと失敗かー。— Shunsuke Maeda (@duck8823) 2016年8月13日 Spring Bootを使って開発してますが、Selenideによる画面テストを実施する際、ローカルではFirefox、CIサーバ上ではphantomjsドライバを使ってテストしています。 また、ロ…

Redmineプラグインを作ってみた

業務における運用作業をRedmineで管理することになったのですが、そのままでは非常に使いにくい気がしたのでプラグインを作成することにしました。 運用作業をチケットとして管理するには チケットを作成する チケットの進捗率を変える チケットのステータス…

Bash on Ubuntu on Windows でアレコレ

8月1日、僕はとても楽しみにしていました。それは遠足の前日の小学生のよう。 8月2日のWindows Anniversary Update で Windowsで Bash が使えるようになるんです。 8月2日は何度もアップデートを確認してしましました。ポケモンGoの公開前みたいに。 そう、…

Re:ゼロから始めるフロントエンド開発

約3週間前・・・。 明日からフロントもいじってくでー。— Shunsuke Maeda (@duck8823) 2016年6月6日 てことで、フロントエンドの開発に取り掛かりました。 これまでのフロントの開発経験は、 テンプレートエンジン(JSP、Velocity) jQuery CSS Struts の Ti…

perlでSlackの雑談Bot作ってみた

前回の記事でperlでSlackのbotを作ることができるモジュールを紹介しました。 今回はこれを使って雑談Botを作ります。 雑談用のAPIはdocomoさんが提供している雑談対話APIを利用しました。 雑談対話APIを利用するにはここから開発者登録する必要があります。…

perlで簡単にSlack Botを作るモジュールを公開した

CPAN authorになりました。 Slack::RTM::Bot - search.cpan.org GitHubでいくつかperlのモジュールを書いたりはしていたのですが、せっかくなのでCPANに登録することにしました。 SlackのReal Time Messaging (RTM) APIを使ったモジュールです。 公開したモ…

Slackbotのメッセージをオシャレにしたい

以前にbotkitを使ってslackbotを作りました。 この通知をオシャレにしたい。 GitLabとかの通知みたいな感じ。 テスト結果で色とか分けられててわかりやすいですよね。 で、どういう風にやるのかなとかと思ってたんですが、メッセージをJSON形式の添付ファイ…

SonarQubeでテストカバレッジを表示する

うちのチーム自動テストを導入しようとしてます。 とはいえ、ゼロから始めるには指標がないとしんどいですよね。 JJUG CCCで知見を得たSonarQubeを試すことにしました。 SonarQubeの起動 Docker使ってぱぱっと試します。 docker run -d --name postgres-sona…

Java Day Tokyo 2016に行ってきました

JJUG CCCに続いて、Java Day Tokyo 2016に行ってきました。 今回は教育扱いで参加させていただきました。感謝! 聴講したセッションはこんな感じ。 めっちゃJava SEでした。 とりあえずまとめておきます。 英語できないし、同時通訳馴れないし、椅子でお尻痛…

JJUG CCC 2016 Springに行ってきました。

JJUG CCC 2016 Springに行ってきました。 技術系カンファレンスは4度目の参加です。 今回の自分の中でのテーマは、「JJUG春のアップデート祭り」です。 以下、聴講したセッション。 自分に関係ありそうなところをかいつまんでメモ。 テスト自動化のまわりみ…