kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Azure Pipelines/GitHub Actionsのセルフホスト用VMイメージを作る

以前からAzure Pipelines用イメージをPackerで作る方法を公開しているレポジトリーがあったのですが、バックエンドがGitHub Actionsと共通になり、レポジトリーも移動しました。

github.com

以前のPackerというかAzure Image Builder(中身はPackerです)を使っていたレポジトリーでも試したことがあったのですが、どうも安定して作れない。Hyper-V用のイメージ作るのも結構手を入れるの大変だなぁ、と思っていのですが、レポジトリー変更と、方式も結構変わったみたいです。

実際にAzure PipelinesとGitHub ActionのHosted Imageはこれで作っている…らしいので、つかってみようとしたところ、なんとAzureRMモジュール使って書いていてびっくりしました。2020/12でサポート終わるって書いているのに。そして、AzureRMモジュール入れた環境なんてもうないよ…。

ということで、Azモジュールに書き換えた版を作ってみました。そのうち本家がやるだろうけど、PRどうしよう。

github.com

コミットはこの辺。

github.com

今実際に動かしていますが、いい感じで動いています。たぶん数時間じゃすまないレベルで時間かかるので、朝一とかで始めたほうがいいです。もしくはAzureのVMで動かすとか。これでうまくいけばイメージをカスタムして不要なものを消したイメージ作って、手元のローカルで動かすような感じでやってみようと思います。

ヘルプに書いていますが、使用方法の注意点として、なぜかGitHubのPATが必要です。将来廃止しますとは書かれていますが、GitHub Developer Programに参加しないとPAT作れない(前確か参加しなくても作れたよね?)ので、気を付けてください。とりあえずレポジトリーの権限だけ設定しています。

(追記)
必要な理由がわかりました。npmのパッケージをGitHubのPackagesからダウンロードするため、read:packagesが必要なためだそうです(今エラーになりました)。たぶん匿名アクセスを許可していないからでしょう。read:packages権限だけあればいいようです。

GenerateResourcesAndImage -SubscriptionId {サブスクリプションID} -ResourceGroupName {リソースグループ名} -ImageGenerationRepositoryRoot {レポジトリーをクローンしたフォルダー} -ImageType {イメージ名} -AzureLocation リージョン -Githubfeedtoken {GitHubのPAT}

-ImageTypeにはWindows2016, Windows2019, Ubuntu1604,Ubuntu1804が指定できます。イメージ生成が成功したら、Azureのストレージアカウントに入るので、そこからAzureへデプロイできます。

これでうまくいったら、hostedからは不要なものを削除するとか、hostedでは更新が遅い場合に最新のVisual Studio入れたイメージ作るとかいろいろ用途が広がります。もちろん、オンプレミスのAzure DevOps用にも使えますね。

(追記2)
作ってみたら、Seleniumのダウンロードで失敗してました。WebブサウザーでダウンロードしようとしたらSmartScreenに引っかかったので、おそらくそれでしょうか。つっても、PowerShellスクリプトと同じ方法でダウンロードしてみたらできたんですが。うーん、こう言う安定しないの困るな。

後、現時点でPackerがAzureのスポットインスタンスに対応していない(AWSは対応しています)ので、USあたりでイメージ作成するときにお安く作れないの困るなぁ。5月ごろのissueには「次の次くらいで」対応予定と書かれていたんですが。

github.com

最近の動画公開のための編集でやってること

YouTubeに動画公開していますが、こんな感じでやってます。最近少し続慣れてきたけど、もっと手早くやりたい。

  1. 最初にシナリオ考えて、実環境でできるかどうか確認。パイプラインの名前に(1)とかついているのはそのためです…(テスト用が無印😅)
  2. 2枚目のモニターを1920x1080に設定。4Kでとっても動画ファイル大きくなるだけだし。
  3. Camtasiaを使って2枚目のモニター全領域をキャプチャ。1枚目のモニターでパイプラインのカンペ見ながら「ここでこんな風にしゃべる」を意識しつつ、実施。シナリオにないことをやって失敗すると焦る(この前の***NO_CI***とか…)。
  4. Camtasiaで普通にMP4にエクスポートして、Premiere Proにインポート
  5. ここでちゃんと不要なところをカットする。後でもできないことはないけど、ここでカットしておいたほうが楽。
  6. After Effectsで以下の編集をする
    1. 余計なサブスクリプションとかをレイヤー作って消す。その都度、消したい場所にレイヤーを追加して隠すのがよさそう
    2. YAML編集するところとタスクを追加するところで、ズームイン、ズームアウトを繰り返す。大体1-2秒でズームさせるときれいだ…と思う。AEじゃなくてもPremiereでもできるけど、AEのほうが好き。
    3. ビルドなどの実時間がかかりすぎる処理はタイムリマップを使って、特定のキーフレーム間の時間を短縮させる。フッテージの末尾をリマップさせる方法がまだわかってないので、最初にPremiereで切っておく。リマップすると、全体の尺も変わるので注意(Part2のときはそれでえらい目にあった)。
    4. 区切りとなる場所場所でフッテージのレイヤー切っておくと編集やりやすいと思う(今後やってみる)
  7. Premiereで字幕を入れる(しゃべる場所の目安にもなる)
  8. 説明用の画像もはさむ
  9. Premiereで再生しながらAuditionでアフレコ録画
    1. Auditionでノイズリダクション。
    2. 同、先頭と最後を無音化(プチとか言ってるので)
  10. Premiereに音声を読み込んで一通り流して問題ないようならレンダリング。GeForce GTX 2060のおかげで実時間以下でできてます。

トランジションとかはあまり凝りすぎてもあれなので、最低限にしています。よければみてやってください。

Azure Pipelines - Multi Stage Pipeline Part2動画公開

少し間が空きましたが、Multi-Stageパイプラインの動画Part2を公開しました。


Azure Multi Stage Pipeline Part2

録画中に2か所ばかりノイズが入っているところがあります。すいません。ちょっとカッコつけて一緒に***NO_CI***の説明をしようとしたら動かなくて焦りました…そのままにしています。カットでつないでもよかったんですが。ビルド時間があまりに長いので、動画編集でつまんでいます。実際はこんな早くビルドできません😅。

次はテンプレートを解説する予定です。

Azure DevOps 2020/8/3/の更新

Azure DevOps Sprint 173のリリースノートの翻訳を行いました。オリジナルはこちらから見てください。

docs.microsoft.com

世界的な流れに合わせて、Gitのデフォルトブランチ名をmasterからmainに変えるようですね。デフォルト変更は今年の後半だそうです。masterのままにしたいならば今のうちからmasterにしておきましょう。

複数レポジトリをトリガーにできるのも便利ですね。ただし、GitHubやBitBucketでは使えないので注意してください。

ではまた三週間後。

Translate to Japanese to Azure DevOps release not…