자습서: GitHub 작업을 사용한 린트 코드 - Amazon CodeCatalyst

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

자습서: GitHub 작업을 사용한 린트 코드

이 자습서에서는 Amazon CodeCatalyst 워크플로에 Super-Linter GitHub 작업을 추가합니다. Super-Linter 작업은 코드를 검사하고, 코드에 오류가 있는 영역, 서식 문제, 의심스러운 구문을 찾은 다음, 결과를 CodeCatalyst 콘솔에 출력합니다. 워크플로에 린터를 추가한 후 워크플로를 실행하여 샘플 Node.js 애플리케이션(app.js)을 린트합니다. 그런 다음 보고된 문제를 수정하고 워크플로를 다시 실행하여 수정 사항이 제대로 작동하는지 확인합니다.

작은 정보

AWS CloudFormation 템플릿과 같은 YAML 파일을 린트하기 위해 Super-Linter를 사용하는 것이 좋습니다.

사전 조건

시작하려면 다음이 필요합니다.

  • AWS 계정가 연결된 CodeCatalyst 스페이스. 자세한 내용은 스페이스 생성 섹션을 참조하십시오.

  • CodeCatalyst 스페이스의 이름이 codecatalyst-linter-project인 빈 프로젝트로. 처음부터 시작 옵션을 선택하여 이 프로젝트를 생성합니다.

    자세한 내용은 Amazon CodeCatalyst에서 빈 프로젝트 생성 섹션을 참조하십시오.

1단계: 소스 리포지토리 생성

이 단계에서는 CodeCatalyst에 소스 리포지토리를 생성합니다. 이 리포지토리를 사용하여 이 자습서의 샘플 애플리케이션 소스 파일인 app.js를 저장합니다.

소스 리포지토리에 대한 자세한 정보는 소스 리포지토리 생성 섹션을 참조하세요.

소스 리포지토리를 생성하려면
  1. https://codecatalyst.aws/에서 CodeCatalyst 콘솔을 엽니다.

  2. codecatalyst-linter-project 프로젝트로 이동합니다.

  3. 탐색 창에서 코드를 선택한 다음 소스 리포지토리를 선택합니다.

  4. 리포지토리 추가를 선택하고 리포지토리 생성을 선택합니다.

  5. 리포지토리 이름에 다음과 같이 입력합니다.

    codecatalyst-linter-source-repository
  6. 생성(Create)을 선택합니다.

2단계: app.js 파일 추가

이 단계에서는 원본 리포지토리에 app.js 파일을 추가합니다. app.js에는 린터에서 찾을 수 있는 몇 가지 실수가 있는 함수 코드가 포함되어 있습니다.

app.js 파일을 추가하려면
  1. CodeCatalyst 콘솔에서 codecatalyst-linter-project 프로젝트를 선택합니다.

  2. 탐색 창에서 코드를 선택한 다음 소스 리포지토리를 선택합니다.

  3. 소스 리포지토리 목록에서 codecatalyst-linter-source-repository 리포지토리를 선택합니다.

  4. 파일에서 파일 생성을 선택합니다.

  5. 다음 코드를 텍스트 상자에 입력합니다.

    // const axios = require('axios') // const url = 'http://checkip.amazonaws.com/'; let response; /** * * Event doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-input-format * @param {Object} event - API Gateway Lambda Proxy Input Format * * Context doc: https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-context.html * @param {Object} context * * Return doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html * @returns {Object} object - API Gateway Lambda Proxy Output Format * */ exports.lambdaHandler = async (event, context) => { try { // const ret = await axios(url); response = { statusCode: 200, 'body': JSON.stringify({ message: 'hello world' // location: ret.data.trim() }) } } catch (err) { console.log(err) return err } return response }
  6. 파일 이름app.js를 입력합니다. 다른 기본 옵션을 유지합니다.

  7. 커밋을 선택합니다.

    app.js 새 역할이 생성되었습니다.

3단계: Super-Linter 작업을 실행하는 워크플로 생성

이 단계에서는 코드를 소스 리포지토리로 푸시할 때 Super-Linter 작업을 실행하는 워크플로를 생성합니다. 워크플로는 YAML 파일에 정의한 다음 구성 요소로 구성됩니다.

  • 트리거 - 이 트리거는 소스 리포지토리에 변경 사항을 푸시할 때 워크플로 실행을 자동으로 시작합니다. 트리거에 대한 자세한 내용은 트리거를 사용하여 워크플로 실행 자동 시작 주제를 참조하십시오.

  • 'GitHub Actions' 작업 - 트리거 시 GitHub Actions 작업은 Super-Linter 작업을 실행하여 소스 리포지토리의 모든 파일을 검사합니다. 리터에서 문제를 발견하면 워크플로 작업이 실패합니다.

Super-Linter 작업을 실행하는 워크플로를 생성하려면
  1. CodeCatalyst 콘솔에서 codecatalyst-linter-project 프로젝트를 선택합니다.

  2. 탐색 창에서 CI/CD를 선택한 다음 워크플로를 선택합니다.

  3. 워크플로 생성을 선택합니다.

  4. 소스 리포지토리에서 codecatalyst-linter-source-repository를 선택합니다.

  5. 브랜치에서 main을 선택합니다.

  6. 생성(Create)을 선택합니다.

  7. YAML 샘플 코드를 삭제합니다.

  8. 다음 YAML을 추가합니다:

    Name: codecatalyst-linter-workflow SchemaVersion: "1.0" Triggers: - Type: PUSH Branches: - main Actions: SuperLinterAction: Identifier: aws/github-actions-runner@v1 Configuration: Steps: github-action-code

    이 절차의 다음 단계에 설명된 대로 앞의 코드에서 github-action-code를 Super-Linter 작업 코드로 바꿉니다.

  9. GitHub Marketplace의 Super-Linter 페이지로 이동합니다.

  10. steps:(소문자)에서 코드를 찾아 CodeCatalyst 워크플로의 Steps:(대문자)에 붙여 넣습니다.

    다음 코드와 같이 CodeCatalyst 표준에 맞게 GitHub 작업 코드를 조정합니다.

    이제 CodeCatalyst 워크플로는 다음과 같습니다.

    Name: codecatalyst-linter-workflow SchemaVersion: "1.0" Triggers: - Type: PUSH Branches: - main Actions: SuperLinterAction: Identifier: aws/github-actions-runner@v1 Configuration: Steps: - name: Lint Code Base uses: github/super-linter@v4 env: VALIDATE_ALL_CODEBASE: "true" DEFAULT_BRANCH: main
  11. (선택 사항) 커밋하기 전에 YAML 코드가 유효한지 확인하려면 검증을 선택합니다.

  12. 커밋을 선택하고 커밋 메시지를 입력한 다음 codecatalyst-linter-source-repository리포지토리를 선택하고 커밋을 다시 선택합니다.

    이제 워크플로를 생성했습니다. 워크플로 상단에 정의된 트리거로 인해 워크플로 실행이 자동으로 시작됩니다.

진행 중인 워크플로 실행을 보려면
  1. 탐색 창에서 CI/CD를 선택한 다음 워크플로를 선택합니다.

  2. 방금 생성한 codecatalyst-linter-workflow 워크플로를 선택합니다.

  3. 워크플로 다이어그램에서 SuperLinterAction을 선택합니다.

  4. 작업이 실패할 때까지 기다립니다. 이 실패는 코드에서 linter가 문제를 발견했기 때문에 예상됩니다.

  5. CodeCatalyst 콘솔을 열어 두고 4단계: Super-Linter에서 발견한 문제 해결로 이동합니다.

4단계: Super-Linter에서 발견한 문제 해결

Super-Linter는 app.js 코드와 소스 리포지토리에 포함된 README.md 파일에서 문제를 발견했어야 합니다.

린터에서 발견된 문제를 해결하려면
  1. CodeCatalyst 콘솔에서 로그 탭을 선택한 다음 Lint Code Base를 선택합니다.

    생성된 슈퍼 린터 작업이 표시되는 로그입니다.

  2. 슈퍼 린터 로그에서 90행을 따라 아래로 스크롤하면 문제의 시작을 찾을 수 있습니다. 다음처럼 보일 것입니다.

    /github/workspace/hello-world/app.js:3:13: Extra semicolon. /github/workspace/hello-world/app.js:9:92: Trailing spaces not allowed. /github/workspace/hello-world/app.js:21:7: Unnecessarily quoted property 'body' found. /github/workspace/hello-world/app.js:31:1: Expected indentation of 2 spaces but found 4. /github/workspace/hello-world/app.js:32:2: Newline required at end of file but not found.
  3. 소스 리포지토리에서 app.jsREADME.md를 수정하고 변경 사항을 커밋합니다.

    작은 정보

    README.md를 수정하려면 다음과 같이 코드 블록에 markdown을 추가합니다.

    ```markdown Setup examples: ... ```

    변경하면 다른 워크플로가 자동으로 실행됩니다. 워크플로가 완료될 때까지 기다립니다. 모든 문제를 해결한 경우 워크플로가 성공해야 합니다.

정리

CodeCatalyst에서 정리하여 환경에서 이 자습서의 트레이스를 제거합니다.

CodeCatalyst에서 정리하려면
  1. https://codecatalyst.aws/에서 CodeCatalyst 콘솔을 엽니다.

  2. codecatalyst-linter-source-repository를 삭제합니다.

  3. codecatalyst-linter-workflow를 삭제합니다.

이 자습서에서는 일부 코드를 린트하기 위해 CodeCatalyst 워크플로에 Super-Linter GitHub 작업을 추가하는 방법을 배웠습니다.