Node 자동화 배치 방법

4308 단어 Node자동화 배치
우리 가 Node 프로젝트 를 교체 할 때 다음 과 같은 몇 단 계 를 해 야 합 니 다.
  • git push 코드 를 코드 창고 에 제출
  • 서버 에서 git pull 을 실행 하여 최신 코드 를 추출 합 니 다
  • pm2 start 에서 코드 실행
  • 이렇게 하 는 것 도 맞 지만 프로젝트 업데이트 가 너무 빠 르 면 위의 절 차 를 계속 반복 하고 각종 bash 패 널 에서 왔다갔다 하 는 것 이 번 거 롭 습 니 다.
    이때 Webhooks 가 깜짝 등장 합 니 다!
    웹 훅 스에 대해 Github 은 다음 과 같이 설명 했다.
    Webhooks allow you to build or set up integrations which subscribe to certain events on GitHub.com.
    간단하게 말 하면 Webhooks 를 이용 하면 우 리 는 사이트 의 자동 배 치 를 실현 할 수 있 습 니 다.지금 구체 적 으로 어떻게 해 야 하 는 지 살 펴 보 겠 습 니 다.
    스 크 립 트 설정
    이 스 크 립 트 의 내용 은 서버 가 자동 으로 실행 해 야 하 는 것 입 니 다.
    
    # autoBuild.sh
    
    #! /bin/bash
    git reset --hard origin/master
    git clean -f
    git pull
    npm start
    
    주:이 스 크 립 트 는 서버 에서 자동 으로 실 행 됩 니 다.
    js 파일 실행 스 크 립 트 작성
    코드 창고 로 Github 을 사 용 했 기 때문에 여기 서 스 크 립 트 자동 실행 을 위해github-Webhooks-handler라 이브 러 리 를 사용 합 니 다.
    문서 에 따라 우 리 는 다음 과 같은 방식 으로 js 파일 을 작성 합 니 다.
    
    // autoBuild.js
    var http = require('http')
    var spawn = require('child_process').spawn
    var createHandler = require('github-Webhooks-handler')
    var handler = createHandler({ path: '/pushCode', secret: '' }) //        Webhooks      
    http.createServer(function (req, res) {
     handler(req, res, function (err) {
      res.statusCode = 404;
      res.end('no such location')
     })
    }).listen(7777)
    
    handler.on('error', function (err) {
     console.error('Error:', err.message)
    })
    
    //    push   
    handler.on('push', function (event) {
     console.log('Received a push event for %s to %s',
      event.payload.repository.name,
      event.payload.ref)
     rumCommand('sh', ['./autoBuild.sh'], function( txt ) { //    autoBuild.sh     
      console.log(txt)
     })
    })
    
    function rumCommand( cmd, args, callback ) {
      var child = spawn( cmd, args )
      var response = ''
      child.stdout.on('data', function( buffer ){ response += buffer.toString(); })
      child.stdout.on('end', function(){ callback( response ) })
    }
    
    
    app.js 에서 포트 를 3001 로 설정 합 니 다.여기 서 코드 를 놓 지 않 습 니 다.마지막 Github 링크 에서 본 튜 토리 얼 의 모든 예제 코드 를 찾 을 수 있 습 니 다.
    Nginx 설정
    우리 의 예제 코드 는 3001 포트 에 달 렸 기 때문에 자동화 배 치 를 실행 하 는 js 파일 은 7777 포트 에 달 렸 기 때문에 우 리 는 Nginx 를 설정 하여 이 두 포트 를 사용 해 야 합 니 다.
    
    #    7777   
    server {
      listen 7777;
      listen [::]:7777
      server_name huangxizhou.com; #             ip       
      
      root /var/www/html/auto-build;
    }
    
    #    3001   
    server {
      listen 3001;
      listen [::]:3001
      server_name huangxizhou.com; #             ip       
      
      root /var/www/html/auto-build;
    }
    
    이렇게 되면 Nginx 설정 이 끝 났 습 니 다.다음은 코드 창고 의 Webhooks 설정 입 니 다.
    Webhooks 설정
    우선,자동화 배 치 를 실현 하고 자 하 는 창고 에 들 어가 settings->Webhooks 를 누 르 면 설정 합 니 다.

    오른쪽 에 있 는 인터페이스 주소 와 Secret 를 설정 합 니 다.이전 js 파일 에 있 는 Secret 에 대응 하여 Content type 을application/json로 선택 하 십시오.
    항목 초기 화
    첫 번 째 배치 프로젝트 는 역시 우리 스스로 수 동 으로 조작 해 야 한다.
    먼저 코드 창고 에 코드 를 제출 하고 서버 에 들 어가 서 실행 합 니 다 git pull이렇게 해서 우 리 는 우리 Node 가 자동 배 치 를 실현 하 는 코드 를 성공 적 으로 배치 했다.
    코드 를 수정 해서 효과 가 어떤 지 시험 해 봅 시다.git push이후 서버 로 넘 어가 보 니 완벽 하 게 실행 되 었 습 니 다.

    Github 도 보고.

    인터페이스 가 자동 으로 터치 되 었 습 니 다.Node 자동화 배치 성공
    마지막.
    이 기술 은 Node 에 만 국한 되 는 것 이 아니다.
    한계 도 있 고 단일 프로젝트 의 자동화 배치 만 가능 하 며 코드 창고 에 의존 해 야 한다.
    이 항목 의 원본 주소:https://github.com/HuangXiZhou/auto-build
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기