전단 의 길: github 의 webhooks 로 프로젝트 자동화 구축 실현

5406 단어 전단git.json
webhooks
배경
회사 가 github 으로 프로젝트 를 관리 하고 이 프로젝트 (순수 정적 및 node APP 포함) 는 대부분 우리 가 서버 에 배치 한 것 이다.
필드:
코드 쓰 는 데 몰두 하고 있 는데 갑자기...
  • pm 가 와 서 말 했다. xxx 프로젝트 는 물건 을 바 꾸 는 것 이 간단 하 다 (예 를 들 어 그림, 버튼, 문안 등)
  • 저: 아, 그럼 고치 세 요. 요구 에 따라 먼저 현지에서 test 가 지 를 자 르 고 변경 한 후의 테스트 절차:
  • git add .
  • git commit -m fix(xxx): xxx
  • git fetch upstream test
  • git rebase upstream/test test 합병 충돌 후
  • git push upstream test

  • 이상 은 test 분기 코드 를 github 에 동기 화 했 을 뿐 이 고 그 다음 에 서버 pull 코드 에 올 라 프로젝트 를 다시 시작 해 야 합 니 다.
  • ssh ubuntu@xxx
  • tmux a -t xxx
  • git checkout test
  • git log
  • git pull origin test
  • npm run build:test

  • 지금 성공 적 으로 테스트 에 올 랐 습 니 다. 효 과 를 보 세 요. 문제 가 없 으 면 생산 에 올 라 가 야 합 니 다. 절차 와 위 에 차이 가 많 지 않 습 니 다. 먼저 생산 (제 것 은: next 지점 에서 생산 절차 입 니 다.
  • git fetch upstream next
  • git rebase upstream/next next
  • git merge test, 합병 충돌 후
  • git push upstream next

  • 이상 은 next 분기 코드 를 github 에 동기 화 한 다음 에 서버 pull 코드 를 올 려 프로젝트 를 다시 시작 해 야 합 니 다.
  • ssh ubuntu@xxx
  • tmux a -t xxx
  • git checkout next
  • git log
  • git pull origin next
  • npm run build:next 마침내 지도자 가 맡 긴 임 무 를 완 수 했 습 니 다. 작은 변경 을 위해 이렇게 많은 절 차 를 사 용 했 습 니 다. 너무 아 프 지 않 습 니까? 잠시 후에 pm 가 다시 달 려 와 서 고 칠 곳 이 하나 더 있다 고 말 했 습 니 다.


  • 이상 의 경험 이 있 습 니까?
    너무 번 거 롭 습 니 다. 개발 을 간소화 하기 위해 js 는 이미 공정 화 방면 에서 잘 했 습 니 다. 몇 년 전 grunt 부터 glup, 그리고 지금까지 webpack, 그리고 rollup 까지 성숙 했다 고 할 수 있 습 니 다. 하지만 프로젝트 배 치 는 많은 전단 파트너 들 이 접촉 하지 않 았 을 수도 있 습 니 다. 파일 dist 을 포장 해서 백 엔 드 에 떨 어 뜨 렸 을 수도 있 습 니 다.
    그 다음 에 저 는 이런 번 거 로 운 절 차 를 어떻게 간단하게 최적화 시 키 는 지 말씀 드 리 겠 습 니 다. ci 에 의존 하지 않 고 webhooks 을 통 해 간단하게 실현 하 는 지 말씀 드 리 겠 습 니 다.
    그럼 웹 훅 이 뭐 예요?
  • 쉽게 말 하면 일종 의 리 셋 이다. 비동기 프로 그래 밍 중의 '구독 - 발표 모델' 과 유사 하 다. 한쪽 트리거 이벤트, 한쪽 감청 집행, 웹 훅 스 는 비동기 프로 그래 밍 모델 의 실현 이 고 구체 적 으로 웹 훅 스
  • 를 볼 수 있다.
    흐름
  • git push xxx 로 컬 코드 를 원 격 github 창고 에 제출
  • github 창 고 는 push 를 받 은 후 리 셋 을 진행 합 니 다. post Payload url 보 내기 요청
  • Payload url 기반 서 비 스 는 전 송 된 정보 에 따라 추출 하고 최신 코드 를 추출 하여 프로젝트 를 재 구축 합 니 다
  • 코드 를 github 창고 에 제출 하면 됩 니 다. 서버 에 올 라 가서 열 을 조작 하지 않 아 도 됩 니 다
  • 시작 하 다
  • github - hook 서비스 구축
  • 웹 hooks 에 payload url 을 제공 하고 github 에서 보 내 온 정 보 를 얻 으 며 구축 배치 명령
  • 을 수행 하 는 것 이 목적 이다.
  • 선택: a. copy 나의 github - hook, koa b 를 바탕 으로 이 걸 로 github - webhook - handler 를 쓰 고 node 원생 http 서 비 스 를 바탕 으로 하 는 c. 기타
  • 저 를 소개 해 주세요 github-hook: 목록:
    .
    ├── README.md
    ├── config
    │   ├── data.example.js
    │   ├── data.js (      dir/  /    )
    │   └── index.js (  secret, github webhooks    )
    ├── ecosystem.config.js (pm2      )
    ├── package-lock.json
    ├── package.json
    └── src
        ├── controlers
        │   └── token.js (    token,webhooks   )
        ├── index.js (    )
        ├── jobs
        │   └── index.js (         ,    )
        └── routes
            └── index.js (  ,    )
    
  • 서버 시작 github-hook 서비스
  • 서버 에 로그 인하 여 작업 디 렉 터 리 에 들 어 갑 니 다 (제 것 은 /var/nodejs. 취향 에 따라 고 칠 수 있 습 니 다. 해당 하 는 config/data.js 파일 을 고 치 는 것 DIR
  • 을 잊 지 마 세 요.
  • git clone xxxgithub-hook.git
  • cd github-hook
  • npm i
  • npm run start, pm2 를 사 용 했 습 니 다. 먼저 전체 pm2
  • 를 설치 하 십시오.
  • curl ip:9002, success 라 는 글자 가 있 으 면 성공
  • 주의: 본 서비스의 포트 는 9002 입 니 다. 이미 점용 되 었 으 면 스스로 변경 하 십시오 /index.js. 안전 팀 의 오픈 포트
  • 를 잊 지 마 십시오.

  • github 설정 webhooks github 을 열 고 설정 할 항목 을 찾 으 면 setting -- > webhooks - > 에 들 어가 서 새로 추가 합 니 다.
  • Payload URL: 이전 테스트 api, 즉 http://ip:9002/payload/{reponame} 을 입력 하 십시오. 여기 있 는 repo name 은 github-hook
  • 입 니 다.
  • 콘 텐 츠 유형: application / json
  • 선택
  • Secret: 위 /config/index.jsappSecrcet 와 일치
  • Which events would you like to trigger this webhook?첫 번 째 Just the push 이 벤트 를 선택 하면 됩 니 다
  • 설정 이 완료 되 었 습 니 다. 제출 하면 됩 니 다. 설정 후 다음 과 같은 그림 입 니 다.
  • 이 컴퓨터 에서 코드 변경 github-hook 을 테스트 하고 제출 한 다음 에 방금 github 페이지 를 열 어 아래 에 Recent Deliveries 가 있 는 지 확인 합 니 다.
  • 결어:
  • 서버 에 로그 인 할 필요 가 없습니다. pull 코드, 서 비 스 를 재 개 하고 로 컬 에서 코드 를 제출 하면 배 치 를 재 구축 할 수 있 습 니 다. 효율 을 높 일 수 있 습 니까?
  • 물론 이것 은 간단 한 응용 일 뿐 입 니 다. 더 잘 관리 하려 면 ci 시스템 에 의존 해 야 합 니 다. 버 전 반환, 유닛 테스트 등 이 더욱 완선 되 어야 합 니 다. 즉, 제 가 다음 에 말씀 드 리 고 싶 은 것 은 docker 용기 에 프로젝트 를 넣 고 jenkins 포장 으로 부서 프로젝트 를 구축 하 는 것 입 니 다.
  • = = ps: = = 처음 글 을 쓰기 시 작 했 는데 예전 에는 이런 습관 이 없 었 습 니 다. 의견 도 많이 내 주세요. 감사합니다.
    다음으로 전송:https://juejin.im/post/5c6e37056fb9a049e702b443

    좋은 웹페이지 즐겨찾기