Github 작업 및 CI/CD 워크플로우 가이드

13493 단어 githubgit
야, 동료들아.🖐, 오늘 저는 여러분께 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 패키지 출시
    일단 코드가 지점으로 전송되면, 우리는 우리의 가방을 NPM
  • 에 배치할 수 있다
  • 기본 분기로 밀어냄
    Primary/Primary Spoke로 푸시 테스트/배포 실행
  • 계획된 백그라운드 작업
    데이터베이스 데이터 (주로 Firebase, 내장된 것이 아니기 때문에) 를 클라우드 메모리통에 백업하는 데 사용
  • 이것들만, 나는 너희들이 이 댓글을 좋아하길 바란다.이 댓글이 좋으면 따라오세요.바이이👋

    좋은 웹페이지 즐겨찾기