on
복합 동작을 사용하여 GitHub 동작 능률화
복합 동작을 사용하여 GitHub 동작 능률화
GitHub 블로그는 중복을 줄이기 위한 복합 동작을 공개하는 게시물을 게재했다. 누가 드라이 코드를 갖는 것을 싫어합니까? 저는 실제와 같은 상황에서 복합적인 행동이 얼마나 많은 부가가치를 가져오는지 그리고 그 잠재적인 한계를 알아봤습니다.
이것은 또한 제가 좋아하는 두 가지 GitHub 액션 컨셉을 보여줄 수 있는 기회이기도 합니다.
이 문서의 예는 이 리포지토리에서 찾을 수 있습니다.
왜 우리는 의존적인 직업이 필요할까?
NodeJ 프로젝트에는 보풀, 빌딩 및 장치 테스트와 같은 반복 검사가 있습니다. GitHub 작업을 사용하면 이 설정을 꽤 쉽게 할 수 있습니다. 즉, 모든 것이 단일 작업에 포함된 워크플로우를 만드는 것입니다.
다음은 몇 가지 유용한 링크입니다.
이 예제는 작동하지만 다음과 같은 몇 가지 제한 사항에 빠르게 노출될 수 있습니다.
위의 사항을 해결하려면 해당 단계를 전용 작업으로 세분화해야 합니다. 다음 코드를 사용하면 도움이 됩니다.
세 작업은 모두 병렬로 실행됩니다. 이렇게 하면 보풀, 건물 및 장치 테스트를 위해 종속성을 설치해야 하므로 일부 중복성이 발생합니다.
참고: 각 작업은 회전 속도를 높이는 데 시간이 필요하므로 일부 작업을 그룹으로 묶는 것이 이치에 맞는다. 또한 동시 작업에는 제한이 있으므로 워크플로를 많은 수의 병렬 작업으로 나눌 수 있는 실질적인 가치가 없습니다.
설정 및 종속성 설치 전용으로 추가 작업을 수행할 수 있지만 다른 세 단계보다 먼저 실행해야 합니다. 그것이 의존적인 직업의 목적이다.
종속 작업을 사용하는 방법?
부양직은 일자리에 의존한다.
이 예는 매우 간단하지만 if: always() 매개 변수(문서 링크)를 사용하여 필요한 작업의 실패 상태를 수락하는 등 보다 이국적인 의존성 구성을 설정할 수 있다.
워크플로우 내역의 다른 예를 보려면 에드워드 톰슨으로부터 이 기사를 확인하십시오.
설치 작업의 핵심은 의존성을 완전히 설치하는 것이다. 그러나 각 작업이 처음부터 시작되고 여러 작업에 데이터가 유지되지 않기 때문에 종속성이 누락됩니다. 다행히 액션/캐시(액션/캐시)가 구조된다.
캐싱 종속성
액션/캐시 (리포지토리 링크)는 표준 방식으로 작동합니다.
캐시 동작을 사용하면 GitHub 동작은 다음과 같이 증가합니다.
lint, build, test 작업은 셋업(설정)이 끝나기 전까지 기다려야 하기 때문에 캐시를 사용할 수 있는 것이 보장된다. 그런 다음 각 작업은 캐시된 종속성만 복원하면 됩니다.
캐시 키가 올바르게 설정되었는지 확인하십시오. 그렇다, 이 노트는 다소 고통스러운 경험에서 나온 것이다.
Jonathan Wilkinson의 이 기사 덕분에 이 구성은 한 단계 더 나아갈 수 있습니다. 캐시된 종속성을 사용할 수 없는 경우에만 종속성을 설치합니다!
actions/cache 는 캐시 발견 여부를 나타내는 cache-hit 부울 값을 반환하므로 종속성 설치를 조건부 트리거하기에 완벽한 플래그입니다. 설정 작업에는 두 가지 변경만 필요합니다.
종속성 설치 단계를 제대로 건너뛰었는지 "작업" 탭을 체크인할 수 있습니다.
코드 건조 유지: 복합 작업
이전 예에는 중복성이 많이 포함되어 있으므로 복합 작업이 약속된 DRY 코드를 전달하는지 확인하는 데 시간이 걸립니다.
복합 작업 설정
우리가 인수분해하려는 두 단계는 노드 설정과 캐시 작업입니다. 메타데이터 구문 설명서에 따르면 복합 작업 정의는 다음과 같습니다.
두 가지 이유로 actions/checkout@v2 를 포함하지 않았습니다.
이 예는 다음과 같습니다.
매트릭스 테스트
이제 매트릭스 구성을 설정하는 것이 훨씬 쉬워졌습니다. 이 괴상한 예를 들어 보겠습니다.
이 경우 종속성 캐시가 올바르게 생성되도록 하려면 모든 가능성과 세 가지 노드 버전을 포함해야 합니다. 캐시 키는 Node 버전과 package-lock.json 해시를 모두 포함하므로 캐시된 종속성은 후속 작업에서 안전하게 검색할 수 있습니다.
모든 테스트를 통과하면 다음과 같은 녹색 그래프가 표시됩니다.
현실 세계의 결론
설명서에 기반하여 어떤 복합적인 동작을 제공할 수 있는지 볼 때, 저의 작은 실험은 심층적인 것과는 거리가 멉니다. 하지만 아직까지는 좋아요. 간단히 요약하면 다음과 같습니다.
제가 부정적인 점을 언급한다면, 저는 지지받지 못하는 조건적인 단계만 생각할 수 있습니다. 다중 워크플로우 저장소로 인해 옵션인 npm 설치 에 이어 캐시 복원 작업의 중복 시퀀스가 즉시 종료되었습니다. 그렇긴 하지만, 그것은 매우 구체적이고 나는 조건적인 단계를 가지지 않는 것이 확실히 견딜 수 있다고 믿는다.
올바른 통합 코드는 친숙한 코드이므로 CI를 무시하지 마십시오!
지금까지 읽어주셔서 감사합니다. GitHub Actions와 함께 행복한 CI를 구축하세요!
from http://top-poster.tistory.com/5 by ccl(A) rewrite - 2021-09-17 09:27:25