당신의 Alexa 기술 향상

46078 단어 actionshackathon

내 워크플로우


"DevOps는 인력, 프로세스, 제품의 연합체로서 최종 사용자에게 지속적으로 가치를 제공할 수 있습니다."도노만 브라운, 마이크로소프트
DevOps는'문화'로 소프트웨어 개발(Dev)과 정보 기술 운영(Ops)을 결합시키는 실천을 가지고 시스템 개발의 생명 주기를 단축하고 고품질의 지속적인 교부를 제공하는 데 목적을 둔다.DevOps 문화는'생산 제일'의 심리 상태를 키웠다.
Alexa의 경우 DevOps는 최고 품질의 기술을 최종 고객에게 신속하게 전달할 수 있도록 도와줍니다.
이 글은 서로 다른 자원에서 온 자료를 포함하고 있어 참고 자료 부분에서 볼 수 있다.

선결 조건


이것은 이 프로젝트에서 사용하는 기술이다
  • 아마존 개발자 계정 - How to get it
  • AWS 계정 - Sign up here for free
  • CLI-Install and configure ASK CLI 문의
  • GitHub 계정 - Sign up here
  • Visual Studio 코드
  • Alexa Skills Kit 명령줄 인터페이스(ASK CLI)는 Alexa 기술 및 관련 리소스(예: AWS Lambda 기능)를 관리하는 도구입니다.
    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
    

    건축하다
    생성 작업은 다음과 같은 작업을 수행합니다.
  • 코드 검사.
  • 을 실행하여 모든 노드를 다운로드합니다.js 의존항, 개발 의존항을 포함합니다.
  •   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 폴더
  • Alexa 기술의 모든 코드를 인공제품으로 저장한다.GitHub 작업에서 원하는 대로 액세스할 수 있습니다.
  • 
      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 CLIAmazon AWS CLI 에서 사용할 수 있습니다.
    참고: 이 포크는 martindsouza 이미지의 포크로 다음과 같이 변경되었습니다.
  • Image base는 Node의 현재 버전이 아닌 최신 LTS 버전입니다.js.
  • 에는 ASK\uCLI\u 버전 구축 매개변수가 추가되어 다양한 ASK CLI 버전을 사용할 수 있습니다.
  • ASK CLI가 명령에 사용할 git와 zip 패키지를 추가했습니다.
  • 에 Bespoken이 추가되었습니다.
  • 에 jq와expectcli 명령이 추가되었습니다.
  • 볼륨을 삭제합니다.나는 내 DevOps 파이프에서 사용할 간단한 docker 이미지에서 이렇게 할 필요가 없다고 생각한다.또한 언제든지 .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
  • Prerequisites
  • Creating the Skill with ASK CLI
  • Project Files
  • Lambda function in Javascript
  • Building the Skill with Visual Studio Code
  • Running the Skill with Visual Studio Code
  • Debugging the Skill with Visual Studio Code
  • Testing requests locally
  • Deploying your Alexa Skill
  • Test requests directly from Alexa
  • Resources
  • CICD
  • Conclusion
  • 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 운영 설명서
  • 좋은 웹페이지 즐겨찾기