{"meta":{"title":"워크플로 아티팩트와 데이터 저장 및 공유","intro":"아티팩트를 사용하여 워크플로의 작업 간에 데이터를 공유하고 워크플로가 완료되면 데이터를 저장할 수 있습니다.","product":"GitHub Actions","breadcrumbs":[{"href":"/ko/enterprise-server@3.22/actions","title":"GitHub Actions"},{"href":"/ko/enterprise-server@3.22/actions/tutorials","title":"자습서"},{"href":"/ko/enterprise-server@3.22/actions/tutorials/store-and-share-data","title":"데이터 저장 및 공유"}],"documentType":"article"},"body":"# 워크플로 아티팩트와 데이터 저장 및 공유\n\n아티팩트를 사용하여 워크플로의 작업 간에 데이터를 공유하고 워크플로가 완료되면 데이터를 저장할 수 있습니다.\n\n## 필수 조건\n\n이 자습서를 완료하기 전에 워크플로 아티팩트 이해가 필요합니다.\n[워크플로 아티팩트](/ko/enterprise-server@3.22/actions/concepts/workflows-and-actions/workflow-artifacts)을(를) 참조하세요.\n\n## 빌드 및 테스트 아티팩트 업로드\n\n코드를 빌드하고 테스트하는 출력은 종종 배포할 수 있는 테스트 실패 및 프로덕션 코드를 디버그하는 데 사용할 수 있는 파일을 생성합니다. 리포지토리에 푸시된 코드를 빌드 및 테스트하고 성공 또는 실패 상태를 보고하도록 워크플로를 구성할 수 있습니다. 배포에 사용할 빌드 및 테스트 출력을 업로드하고, 실패한 테스트 또는 크래시를 디버그하고, 테스트 도구 모음 검사를 볼 수 있습니다.\n\n이 `upload-artifact` 작업을 사용하여 아티팩트를 업로드할 수 있습니다. 아티팩트를 업로드할 때 단일 파일이나 디렉터리 또는 여러 파일이나 디렉터리를 지정할 수 있습니다. 특정 파일 또는 디렉터리를 제외하고 와일드카드 패턴을 사용할 수도 있습니다. 아티팩트 이름을 제공하는 것이 좋지만 이름이 제공되지 않으면 `artifact`가 기본 이름으로 사용됩니다. 구문에 대한 자세한 내용은 `actions/upload-artifact`에 있는 작업은 GitHub Enterprise Server 참조하세요.\n\n### 예시\n\n예를 들어 리포지토리 또는 웹 애플리케이션에는 CSS 및 JavaScript로 변환해야 하는 SASS 및 TypeScript 파일이 포함될 수 있습니다. 빌드 구성이 `dist` 디렉터리에서 컴파일된 파일을 출력하는 경우 모든 테스트가 성공적으로 완료되면 `dist` 디렉터리의 파일을 웹 애플리케이션 서버에 배포합니다.\n\n```text\n|-- hello-world (repository)\n|   └── dist\n|   └── tests\n|   └── src\n|       └── sass/app.scss\n|       └── app.ts\n|   └── output\n|       └── test\n|\n```\n\n이 예시에서는 `src` 디렉터리에서 코드를 빌드하고 `tests` 디렉터리에서 테스트를 실행하는 Node.js 프로젝트에 대한 워크플로를 만드는 방법을 보여 줍니다.\n`npm test`를 실행하면 `code-coverage.html` 디렉터리에 저장된 `output/test/` 코드 검사 보고서가 생성된다고 가정할 수 있습니다.\n\n워크플로는 `dist` 디렉터리에 프로덕션 아티팩트를 업로드하지만 markdown 파일은 제외합니다. 또한 `code-coverage.html` 보고서를 다른 아티팩트로 업로드합니다.\n\n```yaml copy\nname: Node CI\n\non: [push]\n\njobs:\n  build_and_test:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v6\n      - name: npm install, build, and test\n        run: |\n          npm install\n          npm run build --if-present\n          npm test\n      - name: Archive production artifacts\n        uses: actions/upload-artifact@v3\n        with:\n          name: dist-without-markdown\n          path: |\n            dist\n            !dist/**/*.md\n      - name: Archive code coverage results\n        uses: actions/upload-artifact@v3\n        with:\n          name: code-coverage-report\n          path: output/test/code-coverage.html\n```\n\n## 사용자 지정 아티팩트 보존 기간 구성\n\n워크플로에서 만든 개별 아티팩트에 대한 사용자 지정 보존 기간을 정의할 수 있습니다. 워크플로를 사용하여 새 아티팩트를 만들 때 `retention-days` 작업에 `upload-artifact`를 사용할 수 있습니다. 이 예시에서는 `my-artifact`라는 이름의 아티팩트에 대한 사용자 지정 보존 기간을 5일로 설정하는 방법을 보여 줍니다.\n\n```yaml copy\n  - name: 'Upload Artifact'\n    uses: actions/upload-artifact@v3\n    with:\n      name: my-artifact\n      path: my_file.txt\n      retention-days: 5\n```\n\n`retention-days` 값은 리포지토리, 조직 또는 엔터프라이즈에서 설정한 보존 한도를 초과할 수 없습니다.\n\n## 워크플로 실행 중 아티팩트 다운로드\n\n워크플로 실행 중에 [`actions/download-artifact`](https://github.com/actions/download-artifact) 작업을 사용하면 이전에 업로드한 아티팩트 다운로드할 수 있습니다.\n\n> \\[!NOTE]\n> 동일한 워크플로 실행 중에 업로드된 워크플로의 아티팩트만 다운로드할 수 있습니다.\n\n아티팩트의 이름을 지정하여 개별 아티팩트를 다운로드합니다. 이름을 지정하지 않고 아티팩트를 업로드한 경우 기본 이름은 `artifact`입니다.\n\n```yaml\n- name: Download a single artifact\n  uses: actions/download-artifact@v3\n  with:\n    name: my-artifact\n```\n\n이름을 지정하지 않고 워크플로 실행의 모든 아티팩트를 다운로드할 수도 있습니다. 이 기능은 많은 아티팩트로 작업하는 경우에 유용할 수 있습니다.\n\n```yaml\n- name: Download all workflow run artifacts\n  uses: actions/download-artifact@v3\n```\n\n모든 워크플로 실행의 아티팩트가 다운로드되면 각 아티팩트의 디렉터리가 해당 이름을 사용하여 만들어집니다.\n\n구문에 대한 자세한 내용은 `actions/download-artifact`의 GitHub Enterprise Server을(를) 참조하세요.\n\n## 워크플로의 작업 간 데이터 전달\n\n`upload-artifact` 및 `download-artifact` 작업을 사용하여 워크플로의 작업 간에 데이터를 공유할 수 있습니다. 이 예시 워크플로에서는 동일한 워크플로의 작업 간에 데이터를 전달하는 방법을 보여 줍니다. 자세한 내용은  및 `actions/upload-artifact` 작업을 참조 `download-artifact` 하세요GitHub Enterprise Server.\n\n이전 작업의 아티팩트에 종속된 작업은 종속 작업이 성공적으로 완료될 때까지 기다려야 합니다. 이 워크플로는 `needs` 키워드를 사용하여 `job_1`, `job_2`, `job_3`가 순차적으로 실행되도록 합니다. 예를 들어 `job_2`에는 `job_1` 구문을 사용하는 `needs: job_1`이 필요합니다.\n\n작업 1은 다음 단계를 수행합니다.\n\n* 수학 계산을 수행하고 결과를 `math-homework.txt`라는 텍스트 파일에 저장합니다.\n* 작업을 `upload-artifact` 사용하여 아티팩트 `math-homework.txt` 이름으로`homework` 파일을 업로드합니다.\n\n작업 2는 이전 작업의 결과를 사용합니다.\n\\*\n`homework`\n\n이전 작업에서 업로드된 아티팩트 다운로드 기본적으로 `download-artifact` 작업은 단계가 실행 중인 작업 영역 디렉터리에 아티팩트 다운로드합니다.\n`path` 입력 매개 변수를 사용하여 다른 다운로드 디렉터리를 지정할 수 있습니다.\n\n* `math-homework.txt` 파일의 값을 읽고, 수학 계산을 수행하고, 결과를 `math-homework.txt`에 다시 저장하여 내용을 덮어씁니다.\n* `math-homework.txt` 파일을 업로드합니다.\n  이 업로드는 동일한 이름을 공유하기 때문에 이전에 업로드한 아티팩트를 덮어씁니다.\n\n작업 3는 이전 작업에 업로드된 결과를 표시합니다.\n\n* 작업 2에서 `homework` 아티팩트.\n* 수학 수식의 결과를 로그에 출력합니다.\n\n이 워크플로 예시에서 수행되는 전체 수학 연산은 `(3 + 7) x 9 = 90`입니다.\n\n```yaml copy\nname: Share data between jobs\n\non: [push]\n\njobs:\n  job_1:\n    name: Add 3 and 7\n    runs-on: ubuntu-latest\n    steps:\n      - shell: bash\n        run: |\n          expr 3 + 7 > math-homework.txt\n      - name: Upload math result for job 1\n        uses: actions/upload-artifact@v3\n        with:\n          name: homework\n          path: math-homework.txt\n\n  job_2:\n    name: Multiply by 9\n    needs: job_1\n    runs-on: windows-latest\n    steps:\n      - name: Download math result for job 1\n        uses: actions/download-artifact@v3\n        with:\n          name: homework\n      - shell: bash\n        run: |\n          value=`cat math-homework.txt`\n          expr $value \\* 9 > math-homework.txt\n      - name: Upload math result for job 2\n        uses: actions/upload-artifact@v3\n        with:\n          name: homework\n          path: math-homework.txt\n\n  job_3:\n    name: Display results\n    needs: job_2\n    runs-on: macOS-latest\n    steps:\n      - name: Download math result for job 2\n        uses: actions/download-artifact@v3\n        with:\n          name: homework\n      - name: Print the final result\n        shell: bash\n        run: |\n          value=`cat math-homework.txt`\n          echo The result is $value\n```\n\n워크플로 실행은 생성한 모든 아티팩트를 보관합니다. 보관된 아티팩트 다운로드에 대한 자세한 내용은 [워크플로 아티팩트 다운로드](/ko/enterprise-server@3.22/actions/how-tos/manage-workflow-runs/download-workflow-artifacts)을(를) 참조하세요."}