2P by GN⁺ 14일전 | ★ favorite | 댓글 1개
  • GitHub Actions의 문제점

    • 최근 GitHub Actions로 CI 스크립트를 다시 작성하는 데 많은 시간을 소비했음. 이전에는 Earthly를 사용했으나 중단되어 다시 GitHub Actions로 돌아옴.
    • CI는 복잡하며, 병합 대기열, 여러 실행기, Rust 빌드, Docker 이미지, 통합 테스트 등을 포함함. 모든 PR 병합 시 많은 CI 시간이 소모됨.
    • 좋은 소프트웨어 관행으로 모든 테스트를 통과해야 하고, 사소한 실수는 자동으로 수정되어야 하며, 테스트한 아티팩트는 릴리스와 동일해야 함. GitHub Actions는 이를 가능하게 하지만 설정이 복잡하고 비일관적임.
  • 상태 검사와 병합 대기열

    • GitHub의 병합 대기열은 PR을 메인 브랜치에 리베이스한 후 CI를 실행함. 그러나 CI를 대기열에 넣기 전과 후에 모두 실행해야 하며, 이를 설정하는 것이 어려움.
    • 해결책은 두 단계에서 작업 이름을 동일하게 설정하는 것임. 이를 통해 두 단계 모두 통과해야 함.
  • 보안 문제

    • 최근 인기 있는 GitHub Action이 손상됨. 대응책으로 해시로 종속성을 고정하라는 권고가 있었으나, 대부분의 사용자가 이를 하지 않음.
    • GitHub의 보안 모델은 복잡하며 이해하기 어려움. GITHUB_TOKEN의 기본 권한을 설정할 수 있지만, 권한을 제거하는 것이 명확하지 않음.
    • 워크플로우 권한은 액션 자체에 의존하지 않으며, 권한을 코드 내에서 높이는 것은 이상함.
  • Docker와 GitHub Actions의 조합

    • GitHub Actions에서 컨테이너 내에서 작업을 실행할 수 있지만, 파일 권한 문제와 $HOME 디렉토리 위치 변경 등으로 인해 문제가 발생함.
    • 컨테이너 필드에는 제한이 많아 엔트리포인트를 재정의하거나 일부 단계만 컨테이너 내에서 실행하는 것이 불가능함.
  • YAML로 워크플로우 개발

    • YAML로 로직을 작성하는 것은 복잡해질 수 있으며, 실수를 하기 쉬움. RustRover IDE를 사용해 일부 검사를 수행했으나, 더 나은 정적 검사가 필요함.
    • 로컬에서 테스트하기 어려워 동일한 레포지토리를 만들어 CI가 작동할 때까지 반복적으로 커밋하고 푸시해야 함.
    • 워크플로우를 작게 유지하고 아티팩트를 푸시하여 다른 워크플로우에서 재사용할 수 있도록 함. 그러나 아티팩트를 다운로드할 때 토큰이 필요함.
  • 결론

    • 새로운 CI 스크립트로 병합 시간이 크게 줄어들었으나, 설정 과정이 복잡하고 디버깅이 어려움. 혁신이 필요함.
Hacker News 의견
  • GitLab이 더 낫다는 의견이 있지만, GitLab도 다른 방식으로 문제가 있음

    • 여러 CI 도구를 사용해본 결과, 가능한 많은 CI 로직을 자체 코드에 작성하는 것이 중요함
    • 개발자 머신에서 파이프라인을 로컬로 실행할 수 있도록 투자해야 함
    • YAML 사용을 가능한 한 피해야 함
    • VC 자금 지원을 받은 새로운 도구에 의존하지 말아야 함
    • 가능한 한 자체 러너를 사용하고, 온프레미스에서 운영해야 함
  • GitHub Actions와 DevOps가 널리 비판받는다는 사실이 흥미로움

    • 설정과 테스트가 번거로울 수 있지만, 작동하면 거의 손대지 않음
    • Node 버전 업데이트 외에는 4년 동안 워크플로를 거의 수정하지 않음
    • 개인적으로는 만족스러움
  • GitLab을 사용하다가 GitHub로 전환했지만 실망스러웠음

    • GitHub Actions가 GitLab에 비해 매우 부족하다고 느낌
    • 회사 운영 시 GitLab을 선택할 것임
  • 피드백 루프가 30-60초인 것이 최악임

    • GHA 환경을 로컬에서 복제하려고 했지만 불가능했음
    • 작은 실수로 인해 많은 시간이 소요됨
  • CI가 자동으로 코드를 수정하는 것을 원치 않음

    • 사소한 체크는 pre-commit hook으로 실행되어야 함
  • GitHub Actions의 발전이 멈춘 것 같아 실망스러움

    • Earthly와 Dagger의 개발 중단이 아쉬움
    • Depot.dev를 평가한 결과, 매우 똑똑한 팀이 문제를 잘 해결했음
  • GitHub Actions가 컨테이너를 설치 스크립트로 오용하게 만듦

    • 워크플로에서 많은 시간이 설치 프로그램 실행에 소요됨
  • 적절한 도구를 선택하는 것이 중요함

    • GitHub Actions는 간단한 작업에 적합하지만 복잡한 작업에는 적합하지 않음
  • GitHub Action의 보안 문제로 인해 해시를 사용해 의존성을 고정해야 함

    • 해시를 사용하면 훨씬 안전함
  • GitHub Actions의 문제점이 많음

    • 10GB 캐시 제한, 러너 유형에 따른 동시성 제한, 높은 비용 등
    • Depot.dev는 GitHub Actions를 더 빠르게 만들고 문제를 해결하려고 함
    • Docker 이미지 빌드를 빠르게 하고, 러너를 최적화하여 작업을 매우 빠르게 만듦
    • GitHub Actions는 인기가 많지만 개선의 여지가 많음