Auth0의 CI/CD 파이프라인을 CircleCI를 사용하여 만든다
개요
Auth0의 설정이나 Rules나 CustomeDatabase 주위의 소스 코드는 일원적으로 Git등으로 관리를 실시해, CircleCI등으로 CI를 통한 후에 자동으로 배포하고 싶은 경우가 많다고 생각합니다. 특히 실안건의 프로덕션 환경 등에서는. 이 기사에서는 그 방법을 tips로 씁니다.
또, 이번 내용은 이하의 GitHub 리포지토리로 공개하고 있으므로, 보다 상세를 알고 싶으면 확인해 보세요
htps : // 기주 b. 코 m / anfu s pu b ぃ 카치 온 s / 아 th0에서 p p y
Auth0 Deploy CLI
Auth0에는 Auth0 Deploy CLI이라는 CLI에서 소스 코드와 설정을 배포하는 도구가 있습니다. 이것을 사용하는 것으로 CI/CD 파이프라인을 만들어 가는 것입니다.
설치
npm으로 자신의 PC 환경에 설치합니다.
$ npm i -g auth0-deploy-cli
기존 테넌트 설정을 인코딩
Auth0 Deploy CLI가 유용한 것은 기존 테넌트의 설정을 뽑아서 yaml의 설정이나 로컬의 소스 코드 트리에 전개해 주는 것입니다.
우선 설정을 꺼내고 싶은 테넌트측에 Auth0 Deploy CLI Extension 를 인스톨 합니다. 이제 자동으로 배포 용 응용 프로그램을 만듭니다.
그런 다음 로컬로 돌아가서 다음과 같은
config.json
파일을 만들고 client_id와 client_secret은 Auth0 Deploy CLI Extension에서 만든 응용 프로그램의 값을 각각 넣습니다.config.json
{
"AUTH0_DOMAIN": "<YOUR_TENANT>.auth0.com",
"AUTH0_CLIENT_ID": "<client_id>",
"AUTH0_CLIENT_SECRET": "<client_secret>",
"AUTH0_KEYWORD_REPLACE_MAPPINGS": {
"AUTH0_TENANT_NAME": "<NAME>",
"ENV": "DEV"
},
"AUTH0_ALLOW_DELETE": false,
"AUTH0_EXCLUDED_RULES": [
"rule-1-name",
"rule-2-name"
]
}
그리고 다음 명령을 실행합시다.
$ a0deploy export -c config.json -f yaml -o ./
그러면 설정 내용이 모두 로컬로 전개되어 있을 것입니다.
tenant.yml에 환경 변수 추가
내보내기 및 자동 생성된
tenant.yml
파일은 다음과 같은 임차인 설정을 설명합니다. 단, 이 파일을 내보낸 만큼의 상태라면 도메인 등의 환경에 따라 바꾸고 싶은 변수가 하드 코딩되어 있습니다.tenant.yaml
tenant:
enabled_locales:
- ja
flags:
universal_login: true
new_universal_login_experience_enabled: true
disable_clickjack_protection_headers: false
universal_login:
colors:
primary: '#000000'
page_background: '#e1e1e1'
clients:
- name: mysite
allowed_clients: []
allowed_logout_urls:
- 'http://localhost:8080/auth0/'
allowed_origins:
- 'http://localhost:8080'
app_type: regular_web
callbacks:
- 'http://localhost:8080/auth0/'
client_aliases: []
cross_origin_auth: false
custom_login_page_on: true
Auth0 Deploy CLI는 yml 파일에서
@@key@@
또는 ##key##
와 같은 식별자를 제공하여 환경 변수의 값을 읽을 수 있습니다. 다음과 같은 예입니다. 이제 배포시 SITE_URL
라는 환경 변수의 값을 읽고 배포합니다.allowed_logout_urls:
- 'http://##SITE_URL##/auth0/'
CI/CD 파이프라인 구축
테스트 작성
내보내면
tenant.yml
이외에도 rules
또는 databases
디렉토리 아래에 Rules 및 CustomeDatabase 기능에 사용되는 소스 코드가 다운로드됩니다.이것들을 바탕으로 유닛 테스트를 작성해 봅시다. 여기는 간단한 JS 단위 테스트 테스트이므로 자세한 내용은 생략합니다.
배포 전략 결정
이번에는 GitHub의 Tag에서의 릴리스 기능을 사용. Tag를 만들어 push하는 것으로 테스트가 달리고, 모두 패스하면 프로덕션의 테넌트에 배포가 달린다고 하는 설정을 해 봅시다
배포 스크립트 작성
배포 스크립트는 다음과 같은 Node.js 스크립트를 작성합니다.
deploy.js
const auth0 = require('auth0-deploy-cli')
const config = {
AUTH0_DOMAIN: process.env.AUTH0_DOMAIN,
AUTH0_CLIENT_SECRET: process.env.AUTH0_CLIENT_SECRET,
AUTH0_CLIENT_ID: process.env.AUTH0_CLIENT_ID,
AUTH0_ALLOW_DELETE: true
}
auth0
.deploy({
input_file: 'tenant.yaml',
config,
env: process.env
})
.then(() => console.log('yey deploy was successful')) // eslint-disable-line no-console
.catch((err) => console.log(`Oh no, something went wrong. Error: ${err}`)) // eslint-disable-line no-console
그런 다음
package.json
에서 다음 설정을 사용하여 npm run deploy
에서 배포할 수 있습니다.package.json
"scripts": {
"deploy": "node scripts/deploy.js"
},
CircleCI 설정 파일 작성
다음과 같이 하면 Tag가 만들어진 시점에서 테스트와 배포가 실행됩니다. Auth0의 webtask 환경이 Node8이므로 이에 맞추어 8계의 컨테이너를 읽고 있습니다. 위의 배포 스크립트 내에서 호출하는 환경 변수는 배포 대상의 프로덕션 테넌트 설정을 CirclCI에 환경 변수로 추가합시다.
.circleci/config.yaml
version: 2
jobs:
build:
docker:
- image: circleci/node:8.11
working_directory: ~/repo
steps:
- checkout
- restore_cache:
keys:
- v1-dependencies-{{ checksum "package.json" }}
- v1-dependencies-
- run: npm install
- save_cache:
paths:
- node_modules
key: v1-dependencies-{{ checksum "package.json" }}
- run:
name: Formatting coding standard by prettier
command: npm run fmt
- run:
name: Check coding standard by ESLint
command: npm run lint
- run:
name: Run test
command: npm run test
deploy-prod:
docker:
- image: circleci/node:8.11
working_directory: ~/repo
steps:
- checkout
- run: npm install
- run: npm run deploy
workflows:
version: 2
build-deploy:
jobs:
- build:
filters:
tags:
only: /.*/
- deploy-prod:
requires:
- build
filters:
tags:
only: /.*/
branches:
ignore: /.*/
배포 구현
아래에서 태그를 만듭니다.
$ git tag 1.0.0
$ git push origin 1.0.0
CircleCI 대시보드를 보면 성공적으로 배포가 완료되었습니다!
Reference
이 문제에 관하여(Auth0의 CI/CD 파이프라인을 CircleCI를 사용하여 만든다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/horike37/items/d6d6a71a95be3aa4f304텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)