당신의 Alexa 기술 향상
46078 단어 actionshackathon
내 워크플로우
"DevOps는 인력, 프로세스, 제품의 연합체로서 최종 사용자에게 지속적으로 가치를 제공할 수 있습니다."도노만 브라운, 마이크로소프트
DevOps는'문화'로 소프트웨어 개발(Dev)과 정보 기술 운영(Ops)을 결합시키는 실천을 가지고 시스템 개발의 생명 주기를 단축하고 고품질의 지속적인 교부를 제공하는 데 목적을 둔다.DevOps 문화는'생산 제일'의 심리 상태를 키웠다.
Alexa의 경우 DevOps는 최고 품질의 기술을 최종 고객에게 신속하게 전달할 수 있도록 도와줍니다.
이 글은 서로 다른 자원에서 온 자료를 포함하고 있어 참고 자료 부분에서 볼 수 있다.
선결 조건
이것은 이 프로젝트에서 사용하는 기술이다
ASK CLI를 사용하면 명령줄에서 프로그래밍 방식으로 Alexa 기술을 관리할 수 있는 기술 관리 API에 액세스할 수 있습니다.
ASK CLI를 사용하여 기술을 만드는 방법을 알고 싶으면 myNode.js Skill sample에서 설명한 첫 번째 단계를 따르십시오.
우리는 이 강력한 도구를 사용하여 우리의 파이프에서 몇 가지 절차를 실행할 것이다.우리 갑시다!
파이프
우리의 강력한 파이프에서 무슨 일이 일어났는지 하나하나 설명해 봅시다.
먼저 위 그림의 왼쪽에 있는 각 상자는 GitHub 작업 흐름 구성 파일
jobs
노드에 정의된 작업입니다.계산하다
체크 아웃 작업은 다음 작업을 수행합니다.
checkout:
runs-on: ubuntu-latest
name: Checkout
steps:
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2
- run: |
chmod +x -R ./test;
ls -la
건축하다
생성 작업은 다음과 같은 작업을 수행합니다.
build:
runs-on: ubuntu-latest
name: Build
needs: checkout
steps:
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2
- run: |
cd lambda;
npm install
예측 시험
예측 시험 작업은 정적 코드 품질 검사를 실행할 것이다.완전한 해석을 검사합니다here.
테스트
테스트 작업은 단원 테스트를 실행할 것이다.완전한 해석을 검사합니다here.
코드 덮어쓰기
코드cov 작업은 코드 덮어쓰기 보고서를 실행합니다.완전한 해석을 검사합니다here.
배치
배치 작업은 개발 단계에서 Alexa 기술을 Alexa 클라우드에 배치할 것이다.완전한 해석을 검사합니다here.
음성 사용자 인터페이스 테스트
이 작업들은 우리의 상호작용 모델을 검사할 것이다.완전한 해석을 검사합니다here.
통합 테스트
이 작업들은 상호작용 모델과 우리의 백엔드를 검사할 것이다.완전한 해석을 검사합니다here.
엔드 투 엔드 테스트
이 작업들은 전체 시스템을 검사하기 위해 음성을 입력으로 사용할 것이다.완전한 해석을 검사합니다here.
검증 테스트
인증을 제출하기 전에 이 작업은 Alexa 기술을 검증합니다.완전한 해석을 검사합니다here.
제출
이 작업들은 당신의 Alexa 기술 인증을 제출할 것입니다.완전한 해석을 검사합니다here.
스토리지 가공소재
공작물 저장 작업은 다음과 같은 작업을 수행합니다.
npm install
폴더/home/node/project
폴더
store-artifacts:
runs-on: ubuntu-latest
name: Submit
needs: submit
steps:
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2}
- name: Upload code
uses: actions/upload-artifact@v2
with:
name: code
path: ${{ github.workspace }}
워크플로우
위의 구성 파일에서 설명한 작업을 수행하는 GitHub 작업 흐름은
node_modules
에 있습니다.
on: [push]
jobs:
checkout:
runs-on: ubuntu-latest
name: Checkout
steps:
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2
- run: |
chmod +x -R ./test;
ls -la
build:
runs-on: ubuntu-latest
name: Build
needs: checkout
steps:
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2
- run: |
cd lambda;
npm install
pretest:
runs-on: ubuntu-latest
name: Pre-test
needs: build
steps:
# To use this repository's private action,
# you must check out the repository
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2
- run: |
cd lambda;
npm install;
npm run lint;
npm run lint-html
- name: Upload results
uses: actions/upload-artifact@v2
with:
name: eslint-report
path: lambda/reports/eslint/
test:
runs-on: ubuntu-latest
name: Test
needs: pretest
steps:
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2
- run: |
cd lambda;
npm install;
npm run test
- name: Upload results
uses: actions/upload-artifact@v2
with:
name: unit-tests-report-html
path: lambda/mochawesome-report/
- name: Upload results
uses: actions/upload-artifact@v2
with:
name: unit-tests-report-xml
path: lambda/reports/mocha/
codecov:
runs-on: ubuntu-latest
name: Code Coverage
needs: test
steps:
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2
- run: |
cd lambda;
npm install;
npm run codecov
env: # Or as an environment variable
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
deploy:
runs-on: ubuntu-latest
name: Deploy
needs: codecov
steps:
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2
- run: |
sudo npm install -g ask-cli;
sudo apt-get install -y jq
cd lambda;
npm install;
npm run copy-package;
cd src;
npm run build-production
- run: ls -la && ask deploy --ignore-hash
env: # Or as an environment variable
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
ASK_ACCESS_TOKEN: ${{ secrets.ASK_ACCESS_TOKEN }}
ASK_REFRESH_TOKEN: ${{ secrets.ASK_REFRESH_TOKEN }}
ASK_VENDOR_ID: ${{ secrets.ASK_VENDOR_ID }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
SKILL_ID: ${{ secrets.SKILL_ID }}
check-utterance-conflicts:
runs-on: ubuntu-latest
name: Check Utterance Conflicts
needs: deploy
steps:
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2
- run: |
sudo npm install -g ask-cli;
chmod +x -R ./test;
cd test/vui-test/;
./interaction_model_checker.sh $SKILL_ID v2
env: # Or as an environment variable
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
ASK_ACCESS_TOKEN: ${{ secrets.ASK_ACCESS_TOKEN }}
ASK_REFRESH_TOKEN: ${{ secrets.ASK_REFRESH_TOKEN }}
ASK_VENDOR_ID: ${{ secrets.ASK_VENDOR_ID }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
SKILL_ID: ${{ secrets.SKILL_ID }}
check-utterance-resolution:
runs-on: ubuntu-latest
name: Check Utterance Resolution
needs: deploy
steps:
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2
- run: |
sudo npm install -g ask-cli;
chmod +x -R ./test;
cd test/vui-test/;
./utterance_resolution_checker.sh $SKILL_ID v2
env: # Or as an environment variable
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
ASK_ACCESS_TOKEN: ${{ secrets.ASK_ACCESS_TOKEN }}
ASK_REFRESH_TOKEN: ${{ secrets.ASK_REFRESH_TOKEN }}
ASK_VENDOR_ID: ${{ secrets.ASK_VENDOR_ID }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
SKILL_ID: ${{ secrets.SKILL_ID }}
check-utterance-evaluation:
runs-on: ubuntu-latest
name: Check Utterance Evaluation
needs: deploy
steps:
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2
- run: |
sudo npm install -g ask-cli;
chmod +x -R ./test;
cd test/vui-test/;
./utterance_evaluation_checker.sh $SKILL_ID v2
env: # Or as an environment variable
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
ASK_ACCESS_TOKEN: ${{ secrets.ASK_ACCESS_TOKEN }}
ASK_REFRESH_TOKEN: ${{ secrets.ASK_REFRESH_TOKEN }}
ASK_VENDOR_ID: ${{ secrets.ASK_VENDOR_ID }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
SKILL_ID: ${{ secrets.SKILL_ID }}
integration-test:
runs-on: ubuntu-latest
name: Integration test
needs: check-utterance-evaluation
steps:
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2
- run: |
sudo npm install -g ask-cli;
chmod +x -R ./test;
sudo apt-get install -y expect
cd test/integration-test/;
./simple-dialog-checker.sh $SKILL_ID
env: # Or as an environment variable
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
ASK_ACCESS_TOKEN: ${{ secrets.ASK_ACCESS_TOKEN }}
ASK_REFRESH_TOKEN: ${{ secrets.ASK_REFRESH_TOKEN }}
ASK_VENDOR_ID: ${{ secrets.ASK_VENDOR_ID }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
SKILL_ID: ${{ secrets.SKILL_ID }}
end-to-test:
runs-on: ubuntu-latest
name: End-to-end test
needs: integration-test
steps:
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2
- run: |
sudo npm install -g ask-cli;
sudo npm install -g bespoken-tools;
chmod +x -R ./test;
bst test --config test/e2e-bespoken-test/testing.json
env: # Or as an environment variable
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
ASK_ACCESS_TOKEN: ${{ secrets.ASK_ACCESS_TOKEN }}
ASK_REFRESH_TOKEN: ${{ secrets.ASK_REFRESH_TOKEN }}
ASK_VENDOR_ID: ${{ secrets.ASK_VENDOR_ID }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
SKILL_ID: ${{ secrets.SKILL_ID }}
- name: Upload code
uses: actions/upload-artifact@v2
with:
name: bespoken-report
path: test_output/
validation-test:
runs-on: ubuntu-latest
name: Validation test
needs: end-to-test
steps:
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2
- run: |
sudo npm install -g ask-cli;
chmod +x -R ./test;
cd test/validation-test/;
./skill_validation_checker.sh $SKILL_ID v2
env: # Or as an environment variable
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
ASK_ACCESS_TOKEN: ${{ secrets.ASK_ACCESS_TOKEN }}
ASK_REFRESH_TOKEN: ${{ secrets.ASK_REFRESH_TOKEN }}
ASK_VENDOR_ID: ${{ secrets.ASK_VENDOR_ID }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
SKILL_ID: ${{ secrets.SKILL_ID }}
submit:
runs-on: ubuntu-latest
name: Submit
needs: validation-test
steps:
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2
- run: |
sudo npm install -g ask-cli;
chmod +x -R ./test;
cd test/submit/;
./submit.sh $SKILL_ID v2
env: # Or as an environment variable
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
ASK_ACCESS_TOKEN: ${{ secrets.ASK_ACCESS_TOKEN }}
ASK_REFRESH_TOKEN: ${{ secrets.ASK_REFRESH_TOKEN }}
ASK_VENDOR_ID: ${{ secrets.ASK_VENDOR_ID }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
SKILL_ID: ${{ secrets.SKILL_ID }}
store-artifacts:
runs-on: ubuntu-latest
name: Store Artifacts
needs: submit
steps:
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2
- name: Upload code
uses: actions/upload-artifact@v2
with:
name: code
path: ${{ github.workspace }}
GitHub 작업
파이핑을 해석한 후 중요한 것은 파이핑에서 사용할 수 있는 Docker 이미지를 사용하여 GitHub 작업을 해석하는 것입니다.
위의 Docker 이미지를 통해 GitHub 작업을 생성하여 ASK CLI 명령을 실행합니다.
이 GitHub 작업은 GitHub 운영 시장에서 제공됩니다.]https://github.com/marketplace/actions/alexa-ask-aws-cli-action
다음 예제를 시작 방법으로 사용할 수 있습니다.
- name: Alexa ASK AWS CLI Action
uses: xavidop/[email protected]
id: command
with:
command: 'ask --version'
env: # Or as an environment variable
ASK_ACCESS_TOKEN: ${{ secrets.ASK_ACCESS_TOKEN }}
ASK_REFRESH_TOKEN: ${{ secrets.ASK_REFRESH_TOKEN }}
ASK_VENDOR_ID: ${{ secrets.ASK_VENDOR_ID }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
SKILL_ID: ${{ secrets.SKILL_ID }}
# Use the output from the `hello` step
- name: Get the output
run: echo "The result was ${{ steps.command.outputs.result }}"
또는 워크플로우에서 사용: on: [push]
jobs:
test-action:
runs-on: ubuntu-latest
name: Test Action
steps:
# To use this repository's private action,
# you must check out the repository
- name: Checkout
uses: actions/checkout@v2
- name: Test action step
uses: xavidop/[email protected]
id: ask
with:
command: 'ask --version'
env: # Or as an environment variable
ASK_ACCESS_TOKEN: ${{ secrets.ASK_ACCESS_TOKEN }}
ASK_REFRESH_TOKEN: ${{ secrets.ASK_REFRESH_TOKEN }}
ASK_VENDOR_ID: ${{ secrets.ASK_VENDOR_ID }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
SKILL_ID: ${{ secrets.SKILL_ID }}
# Use the output from the `hello` step
- name: Get the output
run: echo "The result was ${{ steps.ask.outputs.result }}"
추가적으로 GiHub 작업에는 최신 버전의 ASK CLI가 사용됩니다.당신은 본 환매 협의에서 모든 설명을 찾을 수 있습니다.
xavidop 회사 / alexa 질문 aws cli docker
ASK CLI용 Docker 컨테이너, devops 파이핑에서 사용하기 쉬움
ASK 및 AWS CLI의 Docker 이미지
이 컨테이너의 목적은 DevOps 파이핑의 Docker 컨테이너 Amazon ASK CLI 및 Amazon AWS CLI 에서 사용할 수 있습니다.
참고: 이 포크는 martindsouza 이미지의 포크로 다음과 같이 변경되었습니다.
.github/workflows/main.yml
명령에서 "-v"매개 변수를 사용할 수 있습니다.구성 문의
너는 반드시 Alexa Developer 계좌가 있어야만 한다는 것을 고려해야 한다.
View on GitHub
결론
이것은 GitHub 작업을 사용하여 Alexa 기술을 개발하는 방법을 이해하는 첫걸음입니다.
이 예에서 보듯이 ASK CLI와 같은 Alexa 도구는 우리에게 많은 도움을 줄 수 있습니다.파이프를 업데이트할 때 이 자술 파일을 업데이트합니다.
나는 이 예시 항목이 당신에게 유용하기를 바랍니다.
이게 다야!
즐거운 인코딩!
제출 범주:
DIY 배포
Yaml 파일 또는 코드 링크
GitHub 저장소에 대한 링크가 있습니다.
xavidop 회사 / alexa-nodejs-lambda-helloworld-v2
Alexa Skill v2 템플릿은 노드를 사용합니다.회사 명
Alexa Skill with Node.js
Alexa 노드 기술.회사 명
Alexa Lambda 함수 또는 REST API 노드를 사용하여 Alexa 기술 개발 가능
Lambda 함수는 AWS에서 사용할 수 있는 서버 없는 함수에 대한 Amazon의 구현입니다.
Amazon은 디버깅이 쉽지 않지만 Lambda 함수를 사용하는 것을 권장합니다.
CloudWatch 로그에 로그인할 수 있지만 인터럽트를 클릭하고 코드를 한 걸음에 실행할 수 없습니다.
이것은 Alexa가 요청한 실시간 디버깅을 매우 어렵게 한다
본고에서 우리는 Node를 사용하여 Amazon Alexa를 위한 사용자 정의 기술을 실현할 것이다.js, npm 및 AWS Lambda 함수입니다.이 기술은 기본적으로 당신의 좋은 세계입니다..
View on GitHub
추가 리소스/정보
DevOps Wikipedia - 위키백과 참고
Official Alexa Skills Kit Node.js SDK - 공식 노드.js SDK 문서
Official Alexa Skills Kit Documentation - 공식 Alexa 기술 키트 설명서
Official GitHub Actions Documentation - 공식 GitHub 운영 설명서
Reference
이 문제에 관하여(당신의 Alexa 기술 향상), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-builders/devops-your-alexa-skill-3hom텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)