新しもの好きプログラマの耳より情報ブログ

仕事でもあるプログラミングについて役に立ちそうな情報を発信していこうというブログです。役に立たなそうな情報はfacebookで。

テスト用redmine環境を作ってC#のスクリプトをテストするまでが、楽々だったのでちょっと感動した

redmine APIを使ったちょっとしたスクリプトが欲しいと思い立つ。慣れてるC#で書きたい。

とはいえ、さすが本番環境で試すわけにはいかないので、とりあえずテスト用のredmine環境が欲しい。Azureアカウントなら持ってる。

こう思ってからスクリプトを書いてテストするまでが楽々だったので、いやあ便利になったなあと思いつつブログにメモっておく。

やること

こういう環境を作って、C#スクリプトを書いてテストする。

構成図

前提条件

スクリプト実行環境に、.NET 5のランタイムではなくSDKをインストールする必要がある(.NET Coreでも良い)

テスト用のredmineサーバーの準備

AzureでRedmine Certified by BitnamiのVMを作成する。

(ブート診断を構成してなかったので)sshで接続して管理者パスワードを取得する。

コマンド:sudo cat /home/bitnami/bitnami_credentials

参考:https://docs.bitnami.com/azure/faq/get-started/find-credentials/

http://<作ったVMIPアドレス>/admin へアクセスして、userと管理者パスワードでログイン ※ネットワーク的につながる別のPCからアクセス

これだけで、後は普通にredmineが使える。

スクリプトの作成環境準備

.NET SDKdotnet-scriptをインストール。悩みどころは特にないので、説明があるURLだけ記載する。

https://dotnet.microsoft.com/download

https://github.com/filipw/dotnet-script

(今回はdotnet tool install -g dotnet-scriptでインストールした)

スクリプトの作成

フォルダを作り、VSCodeを起動。

ターミナルを開いて、dotnet-script initを実行。(これにより、スクリプトファイルに加えてVSCode上でデバッグ実行するための設定が作成される)

JSON.NETを使うために、main.csxに次の記載を追加。

#r "nuget: Newtonsoft.Json, 12.0.3"

VSCodeを開き直す。(ここで開き直さないと、NuGetで取ったものの入力補完が効かない)

あとは普通にC#でコードを書くのみ。今回はHttpClientとJSON.NETで実装した。

まとめ

思い立ってから実現するまでがたったこれだけの手順ですんだ。特にAzure(というかクラウドサービス)とdotnet-scriptは偉大だと思う。

おまけ

作成したスクリプトはこちら。redmineのTimeEntryを1つ追加するだけのスクリプト