Skip to main content
설명서에 자주 업데이트를 게시하며 이 페이지의 번역이 계속 진행 중일 수 있습니다. 최신 정보는 영어 설명서를 참조하세요.

복합 작업 만들기

이 가이드에서는 복합 작업을 빌드하는 방법을 알아봅니다.

소개

이 가이드에서는 패키지된 복합 작업을 만들고 사용하는 데 필요한 기본 구성 요소에 대해 알아봅니다. 작업을 패키지하는 데 필요한 구성 요소에 가이드의 초점을 맞추기 위해 작업 코드의 기능은 최소화됩니다. 작업은 “Hello World”를 출력한 다음 “Goodbye”를 출력하거나 사용자 지정 이름을 제공하는 경우 “Hello [인사할 사람]”을 출력한 다음 “Goodbye”를 출력합니다. 이 작업은 또한 난수를 random-number 출력 변수에 매핑하고 goodbye.sh라는 스크립트를 실행합니다.

이 프로젝트를 완료한 후에는 고유한 복합 작업을 빌드하고 워크플로에서 테스트하는 방법을 이해해야 합니다.

경고: 워크플로 및 작업을 만들 때 코드가 가능한 공격자의 신뢰할 수 없는 입력을 실행할 수 있는지 항상 고려해야 합니다. 공격자가 자신의 악성 콘텐츠를 삽입할 수 있으므로 특정 컨텍스트는 신뢰할 수 없는 입력으로 처리되어야 합니다. 자세한 내용은 “스크립트 삽입의 위험에 대한 이해”를 참조하세요.

필수 조건

시작하기 전에 GitHub.com에 리포지토리를 만듭니다.

  1. GitHub.com에 새 퍼블릭 리포지토리를 만듭니다. 리포지토리 이름을 선택하거나 다음 hello-world-composite-action 예제를 사용할 수 있습니다. 프로젝트가 GitHub에 푸시된 후 이러한 파일을 추가할 수 있습니다. 자세한 내용은 “새 리포지토리 만들기”를 참조하세요.

  2. 컴퓨터에 리포지토리를 복제합니다. 자세한 내용은 “리포지토리 복제”를 참조하세요.

  3. 터미널에서 디렉터리를 새 리포지토리로 변경합니다.

    cd hello-world-composite-action
  4. hello-world-composite-action 리포지토리에서 goodbye.sh라는 새 파일을 만들고 다음 예제 코드를 추가합니다.

    echo "Goodbye"
    
  5. 터미널에서 goodbye.sh 실행 파일을 만듭니다.

    chmod +x goodbye.sh
  6. 터미널에서 goodbye.sh 파일을 체크 인합니다.

    git add goodbye.sh
    git commit -m "Add goodbye script"
    git push

작업 메타데이터 파일 만들기

  1. hello-world-composite-action 리포지토리에서 action.yml라는 새 파일을 만들고 다음 예제 코드를 추가합니다. 이 구문에 대한 자세한 내용은 “runs 복합 작업”을 참조하세요.

    **action.yml**
    
    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 "random-number=$(echo $RANDOM)" >> $GITHUB_OUTPUT
          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 .

    출력 관리에 대한 자세한 내용은 “복합 작업에 대한 outputs ”을 참조하세요.

    github.action_path 사용 방법에 대한 자세한 내용은 “github context”를 참조하세요.

  2. 터미널에서 action.yml 파일을 체크 인합니다.

    git add action.yml
    git commit -m "Add action"
    git push
  3. 터미널에서 태그를 추가합니다. 이 예제에서는 v1이라는 태그를 사용합니다. 자세한 내용은 “작업 정보”를 참조하세요.

    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” 스크립트의 결과와 난수가 포함되어야 합니다.