Github 작업을 사용하는 TypeScript 프로젝트의 코드 및 보안 확인
14406 단어 testingtypescriptdevopsgithub
<TLDR>
Github 운영 네이티브는 CI 파이핑을 지원합니다.단일 작업 흐름 정의 파일을 저장소에 추가하고 요청마다 자동 테스트, 안전성 및 코드 스타일 검사를 실행합니다.repo</TLDR>
의 전체 코드 및 구성나는 너희들이 시간을 좀 써서 우리의 생활과 업무의 아름다운 시간을 감상하도록 격려한다.
몇 년 전에 지속적인 집적 파이프를 건설하는 데 필요한 것이 무엇인지 상상해 보세요.CI/CD 작업을 호스팅하는 가장 일반적인 도구 중 하나는 Jenkins입니다. 따라서 최소한 다음 작업을 수행해야 합니다.
지금은요?
클라우드 공급자, 서버 플랫폼이 없고 강력한 도구가 제공하는 현대 기술 덕분에 우리는 며칠 또는 몇 주 안에 신제품/프로젝트를 구축하고 발표할 수 있다.
바뀌지 않은 것은 코드의 성능, 안전성, 오류, 일치성에 대한 요구이다.
Github에서 개인 또는 오픈 소스 저장소를 호스팅하는 경우 Github 작업을 사용하여 CI 파이프라인을 구축할 수 있습니다.
Github는 변경 사항을 제출하거나 요청을 보낼 때마다 사용자가 정의한 작업 (검사) 을 포함하는 CI 작업 흐름을 시작합니다.
모든 작업은 유용한 작업 (테스트 실행, 코드 스타일 검사 실행 등) 을 수행하고 결과를 보고합니다.
PR 검토자는 코드의 변경 사항을 확인하는 것 외에 코드를 결합하기 전에 CI 서버의 출력을 검토합니다.
Github Actions는 공공 저장소에는 무료이며, 개인 재구매에는 아낌없는 무료 계층이 있습니다.상세 정보here.
실제 세계의 Github CI 워크플로우
CI 작업 흐름을 만듭니다. 생성된 모든 드래그 요청에 대해 여러 개의 검사를 실행합니다.
구체적으로 다음과 같은 작업을 수행하고자 합니다.
알다시피 모든 검사는 백엔드와 프런트엔드 항목에 적용됩니다.
Github에서는 워크플로우 정의가
.github/workflows
폴더 아래에 있기를 원합니다.거기에 새 파일을 만듭니다.각 부분의 기능 설명을 이해하려면 아래 코드의 주석을 참조하십시오.name: CI
on: [pull_request] # we want the workflow to trigger on commits to PRs only
jobs: # each workflow consists of 1+ jobs; by default, all jobs run in parallel
lint: # job name
runs-on: ubuntu-latest # host's operating system
steps: # each job consists of 1+ steps
- name: Checkout commit # download the code from triggering commit
uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '12.x'
- name: Cache NPM # leverage npm cache on repeated workflow runs if package.json didn't change
uses: actions/cache@v1
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install Dependencies
run: npm ci
- name: Run linter
run: npm run lint
security: # in this and following jobs, only the last step will be different
runs-on: ubuntu-latest
steps:
- name: Checkout commit
uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '12.x'
- name: Cache NPM
uses: actions/cache@v1
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install Dependencies
run: npm ci
- name: Run security check
run: npm run audit-security
test:
runs-on: ubuntu-latest
steps:
- name: Checkout commit
uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '12.x'
- name: Cache NPM
uses: actions/cache@v1
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install Dependencies
run: npm ci
- name: Run tests
run: npm run test
copy:
runs-on: ubuntu-latest
steps:
- name: Checkout commit
uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '12.x'
- name: Cache NPM
uses: actions/cache@v1
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install Dependencies
run: npm ci
- name: Run copy checks
run: npm run check-copy
step 코드 복제에 있어서 이것은 진정한 최선의 선택이 아니지만, 만약 우리가 PR 페이지에서 단독 프로젝트로 보고하기를 원한다면, 지금은 해결할 방법이 없다.작업 흐름 코드 공유는 고도awaited의 기능이다.다음은 워크플로에서 참조하는 스크립트입니다.주의: 일부 명령은
npm-run-all
패키지를 통해 하나의 호출로 조합됩니다. "scripts": {
"lint:eslint": "eslint \"**/*.{ts,tsx}\" --max-warnings=0",
"lint:tsc": "tsc --noemit",
"lint:markdown": "markdownlint *.md",
"lint": "run-p lint:*",
"audit-security": "audit-ci --config ./audit-ci.json",
"test": "jest --verbose",
"check-copy:cspell": "cspell --config=.cspell.json **/*.md",
"check-copy:language": "write-good *.md --no-passive",
"check-copy": "run-p check-copy:*"
},
이렇게!워크플로우 yml 파일을 제출하고 Git로 밀어넣습니다.다음에 끌어오기 요청을 작성하면 PR에서 제출한 워크플로가 실행됩니다. 검사 목록을 확장할 수도 있습니다.실제로 CI 서버나 docker 용기에서 실행할 수 있는 모든 것들, HTTP 요청을 보내서 실행할 수 있는 모든 것들은 CI 작업 흐름의 일부가 될 수 있다.이 가능하다, ~할 수 있다,...만약 당신이 이런 내용을 좋아한다면 트위터에서 최신 업데이트를 얻을 수 있습니다.
Reference
이 문제에 관하여(Github 작업을 사용하는 TypeScript 프로젝트의 코드 및 보안 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/maxivanov/code-and-security-checks-in-typescript-projects-with-github-actions-3jmg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)