Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
5
Help us understand the problem. What is going on with this article?
@ytanaka3

Makefileを使った作業の共通化

More than 1 year has passed since last update.

streampack の Tana です。

アプリケーションが増え、マイクロサービス化されてくると、
アプリケーション固有なコマンドや環境によってそれぞれ実行方法が異なります。
また、何回もコマンドを叩かないといけないケースだとハードルが上がりますし、
コマンドを忘れたりもして悩ましい時がたまにあります。

  • セットアップ・インストール
  • アプリ起動
  • コンパイル
  • リリース(デプロイ)

上記の振る舞いを Makefile を使って共通化する方法です。
Makefile といえば、以前は C++ とかのコンパイルとかに
よく使われていたかと思いますが、コマンドの統一化などには便利です。

例えば、Rails と Golang のアプリケーションがあったとします。
それぞれの Makefile を準備します。

Makefile(Rails用)

help: ## Usage
    @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)

install: ## install gems
    bundle install

db: ## database create & migrate
    rails db:create
    rails db:migrate
    rails db:seed

run: ## start the app
    rails server

build: ## build image
    docker build

push: ## push to somewhere
    docker push xxx

release: build push ## build&pushしてリリース

Makefile(Golang用)

help: ## Usage
    @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)

install: ## install packages
    go get github.com/golang/xxx

run: ## start the app
    go run main.go

build: ## build image
    docker build

push: ## push to somewhere
    docker push xxx

release: build push ## build&pushしてリリース

あとは、make help でコマンドを確認して、叩くだけです。

help                           Usage
install                        install packages
run                            start the app
build                          build image
release                        push to somewhere

install したければ、

$ make install

リリースしたければ、

$ make release

コマンドを統一することにより
誰もが同じコマンドを叩くことによって
環境を構築したり、起動したり、リリースすることも可能です。
README.md の手順もシンプルになります。
$ make all で全てできればクールですね。

もっと汎用的に docker関連でいろんなことをやりたいのであれば、
こちらが便利なので、参考にしてみてください。
https://gist.github.com/mpneuried/0594963ad38e68917ef189b4e6a269db

ではでは。

5
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ytanaka3
cloudpack
Amazon Web Services (AWS) の導入設計、環境構築、運用・保守をサポートするマネジドホスティングサービス

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
5
Help us understand the problem. What is going on with this article?