GitHub News

GitHub Actions: 이제부터 Workflow 재사용이 가능합니다!

GitHubKorea 2022. 9. 1. 17:36

안녕하세요 GitHub 한국 총판 단군소프트입니다.

오늘은 'GitHub Actions- Workflow 재사용'에 대한 주제로 찾아뵙게 되었습니다.

Agenda

Setup, Login 및 Run 단계를 하나의 Action으로 통합하다

여러 저장소에 걸쳐 일관성 있게 구축하다

운영환경 배포에 특정 Workflow가 필요하다

그럼 시작해 볼까요?

GitHub Actions는 모든 형태와 규모의 팀을 위해 점점 더 나아지고 있습니다. 지난 한 달 동안 많은 대기업을 포함하여 수천 개의 저장소에서 재사용 Workflow의 베타 버전을 사용하여 중복을 줄이고 일관성을 높였습니다. 10월에 베타가 시작된 이후 여러 가지 개선 사항을 공개했습니다. 여기에는 재사용 Workflow에서 다른 Job으로 데이터를 전달하기 위한 Outputs 구문, Environment Secret 및 감사 로그의 재사용 Workflow 사용에 대한 상세 내역이 포함됩니다.

재사용 Workflow는 GitHub Actions를 모든 규모의 팀으로 확장하기 위한 최신 기능 목록을 정리합니다. 이번 블로그에서는 GitHub Actions로 쉬워진 3가지 시나리오를 소개합니다.


Setup, Login 및 Run 단계를 하나의 Action으로 통합하다

Setup 또는 Login 구문을 복사하시나요?

이제는 이러한 항목을 하나의 Action으로 구성할 수 있습니다. 다른 Action과 마찬가지로 이것들은 여러 Job이나 Workflow에서 사용할 수 있으며 GitHub Marketplace에 게시될 수 있습니다.

 

Before

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: docker/setup-buildx-action@v1
      - uses: docker/login-action@v1
        with:
          username: ${{inputs.registry_username}}
          password: ${{inputs.registry_password}}
      - uses: docker/build-push-action@v2
        with:
          context: .
          push: true
          tags: user/app:latest

 

After

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: my-org/publish-docker@v1
        with:
          registry_username: ${{secrets.REGISTRY_USERNAME}}
          registry_password: ${{secrets.REGISTRY_PASSWORD}}

Action 작성에 대해 자세히 알아보기>>

 

 

여러 저장소에 걸쳐 일관성 있게 구축하다

기본적인 동일한 방식으로 구축 또는 배포된 저장소가 많이 있나요?

이제 재사용 Workflow를 생성하고 이러한 모든 저장소를 동기화할 수 있습니다.

 

Before

jobs:
  build:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [10.x, 12.x, 14.x, 15.x]

    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v2
      with:
        node-version: ${{ matrix.node-version }}
    - run: npm ci
    - run: npm run build --if-present
    - run: npm test

 

After

jobs:
  build:
  uses:
    my-org/actions/.github/Workflows/node.js.yml@1

독립적으로 또는 함께 작동하도록 설계된 재사용 Workflow의 라이브러리를 구축할 수 있습니다. Actions처럼 Inputsoutputs를 통해 서로 데이터를 주고받을 수 있도록 할 수도 있습니다.

재사용 Workflow에 대해 자세히 알아보기>>

 

운영환경 배포에 특정 Workflow가 필요하다

운영환경에 배포 시 특정 Step을 따라야 할까요?

재사용 Workflow를 OpenID Connect와 결합할 수 있습니다. 현재는 베타 버전으로, 필수 Workflow사용을 설정합니다.

이를 수행하려면 먼저 재사용 Workflow를 정의합니다. 예를 들어 다음과 같습니다.

# shopy/app/.github/Workflows/release.yml
name: Build and release
on: [push, pull_request]
jobs:
  cd:
    uses: shopy/actions/.github/Workflows/cd.yml@1
# shopy/actions/.github/Workflows/cd.yml
name: CD
on: [Workflow_call]
jobs:
  deploy_to_review:
     ...
  deploy_to_staging:
     ...
  deploy_to_production:
    environment: production

이후 다음과 같이 클라우드 플랫폼에 정책을 생성하여 운영 환경에 액세스할 때 인증 정보를 해당 Workflow로만 제한하세요.

Subject: repo:shopy/*:environment:production
Custom claim: job_Workflow_ref:
shopy/actions/cd/.github/Workflows/cd.yml@1

이제 deploy_to_production Job만 운영 환경에 배포하는 데 필요한 자격 정보에 액세스할 수 있습니다. 또한 팀원 모두가 재사용 Workflow를 사용하여 배포해야 하게 됩니다.

재사용 Workflow를 사용한 OpenID Connect에 대해 자세히 알아보기>>


유용하셨나요?

다음 게시물도 유용한 정보를 담아 찾아오겠습니다.

긴 글 읽어주셔서 감사합니다 :)

이 글은 https://github.blog/2021-11-29-github-actions-reusable-workflows-is-generally-available/을 번역한 글입니다.