blogシタテルの技術やエンジニアの取り組みを紹介するテックブログです。投稿を表示しています。投稿を表示しています。2018こんにちは!シタテルでエンジニアをしている建山です。工場向けのマイオペというシステムの開発を行っています。マイオペでは、インフラとして本番、ステージング、開発、feature環境を用意して開発していますが、新機能をテストする環境としてfeature環境を使用しています。feature環境にnetlifyというサービスを使用しています。netlifyとはNetlifyは静的なサイトをすばやく提供できるWebサービスです。フロントエンドのビルド、デプロイ、ホスティングのすべてを行ってくれます。netlifyとなっています。netlifyが可能なのですが、マイオペでは、ビルドの際にjavaを使用していて、netlifyのビルドで対応されていないので、circleciでビルドを行ったあと、netlifyにデプロイすることにしました。S3でよくない?」っていうツッコミはあるとおもいますが、まずは使ってみたということでご容赦ください。事前にnetlifyにサイトを作成してください。cliをインストールします。netlify-cliでいれました。netlify-cliでインストールしてもいいと思います。次に、circleciのconfig.ymlでデプロイの設定をします。cliを使って、デプロイします。デプロイしたいディレクトリをいれてください。$NETLIFY_ACCESS_TOKENはcircleciの環境変数にセットしてお使い頂いたほうがいいかと思います。上の例だと、ブランチ名に"-netlify"が含まれているとnetlifyにデプロイされるようにしています。実際には、利用状況にあわせてカスタマイズしてください。"abcd-netlify"というブランチでgithubにpushすると、デプロイされます!今回は同じURLにデプロイしていますが、デプロイのたびに違うサイトURLを発行してデプロイもできるようです。netlifyの中で、ビルドもいろいろできるようになっているので、今回のように限定的な使い方ではなく、もっと活用できると思います。使ってみましたということで、またいい感じのCI/CDを実現できたら紹介します!詳しくは公式ドキュメントをご覧ください。2018こんにちは、シタテルの茨木です。ECR/ECSにデプロイする為の設定例を紹介します。Nuxt.jsアプリ用に作ったものですが、言語やAPサーバが違っても共通の部分がほとんどです。PRマージからの自動デプロイ、いいですよね。https://circleci.com/docs/2.0/ecs-ecr/https://github.com/CircleCI-Public/circleci-demo-aws-ecs-ecr基本的にはCircleCI公式ガイドの上記リンクを参考にしていますが、元ネタはterraform前提だったりでなかなか大仰です。(下記に説明漏れがあったら原典を見てください...)今回紹介するのはリンク先のスクリプト類を簡素化し、少し機能を追加(リポジトリ名からデプロイ先の環境面を切り替えできるように)したものです。以下で省略しているけれど必要なモノECS/ECRの設定これだけで別の記事が書けてしまうので割愛しますecsTaskExecutionRoleの割り当てとか忘れがちですかねgithubリポジトリ言わずもがな。CircleCIとの接続設定はされているものとしますDockerfileリポジトリのルートに。Dockerfileの書き方は解説しませんrequirements.txtリポジトリのルートに。docker-image~省略~さっそくですがビルドジョブです。circleci/node:10-stretchnode:10を使っていますが、これはビルドする対象がNuxt.jsアプリだからですね。./deploy.sh~省略~デプロイジョブです。$BASH_ENVブランチ名に応じた値(developブランチなら"dev")を環境変数に入れています。fi}deploy_clusterデプロイジョブから呼び出すスクリプトです。runする際に引数として付与され、docker内のアプリから環境変数として参照可能になります実際には、nuxt.config.js内でTARGETを参照し、APIサーバの向け先を切り替えたり等しています以上、ご参考になれば幸いです。2018こんにちは、シタテルの鶴巻です。devops&インフラ担当です。シタテルのプロダクトのリリース作業を少し楽にするために、Slack+Lambda+Golangを用いて開発した話をします。リリースの流れシタテルでは、GitフローやGitHubフローを採用しています。本番環境へのデプロイは、以下の流れで実施しています。本番環境にデプロイちなみに、1.でreleaseブランチを作成すると、CircleCIによって2.のステージング環境へのデプロイは自動で行われます。地味に面倒なリリース作業ステージング環境へのデプロイは自動化されているとはいえ、小さな手作業が合間に発生し、地味に面倒でした。具体的には以下のような作業です。手作業はSlackからコマンドを叩くだけにしましたSlackから以下のコマンドを叩くだけで、地味に面倒くさかった作業を自動で行うようにしました。branch>実際には、以下の内容を実施するGolangプログラムをLambdaで実行しています。GitHubSlackからコマンドを叩くと、Lambda01にリクエストを送信します。Lambda01は、Lambda02に対象レポジトリとブランチ名を付与してリクエストを送信します。Lambda02で作業を実行します。Lambdaを2つ使用している理由Slackはリクエスト送信後3秒でタイムアウトするためです。実行したいプログラムは3秒以上かかるため、実際の作業は非同期で実施する必要がありました。そのため、Lambda01はLambda02に処理を投げて、Slackに200を返し、実際の処理はLambda02で実施します。Lambda01はLambda02を非同期実行で呼び出すので、リクエストをキューに入れた後は、Lambda01は関数を終了することができます。Lambdaの呼び出しタイプ(同期・非同期)Lambdaは、呼び出しタイプ(InvocationType)を指定することで、同期実行や非同期実行を選択することができます。例:InvocationTypeで"Event"を指定することで、非同期実行でLambdaを呼び出せます。https://github.com/google/go-githubgoogle製プルリク作成やリリースタグ作成に使用その他ハマったポイントAPIGatewayの統合リクエストのマッピングテンプレートを使いこなせず。デバッグのやり方もわからず、使うのを諦めました。まとめ少しの手間が自動化されるだけで、すごく楽になります。これからももっとやっていきたいです。GitHub操作のライブラリはとても便利でした。vue.jsが主ですが、自分の好きなGo言語を使えたので楽しかったです。usシタテルのミッションはテクノロジーとイマジネーションで「ひと」と「衣服」の新しい未来をつくること。クラウドシステムを使うように服作りのリソースを誰でも好きなときに好きだだけ使えるプラットフォームを目指しています。元インフラエンジニアの北爪です。Linuxにてプロセスを終了する様々な方法について解説します。最後にプロセスを終了するとはどういうことかを説明します。最初にプロセス終了コマンドと...Vueでwatchが動いてくれないこんにちは、シタテルの藤本です。SCS(Sitateru-Control-System)という生産管理システムのバックエンド(Rails)を担当しています。SCSではRailsでのViewは基本hamlで書かれていますが現在Vueへと移行しようとしています。シタテル株式会社エンジニアのいしづかです。みなさんはコードを書く時、どんなエディタを使ってらっしゃるでしょうか。現在開発が続いているシタテルコントロールシステムのバックエンドはRailsで書かれています。