# 워크플로의 작업 사용

워크플로를 사용하여 여러 작업을 실행합니다.

## 필수 조건

워크플로에서 작업을 구현하려면 작업이 무엇인지 이해해야 합니다.
[GitHub Actions에 대한 이해](/ko/enterprise-server@3.22/actions/get-started/understand-github-actions#jobs)을(를) 참조하세요.

## 작업에 대한 ID 설정

`jobs.<job_id>`를 사용하여 작업에 고유 식별자를 지정합니다. `job_id` 키는 문자열이고 해당 값은 작업 구성 데이터 맵입니다. `<job_id>`를 `jobs` 개체에 고유한 문자열로 바꿔야 합니다. `<job_id>`는 문자 또는 `_`로 시작해야 하며 영숫자, `-` 또는 `_`만 포함해야 합니다.

### 예: 작업 만들기

이 예제에서는 두 개의 작업이 생성되었으며 해당 `job_id` 값은 `my_first_job`과 `my_second_job`입니다.

```yaml
jobs:
  my_first_job:
    name: My first job
  my_second_job:
    name: My second job
```

## 작업에 대한 이름 설정

`jobs.<job_id>.name`을 사용하여 GitHub UI에 표시되는 작업 이름을 설정합니다.

## 전제 조건 작업 정의

이 작업이 실행되기 전에 완료해야 하는 작업을 식별하는 데 `jobs.<job_id>.needs`를 사용합니다. 문자열 또는 문자열 배열일 수 있습니다. 작업이 실패하거나 건너뛰어지면, 해당 작업에 의존하는 모든 작업은 그 작업이 계속 실행되도록 하는 조건식을 사용하지 않는 한 건너뛰어집니다. 실행에 서로 의존하는 일련의 작업이 포함된 경우, 실패하거나 건너뛴 시점부터 종속성 체인에서 그 이후의 모든 작업에 실패 또는 건너뛰기 상태가 적용됩니다. 종속된 작업이 성공하지 못한 경우에도 작업을 실행하려면 `always()`에 `jobs.<job_id>.if` 조건식을 사용합니다.

### 예: 성공적인 종속 작업 요구

```yaml
jobs:
  job1:
  job2:
    needs: job1
  job3:
    needs: [job1, job2]
```

이 예제에서 `job1`은 `job2`가 시작되기 전에 성공적으로 완료해야 하며 `job3`은 `job1` 및 `job2` 모두 완료되기를 기다립니다.

이 예제의 작업은 순차적으로 실행됩니다.

1. `job1`
2. `job2`
3. `job3`

### 예: 성공적인 종속 작업이 필요하지 않음

```yaml
jobs:
  job1:
  job2:
    needs: job1
  job3:
    if: ${{ always() }}
    needs: [job1, job2]
```

이 예제에서 `job3`은 `always()` 조건식을 사용하여 성공 여부에 관계없이 `job1` 및 `job2`가 완료된 후에 항상 실행되도록 합니다. 자세한 내용은 [워크플로 및 작업에서 식 평가](/ko/enterprise-server@3.22/actions/reference/workflows-and-actions/expressions#status-check-functions)을(를) 참조하세요.

## 행렬을 사용하여 다른 변수로 작업 실행

운영 체제 또는 언어 버전과 같은 다양한 변수 조합으로 작업을 자동으로 실행하려면 워크플로에서 `matrix` 전략을 정의합니다.

자세한 내용은 [워크플로에서 작업 변형 실행](/ko/enterprise-server@3.22/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations)을(를) 참조하세요.