M1 MacからHerokuにデプロイするには(1)
はじめに
この記事の和訳です。エッセイ風味の部分や背景説明は省いて、手順だけを抜粋しました。
※ 動作確認はしていません
結論:Rosettaを噛ませる
2021年3月現在、M1 MacからHerokuにデプロイするにはRosettaを使うしかないようです。以下その手順です。
1. 「ターミナル」アプリを複製
ファインダー>アプリケーション>ユーティリティに「ターミナル」アプリを複製して、適当な名前をつけます(「ターミナル with Rosetta」とか)。
右クリック→「情報を見る」→「Rosettaで開く」にチェックします。
これでARM用とIntel用、計2つのターミナルができた感じです。
2. Rosettaをインストール
さっき複製した「ターミナル with Rosetta」の初回使用時にRosettaインストールが促されます(ここでインストールするのが楽)。
手動で入れたい時は下記です。
/usr/sbin/softwareupdate --install-rosetta
3. brewを(再)インストール
Homebrewが事前にインストールしてあれば、M1対応のはず。下記で確認できます。
% which brew
/opt/homebrew/bin/brew
複製したほうの「ターミナル with Rosetta」を開いていることを確認して、Homebrewを再インストールします。
/bin/bash -c "$(curl -fsSL
https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
==> Checking for `sudo` access (which may request your password).Password:
==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew
....
これで/usr/local/bin
にインストールされているはずです。
Homebrewが2つ入っていることになりますが、brew
で先に呼び出された方だけが走る感じなので大丈夫。紛らわしくないようにaliasしておくと良さげです。
alias rbrew='/usr/local/bin/brew'
# Rosetta brew
% which rbrew
rbrew: aliased to /usr/local/bin/brew
# Native brew
% which brew
/opt/homebrew/bin/brew
4. Herokuをインストール
複製したほうの「ターミナル with Rosetta」を開いていることを確認して、Herokuインストールです。
rbrew tap heroku/brew && rbrew install heroku
これでHerokuが使えるはず。ログインします。
% heroku --version
% heroku login
% heroku apps
以上です!
補足:Dockerを使う場合
Dockerを使う場合、HerokuのコマンドラインでもOKですが、GitHubのCIツール(GitHub Actions)でさらにいい感じになります。下記の要領です。
1. GitHubに新規Workflowを作成
Git repositoryのActionsタブで新規Workflowを作成します。
下記はJDK11とMavenを使ったJavaのアプリケーションの例ですが、他言語でも同じような感じになります。
name: Build & Push to Heroku Docker Registry
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
# checkout source
- name: Git Checkout
uses: actions/checkout@v1
# config JDK
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
# Build the Jar
- name: Build with Maven
run: mvn -B package --file pom.xml
# Login in Heroku
- name: Heroku Container Registry login
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
run: heroku container:login
# Build and push Docker image
- name: Build and push
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
run: heroku container:push -a ${{ secrets.HEROKU_APP_NAME }} web
# Release
- name: Release
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
run: heroku container:release -a ${{ secrets.HEROKU_APP_NAME }} web
上記のパイプラインが、main branchでgit pushするたびに走ります。手動なら下記です。
on:
push:
branches: [ main ]
2. 補足の補足:APIキーとアプリ名について
上記パイプラインにはHEROKU_API_KEY
とHEROKU_APP_NAME
が必要になりますが、大丈夫。いずれもGitHubリポジトリ(Settings->Secrets->New repository secret
)に格納され、ソースコードには表れない感じです。
おわりに
初心者なので記事内容の良し悪しがわかりませんが、訳してみました。
Author And Source
この問題について(M1 MacからHerokuにデプロイするには(1)), 我々は、より多くの情報をここで見つけました https://qiita.com/sugiyamashiori/items/5ddae663c09fc78d2d23著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .