Open3
GitHub Enterprise Server から Private Endpoint を利用した Web Apps にデプロイする
やりたいこと
以下の方法は、オンプレではなく Azure 上に GitHub Enterprise Server を構築します。
また、簡単のために TLS は使わない設定にします。
事前準備
- トライアル
https://github.com/organizations/enterprise_plan - ダッシュボード
https://enterprise.github.com/dashboard
Azure へのデプロイ
ハードウェア要件
GitHub Actions を利用したい場合は、8コア 64 GB のメモリが推奨です。
仮想マシンはマーケットプレイスに用意されています。
デプロイ後
セットアップ
Management Console からセットアップを行います。
URL は http://<HOSTNAME>:8080/
もしくは https://<HOSTNAME>:8443/
です。
GitHub Actions を利用したい場合は、Azure 上のストレージアカウント等クラウドストレージへの接続が必要です。
GitHub Actions
制限
GHES では Self-hosted runner のみ利用可能です。
Self-hosted runner を設定する
GitHub で Self-hosted runner を使う場合と同様です。
GHES のデフォルトに無い(GitHub 上の) GitHub アクションにアクセスする方法
GitHub Connect を使うか、actions-sync を使って手動で同期します。
デフォルトの GitHub Actions は以下の URL からアクセスできます。
http://<HOSTNAME>/orgs/actions/repositories
GitHub Connect の有効化
GitHub Enterprise のサブスクリプションが必要です。
actions-sync で同期
actions-sync は GHES にアクセスできる場所から実行します。
ツールは以下リポジトリからダウンロードできます。
以下はコマンドの実行例です。
./actions-sync sync --cache-dir "cache" --destination-token "<GitHub Enterprise のPersonal Access Token>" --destination-url "<GHEのサーバーURL>" --repo-name "<GitHubのアクション名:同期先のGitHub Enterprise のリポジトリ名>"
例)
tsunomur@vmjumpbox:~/bin$ ./actions-sync sync --cache-dir "cache" --destination-token "ghp_aaaaaaaaaaa" --destination-url "http://ghetest.nomupro.com/" --repo-name "azure/webapps-deploy:tsubasa/webapps-deploy"
pulling azure/webapps-deploy to cache/tsubasa/webapps-deploy ...
fetching * refs for azure/webapps-deploy ...
not using impersonation for the requests
syncing `tsubasa/webapps-deploy`
Created repo `tsubasa/webapps-deploy`
successfully synced `tsubasa/webapps-deploy`
最終的な GitHub Actions の YAML ファイル
# File: .github/workflows/workflow.yml
name: JavaScript CI
on: [push]
env:
AZURE_WEBAPP_NAME: tsunomurnodejs # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: 'myapps' # set this to the path to your web app project, defaults to the repository root
NODE_VERSION: '18' # set this to the node version to use
jobs:
build-and-deploy:
name: Build and Deploy
runs-on: self-hosted <----------- self-hosted を指定する
steps:
- uses: actions/checkout@main
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v1
with:
node-version: ${{ env.NODE_VERSION }}
- name: npm install, build, and test
run: |
# Build and test the project, then
# deploy to Azure Web App.
npm install
npm run build --if-present
npm run test --if-present
working-directory: 'myapps'
- name: 'Deploy to Azure WebApp'
uses: tsubasa/webapps-deploy@v2 <----------- ここに同期した Actions のリポジトリを指定
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
参考になった記事