Netlify 및 GitHub 작업이 있는 CI/CD 파이핑

본 강좌에서 GitHub 작업과 Netlify를 사용하여 현대적인 CI/CD 파이프를 설치할 것입니다.Show me the code!
☑️ 개발 및 프로덕션 환경(웹 사이트)
☑️ CI/CD용 GitHub 작업(Netlify 구축 시간 절약)
☑️ Netlify는 무료, 안전한 관리 서비스를 제공합니다.
☑️ 종합적인 테스트를 위한 Cypress

CI stands for Continous Integration, which means that developers are continuously integrating their changes into the main branch.

CD stands for Continous Development or Delivery, which means that changes are automatically pushed to customers barring a failed test.


프로젝트 설정

  • React를 사용하여 예제 응용 프로그램을 만듭니다.나는'netlify github 파이프'라고 부른다. npx create-react-app netlify-github-pipeline
  • GitHub에 새로운 환매 협의를 만들고 이를 우리 지역의 React 프로젝트에 연결
  • GitHub 웹 사이트
  • 에 "main"및 "dev"분기 만들기
  • 설정 > 분기
  • 에서 기본 분기를main으로 설정
  • 기본 브랜치 삭제
  • 부분 당김 브랜치: git pull
  • Primary로 전환: git checkout main
  • Netlify 설정

  • git로 프로젝트를 만들지 않고 React 프로젝트 폴더를 Netlify의 UI
  • 밑으로 드래그합니다
  • Netlify 사용자 인터페이스
  • 에서 실행 중인 자동 생성 취소
  • 사용자 설정 > 응용 프로그램 > 신규 액세스 토큰
  • 을 통해 생성NETLIFY_AUTH_TOKEN
  • 설정 > 기밀로 이동하여 GitHub repo에 인증 토큰을 추가합니다.이름 꼭 말해줘야 돼NETLIFY_AUTH_TOKEN
  • 설정 > 사이트 정보 > 애플리케이션 ID
  • 에 액세스하여 Netlify에서 사이트 ID 얻기
  • GitHub에 어플리케이션 ID 추가NETLIFY_SITE_ID
  • 다른 사이트에서 이 절차를 반복하여 5단계와 6단계에서만 NETLIFY_SIDE_IDDEV_NETLIFY_SITE_ID로 변경한다.
    만약 우리가 Netlify를 사용하여 구축하고 배치한다면, GitHub repo와 직접 연결할 것입니다.우리는 또한 그들의 build preview feature를 사용할 것이지'단독'개발 사이트를 만드는 것이 아니다.

    Using Netlify is cleaner, but they limit their free build minutes to 300/month. GitHub Actions has 3000 for private repos and is unlimited for public repos.


    GitHub 워크플로우 설정


    If you're not familiar with GitHub Actions, I would suggest checking out their docs. I don't go into a bunch of detail on how the workflow files work.


    우리는 생산과 개발 환경을 창조할 것이다.이러한 환경을 반영하려면 두 개의 분기와 Netlify 사이트 ID를 설정해야 합니다.우리는 또한 당김 요청을 만들 때마다 테스트를 실행하기를 희망합니다.그래서 우리는 생산, 개발과 테스트 세 가지 업무 절차가 필요하다.
  • netlify github 파이프의 프로젝트 루트 디렉터리에 이름을 만듭니다.github와 의 작업 흐름 디렉터리입니다.github:mkdir .github/workflows
  • 개발 워크플로우

  • 워크플로우 디렉토리에 생성development.yml 파일:
  • # Name of workflow
    name: Development workflow
    
    # When workflow is triggered
    on:
      pull_request:
        branches:
          - dev
    
    # Jobs to carry out
    jobs:
      deploy:
        # Operating system to run job on
        runs-on: ubuntu-latest
    
        # Steps in job
        steps:
          # Get code from repo
          - name: Checkout code
            uses: actions/checkout@v1
          # Install NodeJS
          - name: Use Node.js 12.x
            uses: actions/setup-node@v1
            with:
              node-version: 12.x
          # Run npm install and build on our code
          - run: npm install
          - run: npm run build --if-present
          # Deploy to Netlify using our dev secrets
          - name: Deploy to netlify
            uses: netlify/actions/cli@master
            env:
              NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
              NETLIFY_SITE_ID: ${{ secrets.DEV_NETLIFY_SITE_ID }}
            with:
              args: deploy --dir=build --prod
              secrets: '["DEV_NETLIFY_AUTH_TOKEN", "NETLIFY_SITE_ID"]'
    
    개발 지점에 대한 끌어오기 요청을 만들면 이 작업 흐름 파일을 터치합니다.이 파일은 Ubuntu에서 Node를 실행하여 Google 프로그램을 구축한 다음 Netlify 개발 사이트에 이 프로그램을 배치합니다.우리는main에 통합되어 발행판을 만들기 전에 변경 사항을 수동으로 테스트할 수 있습니다.

    생산 공정

  • 워크플로우 디렉토리에 생성production.yml 파일:
  • #  Name of workflow
    name: Production workflow
    
    # When workflow is triggered
    on:
      push:
        tags:
          - "v*"
    
    # Jobs to carry out
    jobs:
      deploy:
        # Operating system to run job on
        runs-on: ubuntu-latest
        # Steps in job
        steps:
          # Get code from repo
          - name: Checkout code
            uses: actions/checkout@v1
          # Install NodeJS
          - name: Use Node.js 12.x
            uses: actions/setup-node@v1
            with:
              node-version: 12.x
          # Run npm install and build on our code
          - run: npm install
          - run: npm run build --if-present
          # Deploy to Netlify using our production secrets
          - name: Deploy to netlify
            uses: netlify/actions/cli@master
            env:
              NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
              NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
            with:
              args: deploy --dir=build --prod
              secrets: '["NETLIFY_AUTH_TOKEN", "NETLIFY_SITE_ID"]'
    
    
    게시를 작성하면 워크플로우 파일이 트리거됩니다.우리는 우리가 응용한 버전을 관리하기 위해 버전을 만들 수 있다.main의 코드는 항상 발행판의 코드를 반영하지 않습니다!

    You can create releases using the GitHub website or by create a tag, git tag v1.0 then pushing the tag, git push origin v1.0


    이 파일은 Ubuntu에서 Node를 실행하여 Google 프로그램을 구축한 다음 Google Netlify 생산 사이트에 이 프로그램을 배치합니다.지금 저희가 테스트를 설정해야 돼요!

    테스트 워크플로우


    Cypress에서 간단한 테스트를 실행하고 프로그램에 접근해서 실행 여부를 확인하는 설정이 필요합니다.This blog post Cypress 및 React에 대한 추가 정보가 있습니다.
  • 프로젝트 루트 디렉토리에 생성cypress.json 파일
  • {
      "baseUrl": "http://localhost:3000"
    }
    
  • 루트
  • 에 생성cypress
  • cypress 디렉터리
  • integration 디렉터리 만들기
  • 통합 디렉토리에 생성init.spec.js 파일
  • describe('Cypress', () => {
      it('is working', () => {
        expect(true).to.equal(true);
      });
    
      it('visits the app', () => {
        cy.visit('/');
      });
    });
    
  • 설치 cypressnpm install cypress
  • 워크플로우 디렉토리에 생성test.yml 파일
  • #  Name of workflow
    name: Test workflow
    
    # Trigger workflow on all pull requests
    on:
      pull_request:
        branches:
          - dev
          - main
    
    # Jobs to carry out
    jobs:
      test:
        # Operating system to run job on
        runs-on: ubuntu-latest
        # Steps in job
        steps:
          # Get code from repo
          - name: Checkout code
            uses: actions/checkout@v1
          # Install NodeJS
          - name: Use Node.js 12.x
            uses: actions/setup-node@v1
            with:
              node-version: 12.x
          # Build the app using cypress
          - name: Cypress run
            uses: cypress-io/github-action@v1
            with:
              build: npm run build
              start: npm start
              wait-on: http://localhost:3000
              browser: chrome
    
    Cypress는 Chrome의 localhost: 3000에서 프로그램을 열었고, 드래그 요청을 만들 때마다 정상적으로 작동할 수 있도록 합니다.

    이 모든 것을 함께 놓아라


    현재 세 개의 작업 흐름 파일,cypress 디렉터리와 json 파일, 두 개의 지점과 Netlify 사이트가 있어야 합니다.너는 계속해서 모든 변경 사항을main으로 미룰 수 있다.다음에 나는 개발 예시를 통해 새로운 파이프를 보여줄 것이다.

    파이핑 예


    만약 우리가 아주 멋진 기능을 추가하고 싶다면.이 멋진 기능은react 프로그램을 만드는 기본 텍스트를 바꾸고 있습니다.
    우리는main이나 dev에서 변경하지 말고, dev에서'feature/change text '라는 기능 지점을 만들어야 합니다그리고 변경 사항을 dev에 통합할 것입니다. dev 사이트에서 변경 사항을 보고main에 통합할 수 있습니다.그리고 우리는 모든 사용자를 위해 새로운 버전을 만들 수 있습니다.
    새로운 CI/CD 파이프라인을 사용하면 이 모든 것을 쉽게 할 수 있습니다.
  • GitHub
  • 에 요소 분기 생성
  • 로컬 변경 내용 끌어당기기
  • 변경src/App.js의 p 태그 텍스트
  • 변경 사항을 저장하고 요소 원점으로 밀어넣기
  • 기능 지점에서 dev
  • 로 끌어오기 요청 만들기
  • 테스트 실행 대기
  • 확인이 완료되면 PR을 dev에 통합하고 기능 분기를 삭제
  • 개발 사이트 마인즈dev-netlify-github-pipeline.netlify.app 방문
  • 올바른 변경 사항을 확인한 후 dev에서main
  • 까지의 PR 생성
  • 테스트 실행 대기
  • 확인 후 PR을 main
  • 에 결합
  • 주 브랜치로 전환하고 변경 사항을 끌어옵니다git checkout main; git pull.
  • 새 레이블을 작성하여 생산 워크플로우를 트리거합니다git tag v1.0.
  • 탭 누르기: git push origin v1.0
  • GitHub 웹 사이트
  • 에 새 버전 작성
  • Production Netlify URL에 액세스하여 새로 만든 웹 응용 프로그램 보기🥳
  • GitHub 작업이 실패하면 병합 요청이 실행될 때까지 기다렸는지 확인합니다.

    결론


    많이 봤어요.CI/CD 파이프를 정의하고 동시에 구현하려고 합니다.
    전체적인 사고방식은 GitHub에 두 개의 지점이 있는데 그것이 두 사이트와 일치하고 하나는 사용자에게 사용되고 다른 하나는 개발에 사용된다는 것이다.우리의 변경 사항은 매번 당김 요청에서 테스트를 진행할 것입니다.사용자에게 우리의 개발 변경 사항을 홍보하기 위해서 우리는 버전을 만들었다.
    이것은 지나치게 간소화된 작업 절차다.회사는 통상적으로 생산과 개발의 기초 위에서 단계와 테스트 환경을 구축한다.GitHub 작업에 대한 기본 지식을 이미 알고 있으므로 이러한 작업을 추가하는 것은 매우 쉽습니다.
    감사:
    표지 사진 작성자Samuel SianiparUnsplash

    좋은 웹페이지 즐겨찾기