Github 작업 및 CI/CD 워크플로우 가이드
Github 작업
이것은 Github에서 제작한 도구로 우리가 임무를 자동화하는 데 도움을 줄 수 있다.
github가 행동을 취하기 전에, 우리는 코드를 전송하고, 수동으로 테스트를 실행하며, 버그를 복구하고, 다시 테스트를 하고, 더 많은 버그를 복구해야 한다.어떻게 해야 할지 알아?Github 작업은 워크플로우를 자동화하는 데 도움이 됩니다.CI/CD에 대해 자세히 살펴보겠습니다.
지속적인 통합
이것은 코드를 기존 코드 라이브러리와 통합시키는 것과 관련이 있다.
개발자가git 환매를 추진하고 테스트 세트가 자동으로 운행한다.오류가 발생하면 다음 단계를 시작할 수 없습니다.그러나 만약 모든 것이 순조롭게 진행된다면 우리는 다음 단계로 진입할 것이다.
지속적인 배포
이것은 코드를 위탁 관리 공급자에게 보내는 것과 관련이 있다.
전송된 코드(테스트가 완료되어 버그가 없기를 바랍니다)는 배포 서버로 전송됩니다. 이 서버는 실시간 사이트의 변경 사항을 반영합니다.예를 들어 CI 단계 이후 코드는heroku로 전송됩니다. (이 예는 위탁 관리 서비스입니다.)
용어와 개념
워크플로우는 GitHub 저장소에 존재하는 자동화 프로세스입니다.이것은 자동 작업 방식을 지정하는 데 사용되는 구성이며 YAML 파일을 통해 완성됩니다.
name: Deploy to Firebase Hosting
on: push
jobs:
build_and_preview:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: npm ci && npm run build
- uses: FirebaseExtended/action-hosting-deploy@v0
이것은 프로필의 예이다.걱정하지 마라, 우리는 이후에 상세하게 토론할 것이다.작업은
npm run test
또는 npm run build
와 같은 별도의 명령입니다.행동은 작업 흐름의 구성 부분이다하나의 조작을 실행하는 것을 단계라고 한다.행동은 한 걸음이다.한 단계는 의존항을 설치하는 것이고, 다음 단계는 응용 프로그램을 구축하는 것이며, 마지막 단계는 위탁 관리 공급자에게 배치하는 것이다.
모든 이 절차는 하나의 작업을 만들 것이다.작업은 런너라는 서버에서 실행됩니다.대부분의 경우, runner는 GitHub에 위탁 관리된다.너는 스스로 진행을 할 수 있지만, 나는 이것이 어떻게 된 일인지 모르겠다. 그래서 이 블로그는 GitHub을 사용하여 진행하는 달리기 선수만 언급했다.워크플로우 YAML 파일을 구성하면 작업 포인트가 표시됩니다.
단계는 작업이 수행할 수 있는 임무다.
작업은 여러 단계로 구성되어 가상 환경의 실례에서 실행된다.현재 작업이 이전 작업의 성공 여부에 따라 달라진다면 작업은 서로 독립적으로 실행할 수도 있고 순서대로 실행할 수도 있다.
첫 번째 Github 작업
Github 작업은 루트 디렉토리
.github/workflows
폴더에서 생성됩니다.만약 네가 원한다면, 너는 너 자신의 프로젝트를 계속할 수 있다. 우리는 자동으로 완성할 것이다.너는 그것을 마음대로 뭐라고 불러도 된다.이 동작은github의 actions
옵션 카드에 표시됩니다.각 작업에는 다음과 같은 3가지 필수 속성이 있습니다.
name
- 작업의 이름()on
- 재구매 추진 등의 시기(예: 재구매 추진)jobs
- 작업을 호출할 때 완료해야 하는 작업(예: 실행 테스트 세트)YAML/YML
만약 당신이yaml을 모른다면,yaml은 기본적으로 괄호를 가진 JSON입니다.Yaml은 대부분 들여쓰기에 의존합니다. 정확한 빈칸/탭이 있는지 확인하십시오.제가 yaml 문법을 간략하게 소개하겠습니다.
example: 'lorem-ipsum'
example-object:
x: 'y',
abc: 'pqr'
array:
- a: a
- b: b
새 파일 deployment.yml
을 만듭니다.이 프레젠테이션에서, 코드가 주 지점으로 전송될 때, 이 동작은 Firebase 호스트에 배치될 동작을 만들 것입니다.name: learn-github-actions
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- run: echo 'PUSH'
우리는 deployment.yml
파일에 다음과 같은 코드를 추가했다.한 걸음 한 걸음 한 걸음 훑어봅시다.name
: 워크플로의 이름으로, GitHub repo의 작업 탭에 나타납니다.on
: 들을 사건(예를 들어 밀고 당기기 요청 등)jobs
: 모든 작업의 수조deploy
: 첫 번째 작업의 명칭으로 비슷한 방식으로 더 많은 작업을 추가할 수 있음runs-on
: 작업을 지정된 버전의 Ubuntu Linux 실행 프로그램에서 실행하도록 구성합니다.steps
: deploy
작업에서 실행되는 절차 그룹.이 그룹의 모든 항목은 하나의 조작이나 명령입니다 git add .
git commit -m "Adding deployment workflow"
git push origin master
변경 사항을 푸시한 후 재구매 협의의 actions
옵션 카드로 이동actions
옵션 카드에서 모든 작업을 정확하게 완료하면 learn-github-actions
(yml 파일의 작업 흐름 이름) 이라는 작업 흐름을 발견할 수 있습니다. 메시지 제출 제목이 있을 것입니다.그것을 클릭하세요.작업 흐름을 누르면 작업 흐름에서yml 파일 이름과
deploy
작업을 볼 수 있습니다.지금
deploy
숙제를 클릭하세요.이 작업을 완료하면 작업 중의 각 단계를 볼 수 있습니다.단계 중 하나를 클릭하면 터미널에서 어떻게 작동하는지 볼 수 있습니다지속적인 통합 및 테스트
코드를 전송할 때마다 테스트를 실행하는 작업 흐름을 실현합시다.
name: NodeJS Tests
on: ['push']
jobs:
test_node:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.x, 14.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- run: npm install
- run: npm run build --if-present
- run: npm run coverage
- name: Coveralls
uses: coverallsapp/github-action@master
env:
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
COVERALLS_GIT_BRANCH: ${{ github.ref }}
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
나는 그에게 전화를 걸었다. Node Tests
그것은 인출 요청에 따라 운행될 것이다.최신 버전의 ubuntu에서 실행되는 test_node
이라는 작업을 만들었습니다.VM에서 소스 코드를 사용해야 하므로 커뮤니티 작업actions/checkout@v2
을 사용하여 현재 작업 디렉토리에 코드를 배치합니다.응용 프로그램을 실행하려면 노드가 필요합니다. 따라서 actions/setup-node@v1
라는 지역 사회 작업을 사용하고 노드 버전을 지정할 것입니다.우리는 이미 자신의 명령을 실행할 준비가 되어 있다.나는 이미
npm ci
설치 의존항을 사용하기 시작했다.그리고 정확한 컴파일을 확보하기 위해 테스트 세트를 실행하고 프로그램을 구축합니다.만약 당신이 더 복잡한 테스트 세트, 예를 들어cypress를 가지고 있다면, 이 문제를 해결하기 위한 지역 사회 행동이 있을 것이다.
지속적인 배포 추가
Firebase 호스트에 대한 통합과 인출 요청을 실현합니다.actions의 기본 개념은 같아서 각종 위탁 관리 공급자와 함께 사용할 수 있다.
이들 공급자 중 대다수는 제품에서github를 어떻게 사용하는지에 대해 특정한 DO를 가지고 있다.예를 들어 Firebase에는 here에 관한 문서가 있습니다.모든 유행하는 위탁 관리 서비스는 지역 사회 행동이 있을 수 있다.
다음 명령을 실행하면 옵션에 동의합니다.build 명령 부분에 필요하면build 명령을 추가합니다.Firebase에서 생성된 파일을 보십시오. 코드를 찾아보겠습니다.
firebase init hosting:github
Firebase 트랜잭션 합병 중입니다.yml:name: Deploy to Firebase Hosting on merge
'on':
push:
branches:
- master
jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: npm ci && npm run build
- uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: '${{ secrets.GITHUB_TOKEN }}'
firebaseServiceAccount: '${{ secrets.auto_generated }}'
channelId: live
projectId: auto_generated_variable
env:
FIREBASE_CLI_PREVIEWS: auto_generated_variable
내가 쓴 곳 auto_generated
은 모두 Firebase가 제공하는 개인 변수이기 때문에 밝힐 수 없습니다. (그렇지 않으면 내 프로그램에 접근할 수 있습니다.)name
새로운 일은 아니에요...우리는 이전에 이것을 본 적이 있다.on
를 누르도록 설정합니다.여기에 우리는 branches
지점이 있는 master
수조를 추가했다.그 다음
jobs
, 그중 하나build_and_deploy
가 일했다.runs-on
를 지정하여 ubuntu-latest
로 설정합니다.다시 한 번 말하지만, 여기는 무슨 새로운 일이 없다.키워드
uses
는 작업이 actions/checkout@v2로 지정된 지역사회 조작의 v2를 알려줍니다.이것은 저희 저장소를 검사하고runner에 다운로드하는 작업입니다. 코드를 실행할 수 있도록 합니다. 예를 들어 테스트 도구.with
는 조작에 필요한 입력 매개 변수를 제공하고 env
는 환경 변수를 제공한다.다른 파일
firebase-hosting-pull-request
의 코드는 거의 같다.각종 지역사회가 제정한 행동을 점검하다here .
Github의 행동은 여기에 그치지 않는다.우리는 행동을 통해 더 많은 일을 할 수 있다.인공지능 기반 요청 심사처럼 자동 코드 복구.
쓰다
일단 코드가 지점으로 전송되면, 우리는 우리의 가방을 NPM
Primary/Primary Spoke로 푸시 테스트/배포 실행
데이터베이스 데이터 (주로 Firebase, 내장된 것이 아니기 때문에) 를 클라우드 메모리통에 백업하는 데 사용
Reference
이 문제에 관하여(Github 작업 및 CI/CD 워크플로우 가이드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/akashshyam/a-guide-to-github-actions-and-ci-cd-workflows-1hj9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)