lycheejam's tech log

チラ裏のメモ帳 | プログラミングは苦手、インフラが得意なつもり。

GitHub + AWS CodePipeline|Build|Deployで自動ビルド・デプロイ環境の構築

概要

ASP.NET CoreアプリをAWS LightsailでホスティングされているCentOS 7のサーバで公開するにあたり自動ビルド・自動デプロイ環境を構築しました。
所謂、CI環境と言うものですが自動テストは組み込んでいないためタイトルを「自動ビルド・デプロイ環境の構築」としています。

今回のインフラ基盤として使用したAWS LightsailはCodePipelineと統合されていないため、自動ビルド・デプロイ環境にAWS Codeシリーズを使用する旨味はあまりありません。
しかし、過去にAWS CodeBuildを使用してVue.jsの自動ビルド・デプロイ環境を整えた自身の経験があったためAWSを選択しました。

また、今回の構成では下記のような特徴があります。

  • AWS EC2などではなくオンプレミスなサーバ
    • AWS CodeDeployと統合されていない環境
    • CodeDeployのAgentが必要な環境
  • OSがCentOS

1つ目のオンプレミス環境についてはLightsailもAWSの1つのサービスではありますが、CodeDeployとは統合されていません。
そのため、Agentのインストールが必要になると言う点。
2つ目のOSについて、CodeDeployを使用する上でUbuntuRHELについては公式ドキュメント含め多少ナレッジが公開されています。
しかし、CentOSについてはAgentのインストール等々ナレッジが公開されていなかったので手探り状態での構築となった点です。

目次

  • 概要
  • 目次
  • 環境構成(自動ビルド・デプロイの流れ)
    • アプリ基盤
    • 処理の流れ
      • ①②③ローカルからPUSH〜ソースDL
      • ④⑤⑥⑦ビルド実行からアップロード
      • ⑧⑨⑩⑪⑫デプロイの実行
  • 自動ビルド・デプロイ環境の構築
    • 事前準備
    • サーバにCodeDeploy Agentをインストール
      • AWS CLIのインストール
      • ユーザのアクセスキー設定
      • CodeDeployのインスタンス登録
      • CodeDeploy Agentのインストール
      • codedeployagent.ymlの編集
    • CodeDeployアプリケーションとデプロイグループの作成
    • CodePipelineとCodeBuildプロジェクトの作成
      • Step1 パイプラインの設定の選択
      • Step2 ソースステージの追加
      • Step3 ビルドステージの追加(CodeBuildプロジェクトの作成)
      • Step4 デプロイステージの追加
      • Step5 確認
    • CodeBuildのbuildspec.ymlを作成
    • CodeDeployのappspec.ymlとデプロイスクリプトを作成
      • シェルの作成
        • シェル用ディレクトリの作成
        • サービス起動シェル
        • サービス停止シェル
      • appspec.ymlの作成
        • filesセクションについて
        • hooksセクションについて
    • 動作確認
  • 雑感
続きを読む

VuePressに GoogleSearchConsole のメタタグを埋め込む

概要

ブログがどれだけ人に見られてるかってのは更新するモチベーションの1つです。
そこで、VuePress で作成したサイトに GoogleSearchConsole のメタタグを追加してアクセス解析を閲覧できるようにします。

GoogleAnalytics の場合は標準でトラッキングコードの埋め込みが用意されていますし、公式ドキュメントで案内されています。
しかし、GoogleSearchConsole のメタタグを追加については公式ドキュメントに記載がないので紹介しておきます。

目次

  • 概要
  • 目次
  • 環境
  • VuePressでGoogleSearchConsoleを使う
    • GoogleSearchConsoleのメタタグの追加
  • 雑感
続きを読む

ASP.NET Core MVC スキャフォールドでコードを自動生成する

概要

ASP.NET Core MVC で認証付きプロジェクトを作成した際に ASP.NET Core Identity の認証関連をカスタマイズしたいことが多々あります。
ASP.NET Core MVC のテンプレートでは ASP.NET Core Identity のコードが生成されておらずカスタマイズできません。
そこでスキャフォールディングを行い認証関連(ログインやユーザ登録)のコードを生成しカスタマイズします。

Windows 環境の VisualStudio 2017 でスキャフォールディングする方法は多く紹介されていますが Mac 環境で dotnet CLI を使用した方法はあまり紹介されていません。
自身の備忘録としてブログに残しておきます。

この記事ではスキャフォールディング( Scaffold )の方法のみ記載しカスタマイズについては触れません。

目次

  • 概要
  • 目次
  • 参考サイト様
  • 環境
  • dotnet CLI でスキャフォールディング
    • 事前準備(サンプルプロジェクトの作成)
    • 事前準備(ツール&参照の追加)
      • Codegenerator のインストール
      • プロジェクト参照の追加
    • スキャフォールディングの実行
      • コマンドオプションの確認
      • 生成可能ページの確認
      • スキャフォールディングする際のDbContextについて
      • 生成コードを指定して生成(1つ)
      • 生成コードを指定して生成(複数)
      • コードを指定無しで全生成
  • 雑感

参考サイト様

続きを読む

VuePressのLastUpdated表示フォーマットを変更する。

概要

VuePressで表示可能な最終更新日( LastUpdated )の表示フォーマットを変更します。
デフォルトではMM/DD/YYYY hh:mm:ssとなっていますが日本では馴染みの無いフォーマットなのでYYYY/MM/DD hh:mm:ssのフォーマットに変更します。

VuePress 0.14.10を使った話です。1.x系では恐らく使えないのではないかと思います。(未検証)

目次

  • 概要
  • 目次
  • 参考サイト様
  • 環境
  • 最終更新日( LastUpdated )のフォーマット変更
    • 注意事項(前提)
    • やりたいこと
    • テーマの LastUpdated を表示している箇所を確認する
    • locales の設定
    • 表示確認
  • おまけ
    • 最終更新日( LastUpdated )表示なし(初期値)
    • 最終更新日( LastUpdated )表示あり
  • 雑感

参考サイト様

続きを読む

VuePressを起動するとres.getHeader is not a functionエラーが発生する。

概要

VuePress 0.14.10をインストール後、開発環境でローカルサーバを起動しブラウザでアクセスするとエラーが発生する問題が発生しています。
件のエラーはこちらのISSUEで確認できます。

全て解決法はISSUEに書いてあるのでISSUEを見たほうが早い説ありますが記事に残しておきます。

このエラーはwebpackのとあるPullRequestが起因している様でプルリクがマージされた2019/03/06の次の日にはVuePress側でISSUEが上がっていました。
記事を執筆している2019/3/23 午前4時現在、ISSUEはOpenのままとなっています。

また、私が確認したVuePressバージョンは0.14.10のみでアルファ版の1.x系は確認しておりません。

目次

  • 概要
  • 目次
  • 参考サイト様
  • 環境
  • 事象
    • 再現手順
    • エラー内容
  • 原因
  • 対策
    • 実施手順
      • 1. VuePressのアンインストール&Nodeモジュールの削除
      • 2. webpackのインストール
      • 3. VuePressの再インストール
      • 4. Packege.jsonのscripts編集
      • 5. 実行・確認
  • 雑感

参考サイト様

続きを読む