GiitHub Action에서 간단한 자동 이미지 생성 테스트 수행

CI에는 GiitHub Action의 프로젝트 내에서 이미지를 생성하는 프로그램이 있습니다.이미지 생성 프로그램은 자동 테스트가 되지 않아 프로그램 라이브러리에 의존하는 버전(Dependabbot의 PR을 처리하는 것)을 높일 때 불안감을 느껴 성과물의 차이가 있는지 확인하는 간단한 테스트를 추가했다.

방침.

  • 미리 생성된 이미지가 원하는 결과물로 창고에 저장
  • GiitHub Action을 통한 이미지 생성, 변경 사항 없음 테스트
  • 이미지 비교ImageMagick의 Compore 명령 사용
  • 테스트에 실패하면 차분 이미지를artifact
  • 로 출력합니다

    구체적 설정


    .github/workflows/image_generation.yml
    # ...
        steps:
          # ...
          - name: "Image Generation Test"
            run: |
              mkdir -p tmp/artifacts
              compare "$EXPECTED_IMAGE" <(generate-image) tmp/artifacts/diff.png
    
          - name: "Upload Failed Tests' Diffs"
            uses: actions/upload-artifact@v3
            if: failure()
            with:
              name: failed-tests-diffs
              path: tmp/artifacts
              retention-days: 5
              if-no-files-found: ignore
    

    Image Generation Test 정보

    $EXPECTED_IMAGE에 창고에 미리 추가된 예상 생성 결과의 이미지 경로를 삽입합니다.그림 생성 프로그램을 변경할 때 이 그림도 업데이트해야 합니다.generate-image자기 프로젝트에도 넣는다.여기서 표준 출력으로 출력한다고 가정합니다.입력이 필요할 때 생성$EXPECTED_IMAGE과 같은 입력을 사용자에게 전달합니다.예를 들어, HTTP 서버로 이동하는 경우 사전 부팅curl --silent -X POST --data "$IMAGE_INPUT" "$IMAGE_GENERATOR_URL" 등이 있습니다.compare 명령은 GiitHub Actionsruns-on: ubuntu-latest에서 기본적으로 입력되며 설치할 필요가 없습니다.비교하려는 입력 이미지input1.png, input2.png가 있는 경우
    $ compare input1.png input2.png diff.png
    
    면 차분을 강조한 이미지가 diff.png로 출력된다.설정하면 업로드tmp/artifacts됩니다.compare의 exitstatus는 차분이 없을 때0, 때로는1이다.따라서 차분이 있을 때"Image Generation Test"는 실패한다.

    Upload Failed Tests Diffs 정보


    사용actions/upload-artifact@v3 테스트가 실패했을 때만 업로드tmp/artifacts합니다.
    자세한 내용은 actions/upload-artifact를 보십시오.

    참고 자료

  • ImageMagick – Command-line Tools: Compare
  • actions/upload-artifact
  • 좋은 웹페이지 즐겨찾기