2019の4日目です。3日目の記事はankosoftさんの権限のない一般ユーザーがRedmineのマイページのカレンダーを乗っ取った件でした。一般ユーザーが自由にRedmineの機能を拡張できるようになるといろいろ捗りそうな現場はたくさんありそうですね。最初にまとめDockerの公式のRedmineのDockerfileをベースにして、trunk(開発最新版)のDockerfileを作りました。Hubにpushされます。Herokuにもデプロイしています。新しい機能を軽く触りたいときにどうぞ。RedmineのDockerイメージいろいろ今年の11月に開催されたRedmine.tokyoの参加者アンケートでは、DockerでRedmine環境を構築している人は1割未満、増加傾向にあるものの普及はこれからという状況のようです。Hubには実運用が可能なDockerイメージがいくつか公開されています。公式のイメージとしてhttps://hub.docker.com/_/redmineが提供されています。「公式」といってもredmine.orgのコアメンバーが管理しているわけではなく、docker.comとしての公式イメージという位置づけです。GitHubにリポジトリ(https://github.com/docker-library/redmine)がありますが、RedmineというよりDockerのコミュニティーに近そうな人のコミットも目立ちます。sameersbn/redmineは人気のあるサードパーティのイメージです。SSL対応なども組み込まれているので、手間をかけずに実運用に乗せたいときには便利かもしれません。trunkのソースコードを差し込む今回は手軽に新機能の動作検証ができるイメージを作りたかったので、Dockerの公式のRedmineイメージをベースにします。シンプルなRailsアプリであれば一からDockerfileを書いてもよさそうですが、公式のDockerfileはRedmineの特殊な挙動(database.ymlの内容によってGemfileの評価結果が変わる)にがんばって対応しているので、その成果をそのまま使わせていただくことにしました。coに書き換えるだけです。1.0が無効化されているあたりもagileware-jp/redmine-plugin-orbのやりとりを参考にしつつ、まじめに実装しました。TravisCIで毎日ビルドするDockerの公式のRedmineイメージのリポジトリでは、TravisCIを使った自動テストを行っています。イメージがビルドできるか確認してから、Redmineのサービスが正常に起動することも検証しています。テストコードとその呼び出し処理は以下のあたりです。https://github.com/docker-library/official-images/blob/master/test/tests/redmine-basics/run.shhttps://github.com/docker-library/redmine/blob/ba9880cc3a224c7e5e15c1f9bf1757aa7c4c5b92/.travis.yml#L25CIの設定はリポジトリの.travis.ymlに記述されていて、cloneすればそのまま使えます*2。あとは定期的にCIのジョブを実行してイメージをpushする仕組みを付け足すだけで完成です。Jobという機能を使うとジョブを定期的に実行することができます。Hubにイメージをpushするシェルスクリプトはscript/deploy.bashに置いています。Tokenが追加されて、いい感じになりました。HerokuにデプロイするDockerイメージが作れたらどこかにデプロイしたくなりますね。今回は無料で手軽に使えるという理由でHerokuを選びました。Dockerイメージがpushされるとhttps://redmine-trunk-demo.herokuapp.com/に自動でデプロイされるようにしています。デプロイ手順の詳細はここでは省きます。appと連携しているリポジトリはhttps://github.com/vzvu3k6k/heroku-redmine-trunkです。関心のある方はご参照ください。Redmineのメール通知、ファイルアップロード、リポジトリなどの機能をHeroku上で動かすには個別の設定やプラグインが必要になります。デモ環境では一部の機能が欠けていても差し障りはないだろうということでデフォルトのままにしています。Herokuではデプロイ後にファイルシステムに加えた変更が永続化されないので、おそらくファイルをアップロードしても数時間後には消えてしまうはずです。db:fixtures:loadでテスト用のデータを流し込んで、DBのデータもリセットするようにしています。さんが13年以上前に追加」というテキストが表示されていて、コードベースの歴史を感じてしまいますね。明日はak.iwasakiさんの「新プラグインリリース」です。*2:Dockerイメージの名前をキーにしてテストコードを探す仕組みになっています。ネームスペースは無視されるので、イメージ名をfoobar/redmineという形にしておけばRedmineのテストが実行されます。Overflow大学図書館は貸出履歴を長期保存していることがある月別アーカイブはてなブログをはじめよう!vzvu3k6kさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。