서드 파티 CLI 액션 만들기

서드 파티 CLI 액션 만들기

GitHub Actions 러너에서 CLI를 설정하는 액션을 개발하는 방법을 알아볼게요.

출처: Creating a third party CLI action

본문

소개

GitHub Actions 러너의 구성된 CLI 환경을 통해 사용자가 서버에 접근할 수 있는 방법을 제공하는 액션을 작성할 수 있어요.

액션은 다음과 같아야 해요:

  • 사용자가 설치할 CLI 버전을 쉽게 지정할 수 있게 만들 것
  • 여러 운영 체제를 지원할 것
  • 실행 시간과 관련 비용을 최소화하도록 효율적으로 실행될 것
  • GitHub 호스팅 러너와 자체 호스팅 러너 모두에서 동작할 것
  • 가능하면 커뮤니티 도구를 활용할 것

이 글은 CLI의 특정 버전을 가져와서 설치하고, 경로에 추가하고, (선택적으로) 캐시하는 액션을 작성하는 방법을 보여줄게요. 이런 유형의 액션(도구를 설정하는 액션)은 종종 setup-$TOOL로 이름 붙여져요.

사전 요구사항

사용자 지정 액션을 작성하는 방법을 이해하고 있어야 해요. 자세한 내용은 사용자 지정 액션 관리하기를 참고하세요.

예시

다음 스크립트는 사용자가 지정한 버전을 입력으로 받아 CLI의 특정 버전을 다운로드하고 추출한 다음 CLI를 경로에 추가하는 방법을 보여줘요.

GitHub은 actions/toolkit을 제공하는데, 이는 액션을 만드는 데 도움이 되는 패키지 집합이에요. 이 예시는 actions/coreactions/tool-cache 패키지를 사용해요.

const core = require('@actions/core');
const tc = require('@actions/tool-cache');

async function setup() {
  // Get version of tool to be installed
  const version = core.getInput('version');

  // Download the specific version of the tool, e.g. as a tarball
  const pathToTarball = await tc.downloadTool(getDownloadURL());

  // Extract the tarball onto the runner
  const pathToCLI = await tc.extractTar(pathToTarball);

  // Expose the tool by adding it to the PATH
  core.addPath(pathToCLI)
}

module.exports = setup

이 스크립트를 사용하려면 getDownloadURL을 CLI를 다운로드하는 함수로 바꾸세요. 또한 version 입력을 받고 이 스크립트를 실행하는 액션 메타데이터 파일(action.yml)을 만들어야 해요. 액션 만드는 방법에 대한 전체 내용은 JavaScript 액션 만들기를 참고하세요.

추가 자료

이 패턴은 여러 액션에서 사용돼요. 더 많은 예시는 다음을 참고하세요:

더 알아보기 (Learn more)