참고: GitHub 호스트 실행기는 현재 GitHub Enterprise Server에서 지원되지 않습니다. GitHub public roadmap에 예정된 향후 지원에 대해 자세히 알아볼 수 있습니다.
소개
이 가이드에서는 패키지된 복합 작업을 만들고 사용하는 데 필요한 기본 구성 요소에 대해 알아봅니다. 작업을 패키지하는 데 필요한 구성 요소에 가이드의 초점을 맞추기 위해 작업 코드의 기능은 최소화됩니다. 작업은 “Hello World”를 출력한 다음 “Goodbye”를 출력하거나 사용자 지정 이름을 제공하는 경우 “Hello [인사할 사람]”을 출력한 다음 “Goodbye”를 출력합니다. 이 작업은 또한 난수를 random-number
출력 변수에 매핑하고 goodbye.sh
라는 스크립트를 실행합니다.
이 프로젝트를 완료한 후에는 고유한 복합 작업을 빌드하고 워크플로에서 테스트하는 방법을 이해해야 합니다.
경고: 워크플로 및 작업을 만들 때 코드가 가능한 공격자의 신뢰할 수 없는 입력을 실행할 수 있는지 항상 고려해야 합니다. 공격자가 자신의 악성 콘텐츠를 삽입할 수 있으므로 특정 컨텍스트는 신뢰할 수 없는 입력으로 처리되어야 합니다. 자세한 내용은 "GitHub Actions에 대한 보안 강화"을 참조하세요.
필수 조건
시작하기 전에 GitHub Enterprise Server 인스턴스에 리포지토리를 만듭니다.
-
GitHub Enterprise Server 인스턴스에 새 퍼블릭 리포지토리 만듭니다. 리포지토리 이름을 선택하거나 다음
hello-world-composite-action
예제를 사용할 수 있습니다. 프로젝트가 GitHub Enterprise Server에 푸시된 후 이러한 파일을 추가할 수 있습니다. 자세한 내용은 "새 리포지토리 만들기"을 참조하세요. -
컴퓨터에 리포지토리를 복제합니다. 자세한 내용은 "리포지토리 복제"을 참조하세요.
-
터미널에서 디렉터리를 새 리포지토리로 변경합니다.
Shell cd hello-world-composite-action
-
hello-world-composite-action
리포지토리에서goodbye.sh
라는 새 파일을 만들고 다음 예제 코드를 추가합니다.Shell echo "Goodbye"
-
터미널에서
goodbye.sh
실행 파일을 만듭니다.Shell chmod +x goodbye.sh
-
터미널에서
goodbye.sh
파일을 체크 인합니다.Shell git add goodbye.sh git commit -m "Add goodbye script" git push
작업 메타데이터 파일 만들기
-
hello-world-composite-action
리포지토리에서action.yml
라는 새 파일을 만들고 다음 예제 코드를 추가합니다. 이 구문에 대한 자세한 내용은 "GitHub Actions에 대한 메타데이터 구문"을 참조하세요.**action.yml**
YAML name: 'Hello World' description: 'Greet someone' inputs: who-to-greet: # id of input description: 'Who to greet' required: true default: 'World' outputs: random-number: description: "Random number" value: ${{ steps.random-number-generator.outputs.random-number }} runs: using: "composite" steps: - run: echo Hello ${{ inputs.who-to-greet }}. shell: bash - id: random-number-generator run: echo "::set-output name=random-number::$(echo $RANDOM)" shell: bash - run: echo "${{ github.action_path }}" >> $GITHUB_PATH shell: bash - run: goodbye.sh shell: bash
이 파일은 입력을
who-to-greet
정의하고, 임의의 생성된 숫자를 출력 변수에random-number
매핑하고, 실행기 시스템 경로에 작업의 경로를 추가하고(실행 중 스크립트를 찾기goodbye.sh
위해) 스크립트를 실행합니다goodbye.sh
.출력 관리에 대한 자세한 내용은 "GitHub Actions에 대한 메타데이터 구문"을 참조하세요.
를 사용하는
github.action_path
방법에 대한 자세한 내용은 "컨텍스트. -
터미널에서
action.yml
파일을 체크 인합니다.Shell git add action.yml git commit -m "Add action" git push
-
터미널에서 태그를 추가합니다. 이 예제에서는
v1
이라는 태그를 사용합니다. 자세한 내용은 "사용자 지정 작업 정보"을 참조하세요.Shell git tag -a -m "Description of this release" v1 git push --follow-tags
워크플로에서 작업 테스트
다음 워크플로 코드는 "복합 작업 만들기"에서 수행한 완료된 hello world 작업을 사용합니다.
워크플로 코드를 다른 리포지토리의 .github/workflows/main.yml
파일에 복사하지만 actions/hello-world-composite-action@v1
는 만든 리포지토리 및 태그로 바꿉니다. who-to-greet
입력을 자신의 이름으로 바꿀 수도 있습니다.
.github/workflows/main.yml
on: [push]
jobs:
hello_world_job:
runs-on: ubuntu-latest
name: A job to say hello
steps:
- uses: actions/checkout@v3
- id: foo
uses: actions/hello-world-composite-action@v1
with:
who-to-greet: 'Mona the Octocat'
- run: echo random-number ${{ steps.foo.outputs.random-number }}
shell: bash
리포지토리에서 작업 탭을 클릭하고 최신 워크플로 실행을 선택합니다. 출력에는 “Hello Mona the Octocat”, “Goodbye” 스크립트의 결과와 난수가 포함되어야 합니다.