AWS Amplify Constore에서 CI를 위해 노력하는 이야기

며칠 전JAWS-UG 요코하마 #16 DevOps에 발표된 내용의 기술 부분.
AWS Amplify Console 지금은 CD(지속적 납품)를 위한 서비스로 보이지만 아래의 일은 이미 스스로 실시했다.
  • 단일 테스트unittest는 Amplify Consile에서 자동 구현
  • Amplify Consile에서 시나리오 테스트 자동화 Karate
  • HTML 출력을 통해 1, 2에 구현한 결과로 브라우저에서 표시할 수 있음(Amplify Console는 구축할 때 매번 실례를 분배하기 때문에 로컬 출력은 기본적으로 폐기됨)
  • 상술한 amplify를 실시할 수 있다.제작yml
  • 결실


    적용 가능한 amplify입니다.다음은 우리가 제출한 ype와 샘플 응용 프로그램입니다.

    어떤 응용 프로그램입니까?


    CI 대상의 응용은 코그니토의 사용자 관리를 간단하게 실시할 수 있는 웹 서비스다.(Cognito는 사용자를 인정하거나 삭제하는 등 번거롭다) 아직 제작 중이지만 어느 정도 기능이 완비되어 있고 화면과 서버 측이 잘 설치되어 있기 때문에 이 CI를 드릴게요.
    클라이언트는 Anglar7이고 서버는 Python 3입니다.7의 AWS Lambda로 구현됩니다.

    Amplify Constore에서 단일 테스트 및 스크립트 테스트 수행


    amplify.yml 편집이 관건이지만, 앰플리파이 컨놀러는 빌딩 기계를 마음대로 설치할 수 있기 때문에 다양한 장비를 설치해야 한다.

    사전 준비


    CI/CD를 설치하는 데 필요한 미흡한 점(작업과 자재를 줄이고 모든 처리가 preBuild에 포함됩니다.)

    AWS 인증 설정


    Serverless Framework에는 서버 쪽을 디버깅하는 메커니즘이 있지만 기본적으로 시험적으로 사용할 수 있는 권한이 준비되어 있지 않기 때문에 스스로 준비합니다.
    - mkdir  -p ~/.aws
    - echo "[${SLS_AWS_ACCOUNT_ID}]" > ~/.aws/credentials
    - echo "aws_access_key_id = ${ACCESS_KEY}" >>  ~/.aws/credentials
    - echo "aws_secret_access_key = ${SECRET_KEY}" >>  ~/.aws/credentials
    

    unittest를 실행하기 위해 Python, Pip 설치


    파이썬의 기본 창고는 3.4 시스템만 있습니까?그래서 그걸 설치해.또한 PyUnitittest를 설치하여 보고서를 HTML로 내보냅니다.
    - yum update python34 -y
    - yum -y install python34
    - python3 --version
    - curl https://bootstrap.pypa.io/get-pip.py | python3
    - pip3 -V
    - pip3 install -r requirements_test.txt -t libs
    - python3 tests/test_user_handler.py
    
    PyUnitReport는 Requirements입니다.test.에 txt가 기재되어 있습니다.
    pyunitreport==0.1.4
    

    Karate를 실행하기 위해 Java 및 Maven 설치


    Karate는 마벤트,Gradle로 수행할 수 있고, 이번에는 마벤트로 수행할 수 있다.
    - yum install -y java-1.8.0-openjdk-devel.x86_64
    - yum install -y apache-maven
    

    Node.js의 Daemon을 위한 forever 설치


    카라테를 ng e2e 명령으로 집행하려 하였으나, 품을 줄이고 재료를 줄여 실시ng serve 하여 내용을 데몬화할 수 있게 하였다.이 때문에 포에버라는 도구가 좋은 것 같아요.
    - npm install -g forever
    

    각각 단일 테스트와 방안 테스트를 진행하다


    여기까지만 준비됐으니 실제 단일 테스트와 시나리오 테스트를 실시해 보자.HTML 보고서로 그 결과를 출력하고 있기 때문에 S3의 특정한 통에 업로드합니다.
    다음과 같이 설정합니다.
    # unittestによる単体試験とその結果のHTML出力、S3へのアップロード
    - python3 tests/test_user_handler.py
    - ls reports/html_report/ > file_path.txt
    - aws s3 cp reports/html_report/`cat file_path.txt` s3://${REPORT_BUCKET}/index.html --profile=${SLS_AWS_ACCOUNT_ID}
    :
    :
    # Karateによるシナリオ試験とその結果のHTML出力、S3へのアップロード
    - mvn clean test
    - ls target/
    - cd target/surefire-reports/
    - aws s3 cp ./ s3://${REPORT_BUCKET}/karate/ --recursive --profile=${SLS_AWS_ACCOUNT_ID}
    - aws s3 cp ../karate.log s3://${REPORT_BUCKET}/karate/karate.log --profile=${SLS_AWS_ACCOUNT_ID}
    
    
    S3에서 필요한 파일을 각각 출력했기 때문에 확인 후 테스트 결과를 순조롭게 출력했다.
    PyUnitReport의 단일 테스트 결과

    Karate 기반 시나리오 테스트 결과

    총결산


    AWS 앰플리파이 콘솔 자체는 CD 감각이 강한 서비스이지만 맞춤형 제작을 통해 CII 스타일도 구현할 수 있다.우선 앰플리파이 콘솔에 통과하는 물건 한 병을 지아이허브 위에 올려놓고 관심 있는 사람은 안에 있는 물건을 볼 수 있다.

    좋은 웹페이지 즐겨찾기