Azure Storage Emulator + UseDevelopmentStorage=trueで400 httpエラーになる。

storage client libraryのバージョンが新しいと、Storage Emultatorの開発ストレージ(CloudStorageAccount.DevelopmentStorageAccountとか、ConnectionStringがUseDevelopmentStorage=trueで使えるやつ)との通信がエラーになる。

Windows azure storage DevelopmentStorageAccount CloudTable.CreateIfNotExists() always get 400 http error

対処法としては、バージョンダウンさせるか、Windows Azure Storage Emulator 2.2.1 Preview versionを使う。
今回はPreviewVersionを使って動作確認しました。手動コピーしないとだめなのでちょっと面倒ですけどね。

Download Windows Azure Storage Emulator 2.2.1 Preview from Official Microsoft Download Center

JenkinsでWindows Slaveを使いbitbucketのgitリポジトリを取得してビルドする。

Windows Server 2012にjenkins slaveを動かし、asp.net mvcのプロジェクトをbitbucketのプライベートリポジトリから取得して、ビルド、テスト、azure websitesにデプロイしてみる。

ロジェクトを発行してazureにデプロイできる前提です。

1. ノードの追加
=========================
jenkinsはlinuxサーバー上にあるので、ノードの管理>新規ノード作成からwindows server 2012のサーバーを追加

* JNLP経由でスレーブを起動するよう設定
* ここのツールの設定は設定しなかった。

2. jenkinsのシステム設定
=========================
jenkinsの設定>システムの設定>Gitに対象のサーバー用のgitを追加。

:Name: git
:Path to Git executable: C:/Program Files (x86)/Git/cmd/git.cmd

git.cmdの中身はこんな感じ
[powershell]
@echo off
set HOME=C:\Users\Administrator
set PATH=C:\Program Files (x86)\Git\bin;%PATH%
git %*
[/powershell]

このjenkinsのスレーブはAdministratorで動かすので、HOMEにC:\Users\Administratorを設定する。
C:\Users\Administrator\.sshを作って、ssh-keygenで鍵を作り、公開鍵をbitbucketに登録する。

3. ジョブの追加
=========================
ジョブを追加して設定を開く

ソースコード管理: Git
—————————
* Repositories: git@bitbucket.org:xxxxx/yyyyyyy.git
* Credentials: なし
* Git executable: 2で追加したgit

ビルド・トリガ
—————————
* SCMをポーリング: H/15 * * * *

ビルド
—————————
ビルド->テスト->デプロイのイメージ。全部Windowsのバッチ処理。

1. restore nuget packages
ビルドするときにも復元してくれるけど、先にやらないとビルドが成功しない・・・。放置。

.nuget\nuget.exe restore xxxxx.sln -ConfigFile -NonInteractive

2. ビルド

“C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe” xxxxx.sln /t:build /p:Configuration=”Release”

3. テスト

“C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe” xxxxx.unittests\bin\release\xxxxx.unittests.dll

4. デプロイ

“C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe” xxxxx.sln /p:DeployOnBuild=true /p:PublishProfile=”xxxxx” /p:Password=yyyyy /p:AllowUntrustedCertificate=true

:xxxxx: 発行のプロファイルの名前
:yyyyy: Azureから取得した発行プロファイルの中にあるパスワード

NuGet.exeでパッケージの復元でエラー
============================================
リモートサーバーに接続できないようなエラーがでていたので、確認してみるとファイアウォールに引っかかって失敗していました。
NuGet.exeの通信を許可するよう設定したところうまくいくようになった。

その他
===========
あとはメール通知をしたりして終わり。

そういえば
============
* MSBuildのプラグインがあったけど、以前はうまく動作させることができず、Windowsバッチにしていた。今度暇があれば試してみよう。
* VisualStudioOnlineってこういうことできるのかなぁ。
* デプロイしたサイトに対してseleniumを走らせて、問題なければプロダクション環境の切り替えがしたいなー。
* jenkinsの本を買おうかなぁ。こういうこと書いてるかなぁ・・・。

windows azure websitesでのbitbucketからのデプロイでエラー

ASP.Net MVC4のプログラムをWindows AzureのWebsitesにデプロイしようとAzureでWebsitesを見てみると、bitbucketからデプロイできるようになってました。
前からあったっけ?

普通のデプロイはできる状態だったので、bitbucketからのデプロイにしてみましたが、デプロイ(ビルド)でエラーが・・・!

1. nugetパッケージが無くてエラー

これは、ソリューションから NuGetパッケージ復元の有効化 を有効にするとOKみたいです。
ただ、ソリューションのトップディレクトリに.nuget\NuGet.exeが出力してくれるが、.gitignoreで*.exeとしていたので、デプロイに反映されなくて悩んだ。

2. System.Web.MvcとSystem.Web.Helpersの参照エラー
これはなぜ!?
解決方法がわからず、ローカルでビルドして出力されたdllをコピーして、そちらを参照するよう変更したらビルドできました(当たり前か)。

とりあえず目的は達成出来ましたが、System.Web.Mvcが参照できていないのがいまいち。

スクリプト言語の作り方

今年最後の投稿ですね。

今年はたくさん本を読みたかったけど余り読むことができませんでした。
ほんとうにもっともっと読みたかった。

その原因の1つは「スクリプト言語の作り方」という本です。

「Stone言語」というオリジナルのスクリプト言語をJavaで作りながら、プログラミング言語の作り方の基礎を学んでいくといった内容の本です。

サンプルコードがJavaなので、それをpythonで書き直しながら読んでいます。
8月に本を買って現在chapter12です(基本的なところはchapter14まで)。毎日取り組めるわけではないけど、絶望的な進捗具合です。自分の頭が悪さが悔やまれます。
planset/stone-py · GitHub

ただ、実際にうまく動いたとき(サンプルなので必ずうまく動く!)は楽しいものです。
年をまたいでしまいますが、あとchapter2つ+αをがんばります。

さて、というわけで、どうでもいいような投稿が今年の最後ですが、皆様今年も本当にお世話になりました。
来年もよろしくお願いします。

第4回 Python勉強会@旭川 エラーと例外

Python勉強会@旭川です。もう4回目なんですな。

第4回 Python勉強会@旭川 – connpass

今回は割と読んだつもりだったのですが、
raiseで例外を送出できるのが、インスタンスだけではなくて、
クラスでもいいってのは見落としていたので、気がつけてよかったです。

というわけで、今日のメモ。

続きを読む

virtualenvwrapper のインストールでエラー

ubuntu 12.04 あたりにpython2.7.3で環境を作ろうとしたときの話です。
ez_setup.pyでeasy_installを入れて、
easy_installでpipを入れて、
virtualenvとvirtualenvwrapperを入れました。

そうすると、最後のvirtualenvwrapperのインストール中にエラーになり、パッケージ管理自体がおかしくなってしまい、最初から入れ直すハメに・・・

続きを読む

iphoneからmacのマウスカーソルを操作

今日は(もう昨日だけど)旭川オープンソースコミュニティの勉強会がありました。

LT大会ということで色々と面白い話が聞けました。

ま、聞いてきたら試してみないと気が済まないということで、今回はquo.jsを触る・・・はずが、LTで話しのあったquo.jsがらみで、iphoneでマウスを操作するアプリが紹介されてたんですけど、そっちのようなものを作ってみました(ぇ

続きを読む