Githubアクションを用いたAutos 0ルールの連続的統合と展開
この投稿では、Auth 0 Deploy CLIとGithubアクションを使用して、Author 0規則の連続的な統合と継続的な配信を設定します.このポスト(このポストを含む)のすべてのためのコードは、中で見つかりますthis Github repository .
セットアップ
まず最初にするのは、Auth 0を設定してコードをプッシュすることです.
Auth 0には、これを設定する拡張モジュールがあります.これは、Ci/CD操作のAuth 0部分を取得する最も簡単な方法です.
インストールする
auth0-deploy-cli-extension
これは、Auth0 Management API
それはテナントでデフォルトで設定されます.ルールコード
各ルールは、Auth 0 Webタスク環境(NODEJS 12)内で実行される1つの関数から構成されます.普通のことから、それはただ一つの機能でなければならないということです.サンプル規則がコンソールに作成されると、次のようになります.
function (user, context, callback) {
// Ok there is more code here in the sample but you get the idea.
}
コンソールの書き込みの外でさえ、これはまだユニットテストを書くのが難しいです.私がしたいことは、コードパスを実行することができますし、継続的に生産に配信について私はより快適にするユニットテストを書くことです.
Jestのようなテストフレームワークでこの作業を行うには、関数をエクスポートする必要があります.Webタスク環境は、これがどのように動作するかについてかなり具体的です.ESモジュールでは動作しませんし、グローバルにも公開されませんmodule
プロパティ.試してみるならmodule.exports = rule
or export rule
Auth 0環境では、エラーをスローします.
回避策は、規則関数を返す匿名の即時実行関数でコードをラップすることですmodule
存在しない場合は、関数をエクスポートします.Jestテストランナーモジュール内で実行するときにこの方法が存在し、コードがエクスポートされますが、Auth 0環境では規則が返され、コードが機能することができます.
以下のようになります.
(() => {
function rule(user, context, callback) {
// TODO: implement your rule
}
if (module) {
module.exports = rule;
} else {
return rule;
}
})() // prettier-ignore
このブロックでは、最後の行にセミコロンがないことに注意してください.ここでセミコロンを持つと、Auth 0規則はエラーをスローします.Thats理由// prettier-ignore
そこには、私は保存するたびに、セミコロンを追加してきれいです.
これにより、コードがJestテストにインポートされ、認証フローの一部として実行されているコードが実際に動作することを確信することができます.
を使用します
Auth 0 Deploy CLIは、あなたに代わってAuth 0 Management APIと対話するツールです.Auth 0展開CLIはNPMパッケージで、グローバルにインストールするかNPXを使用することで実行できます.私はそれを避けることができれば世界的に何かを実行することを避けることを好む.プロジェクトに展開CLIをインストールし、NPMスクリプトから実行しています.
設定の設定
この設定は、json
ファイル.必要最小限AUTH0_DOMAIN
, AUTH0_CLIENT_SECRET
, and AUTH0_CLIENT_ID
. 私はAUTH0_ALLOW_DELETE
プロパティに設定し、コードに存在しないAuth 0に格納されているルールを削除するようにtrueに設定します.
私のファイルで##variable##
パラメータの値を環境変数として渡すことができる表記法.これはGitHubアクションとの統合を容易にし、誤って秘密をコミットすることを避けるために役立ちます.置換マッピングに関する詳細な情報を見つけることができますin the Auth0 documentation .
{
"AUTH0_DOMAIN": "##AUTH0_DOMAIN##",
"AUTH0_CLIENT_SECRET": "##AUTH0_CLIENT_SECRET##",
"AUTH0_CLIENT_ID": "##AUTH0_CLIENT_ID##",
"AUTH0_ALLOW_DELETE": true
}
Auth 0への配備
規則を設定するのに必要なコード以上があります.以下のYAMLファイルはrules/sampleRule.js
ユーザーがログインした後に最初のルールとして実行し、環境変数として渡される秘密を設定します.このYAMLファイルは、必要に応じて多くの、またはテナント設定のほとんどを含めることができます.このケースでは、他のテナント設定とは別の独自の変更サイクルがあるので、この展開を規則のみ更新するようにしています.
rules:
- name: sampleRule
script: ./rules/sampleRule.js
stage: login_success
enabled: true
order: 1
rulesConfigs:
- key: "ItsASecret"
value: "##SECRET_IN_ENV_VARIABLES##"
テナントに規則をインポートする
展開をテストする
上で設定した設定は##
このコマンドを実行するために環境変数を設定するための環境変数を指定すると、いくつかの値がauth0 consoleである必要があります.の設定値を取得するauth0-deploy-cli
Auth 0拡張が作成されたアプリケーション.という名前の環境変数を設定しますAUTH0_DOMAIN
, AUTH0_CLIENT_SECRET
, and AUTH0_CLIENT_ID
.
環境変数に設定を追加し、import文を実行します.a0deploy import -c ./config.json -i ./src/tenant.yaml
.
私は、それが展開されたのと同じコードであるのを見るために、それがAuth 0コンソールでコードをチェックすることによって働いているとテストしました.
この完全に、私はコンソールにそれをコピーすることなく規則にコードを展開する能力を持っています.それは良い一歩前進です.次のことは、コードがバージョンコントロールにプッシュされたときに自動的に発生します.
githubアクションで実行する
自動連続統合と連続展開を行うには、githubアクションを使いました.私はその仕事を二つの仕事に分けた.すべてのプッシュで実行されるテストと、実際にコードをAuth 0に展開するテストを実行するもの.この2番目のコードは、コードがmain
ブランチ、機能ブランチの開発を行うことができ、コードが完了したときにのみライブ環境に配置できます.
最初のジョブはAuth 0展開に関連していないので、コードを介して取得します.興味があれば見つけることができますhere ..
番目の仕事は関連性が高い.それは、それがUbuntuの上で走ることになっていることをセットアップすることによって始まりますbuild
仕事は終わりました、そしてmain
枝.
deploy:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
needs:
- build
次の手順は、コードをチェックアウトしてNodeJS 12を設定し、プロジェクトの依存関係をインストールすることから始める.この場合、これらの依存関係はauths 0 deploy cliを含んでいます.
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2-beta
with:
node-version: "12"
- name: NPM Install
run: npm install
次のステップは、Author 0への実際の展開です.このステップでは、Githubコンソールにアップロードされた秘密から必要な環境変数を設定します.一度実行されるnpm run deploy
実行するNPMスクリプトa0deploy import -c ./config.json -i ./src/tenant.yaml
.
- name: Push to Auth0
env:
AUTH0_DOMAIN: ${{secrets.AUTH0_DOMAIN}}
AUTH0_CLIENT_SECRET: ${{secrets.AUTH0_CLIENT_SECRET}}
AUTH0_CLIENT_ID: ${{secrets.AUTH0_CLIENT_ID}}
run: npm run deploy
最後に
それで終わりだ.私は自動的にユニットのテストを実行した後、Author 0に1つ以上のルールを展開することができます.このアプローチは、私が展開したコードに自信を持っており、どんなサイズのチームで働くときにも重要です.
As a final note the Auth0 Deploy CLI can be used to deploy pretty much all of your Auth0 configuration. If you are using Auth0 for production workloads I'd strongly suggest using a configuration as code approach to keep track of changes to your environment and allow testing changes in staging environments.
Different sections of the config (rules, custom login pages, applications, hooks, etc) can be stored in different repositories to reflect it's rate of and reasons to change.
カバー写真hannah grace からunsplash
Reference
この問題について(Githubアクションを用いたAutos 0ルールの連続的統合と展開), 我々は、より多くの情報をここで見つけました
https://dev.to/kleeut/continuous-integration-and-deployment-of-auth0-rules-using-github-actions-2a97
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
function (user, context, callback) {
// Ok there is more code here in the sample but you get the idea.
}
(() => {
function rule(user, context, callback) {
// TODO: implement your rule
}
if (module) {
module.exports = rule;
} else {
return rule;
}
})() // prettier-ignore
Auth 0 Deploy CLIは、あなたに代わってAuth 0 Management APIと対話するツールです.Auth 0展開CLIはNPMパッケージで、グローバルにインストールするかNPXを使用することで実行できます.私はそれを避けることができれば世界的に何かを実行することを避けることを好む.プロジェクトに展開CLIをインストールし、NPMスクリプトから実行しています.
設定の設定
この設定は、
json
ファイル.必要最小限AUTH0_DOMAIN
, AUTH0_CLIENT_SECRET
, and AUTH0_CLIENT_ID
. 私はAUTH0_ALLOW_DELETE
プロパティに設定し、コードに存在しないAuth 0に格納されているルールを削除するようにtrueに設定します.私のファイルで
##variable##
パラメータの値を環境変数として渡すことができる表記法.これはGitHubアクションとの統合を容易にし、誤って秘密をコミットすることを避けるために役立ちます.置換マッピングに関する詳細な情報を見つけることができますin the Auth0 documentation .{
"AUTH0_DOMAIN": "##AUTH0_DOMAIN##",
"AUTH0_CLIENT_SECRET": "##AUTH0_CLIENT_SECRET##",
"AUTH0_CLIENT_ID": "##AUTH0_CLIENT_ID##",
"AUTH0_ALLOW_DELETE": true
}
Auth 0への配備
規則を設定するのに必要なコード以上があります.以下のYAMLファイルは
rules/sampleRule.js
ユーザーがログインした後に最初のルールとして実行し、環境変数として渡される秘密を設定します.このYAMLファイルは、必要に応じて多くの、またはテナント設定のほとんどを含めることができます.このケースでは、他のテナント設定とは別の独自の変更サイクルがあるので、この展開を規則のみ更新するようにしています.rules:
- name: sampleRule
script: ./rules/sampleRule.js
stage: login_success
enabled: true
order: 1
rulesConfigs:
- key: "ItsASecret"
value: "##SECRET_IN_ENV_VARIABLES##"
テナントに規則をインポートする展開をテストする
上で設定した設定は
##
このコマンドを実行するために環境変数を設定するための環境変数を指定すると、いくつかの値がauth0 consoleである必要があります.の設定値を取得するauth0-deploy-cli
Auth 0拡張が作成されたアプリケーション.という名前の環境変数を設定しますAUTH0_DOMAIN
, AUTH0_CLIENT_SECRET
, and AUTH0_CLIENT_ID
.環境変数に設定を追加し、import文を実行します.
a0deploy import -c ./config.json -i ./src/tenant.yaml
.私は、それが展開されたのと同じコードであるのを見るために、それがAuth 0コンソールでコードをチェックすることによって働いているとテストしました.
この完全に、私はコンソールにそれをコピーすることなく規則にコードを展開する能力を持っています.それは良い一歩前進です.次のことは、コードがバージョンコントロールにプッシュされたときに自動的に発生します.
githubアクションで実行する
自動連続統合と連続展開を行うには、githubアクションを使いました.私はその仕事を二つの仕事に分けた.すべてのプッシュで実行されるテストと、実際にコードをAuth 0に展開するテストを実行するもの.この2番目のコードは、コードが
main
ブランチ、機能ブランチの開発を行うことができ、コードが完了したときにのみライブ環境に配置できます.最初のジョブはAuth 0展開に関連していないので、コードを介して取得します.興味があれば見つけることができますhere ..
番目の仕事は関連性が高い.それは、それがUbuntuの上で走ることになっていることをセットアップすることによって始まります
build
仕事は終わりました、そしてmain
枝.deploy:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
needs:
- build
次の手順は、コードをチェックアウトしてNodeJS 12を設定し、プロジェクトの依存関係をインストールすることから始める.この場合、これらの依存関係はauths 0 deploy cliを含んでいます.steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2-beta
with:
node-version: "12"
- name: NPM Install
run: npm install
次のステップは、Author 0への実際の展開です.このステップでは、Githubコンソールにアップロードされた秘密から必要な環境変数を設定します.一度実行されるnpm run deploy
実行するNPMスクリプトa0deploy import -c ./config.json -i ./src/tenant.yaml
.- name: Push to Auth0
env:
AUTH0_DOMAIN: ${{secrets.AUTH0_DOMAIN}}
AUTH0_CLIENT_SECRET: ${{secrets.AUTH0_CLIENT_SECRET}}
AUTH0_CLIENT_ID: ${{secrets.AUTH0_CLIENT_ID}}
run: npm run deploy
最後に
それで終わりだ.私は自動的にユニットのテストを実行した後、Author 0に1つ以上のルールを展開することができます.このアプローチは、私が展開したコードに自信を持っており、どんなサイズのチームで働くときにも重要です.
As a final note the Auth0 Deploy CLI can be used to deploy pretty much all of your Auth0 configuration. If you are using Auth0 for production workloads I'd strongly suggest using a configuration as code approach to keep track of changes to your environment and allow testing changes in staging environments.
Different sections of the config (rules, custom login pages, applications, hooks, etc) can be stored in different repositories to reflect it's rate of and reasons to change.
カバー写真hannah grace からunsplash
Reference
この問題について(Githubアクションを用いたAutos 0ルールの連続的統合と展開), 我々は、より多くの情報をここで見つけました
https://dev.to/kleeut/continuous-integration-and-deployment-of-auth0-rules-using-github-actions-2a97
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
As a final note the Auth0 Deploy CLI can be used to deploy pretty much all of your Auth0 configuration. If you are using Auth0 for production workloads I'd strongly suggest using a configuration as code approach to keep track of changes to your environment and allow testing changes in staging environments.
Different sections of the config (rules, custom login pages, applications, hooks, etc) can be stored in different repositories to reflect it's rate of and reasons to change.
Reference
この問題について(Githubアクションを用いたAutos 0ルールの連続的統合と展開), 我々は、より多くの情報をここで見つけました https://dev.to/kleeut/continuous-integration-and-deployment-of-auth0-rules-using-github-actions-2a97テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol