그 기계는 사용자가 필요 없어요!GiitHub Apps로 GiitHub Actions를 활용하세요.

이 글은 GitHub Actions Advent Calendar 2021의 여섯째 날의 글이다.

개시하다


안녕하세요!하미주식회사 거예요.
기본적으로 GiitHub Actions에는 환경 변수를 설정하여 사용하면 Actions가 트리거하는 창고를 조작할 수 있는 비밀GITHUB_TOKEN이 있습니다.
GITHUB_토키오에 대한 비밀.
이것은 이렇게 하면 매우 편리하지만, 특정 조건을 지정할 때 약간의 문제가 있다.

CI에서 다른 창고를 사용하려면 어떻게 해야 합니까?


위에서 말한 바와 같이 GITHUB_TOKEN에서 권한 범위는 Action이 촉발하는 창고에 의해 제한된다.따라서 아래의 용례에 적용되지 않는다.
  • CI에서 다른 개인 창고 참조
  • Terraform의 개인 모듈 또는
  • 이 경우 기계 사용자와 관련이 없는 사용자를 만들고 이 사용자의 개인 액세스 카드를 사용합니다.
    기릿허브도 규약상 기기 사용자를 허용했다.
    3. 계좌 요구
    컴퓨터 계정은'계정'대신'규약'을 받아 유효한 메일 주소를 제공하고 이를 담당하는 개인이 설정하는'계정'을 말한다.컴퓨터 계정은 자동화 작업을 수행하는 데만 사용됩니다.여러 사용자가 컴퓨터 계정의 조작을 지시할 수 있지만 컴퓨터 조작에 대해 책임을 지는 것은 계정의 소유자다.무료 사용자 계정을 제외하고는 여러 개의 무료 컴퓨터 계정을 저장할 수 없다.
    간단할 뿐만 아니라 규칙적으로도 기계 사용자를 아무런 문제 없이 만들 수 있지만 단점도 있다.
  • 영패의 유효기간 관리
  • 발행된 개인 방문 영패가 기한이 없을 때마다 영패가 만료될 때마다 교환 작업이 발생한다.
  • 사용자 요금의 발생
  • 기계 사용자지만 사용자이기도 하다.GiitHub의 좌석 소비가 있기 때문에 그 지불도 필요합니다.
  • 이러한 단점을 해결하는 방법으로는 GiitHub Apps가 있습니다.
    GiitHub Apps를 이용하면...
  • 영패의 유효기간 관리
  • 발매 후 단시간 내에 사용할 수 없기 때문에 고려하지 않아도 된다
  • 사용자 요금의 발생
  • 사용자가 아니기 때문에 워크시트 소모가 발생하지 않습니다
  • 이렇게 좋은 일만 가득하다.
    다음은 GiitHub Apps와 그 사용 방법, 설정 방법에 대해 설명합니다.

    GiitHub Apps란?


    아무튼 출석부터 부르고.
    GitHub Apps
    GiitHub Apps란 무엇입니까?이 글은 이해하기 쉬우니 참고하세요!
    제작 학습 GiitHub Apps
    전통적인 OAuth Apps는 설치 - 사용자가 창고에 대한 권한을 삭제하거나 잃을 때 사라집니다 - 사용자가 방문 영패를 취소하지 않으면 영구적으로 유효합니다.
    이와 달리 GiitHub Apps는 창고의 설치 - 창고의 소유자(Organization 및 User)에 올바르게 설치되어 창고에 배급하는 인상을 준다.
    쉽게 말해 OAuth Apps는 사용자 단위 앱이고, GiitHub Apps는 창고 단위 앱이다.
    이렇게 간결하면 알기 쉽다.
    구축 합병의 결정의 그림도 따뜻해서 이해하기 쉽다.
    그렇다면 다음은 실제로 GiitHub Action에 GiitHub Apps를 어떻게 설정한 건가요?이렇게 말하다.

    방법


    GiitHub Apps 만들기


    https://github.com/organizations/{org 이름}/settings/appls
    "프로그램 만들기"를 누르십시오.GitHub App name 응용 프로그램의 이름을 지어 주세요.Homepage URL 맞으면 돼요.Webhook 검사를 취소해 주십시오.
    권한은 필요한 것을 가지고 간다.Active를 원하면 git cloneRepository permissionsContents 이상으로 설정하십시오.

    GiitHub App 설치


    https://github.com/organizations/{org 이름}/settings/apps/{app 이름} Read를 눌러 개인 키를 만듭니다.
    이 개인 키를 사용하여 CI에서 임시 영패를 발행할 것이니 조심해서 보관하십시오.
    그리고 AppID도 적어주세요.
    https://github.com/organizations/{org명}/settings/apps/{app명}/installations
    어플리케이션에 액세스하여 설치합니다.
    창고를 선택할 때 접근할 수 있는 창고를 지정합니다.
    설치 후 아래 링크에서 창고의 권한을 변경할 수 있습니다.
    https://github.com/organizations/{org 이름}/settings/installations/{AppID}

    비밀을 설정하다


    다음 두 점을 CI 개체 창고의 비밀로 지정합니다.
    https://github.com/{org 이름}/{창고 이름}/settings/secrets/actions
  • 방금 만든 비밀 키
  • AppID
  • CI에서 토큰을 발행하다


    여기까지 하고 CI에서만 사용했어요!
    개인 키와 AppID에서 임시 토큰을 게시하는 작업은 다음 Actions를 사용하여 간단히 수행할 수 있습니다.
    https://github.com/marketplace/actions/github-app-token
    이런 느낌이에요.
    jobs:
      job:
        runs-on: ubuntu-latest
        steps:
          - name: Generate token
            id: generate_token
            uses: tibdex/github-app-token@v1
            with:
              app_id: ${{ secrets.APP_ID }}
              private_key: ${{ secrets.PRIVATE_KEY }}
              # Optional (defaults to ID of the repository's installation).
              # installation_id: 1337
              # Optional (defaults to the current repository).
              # repository: "owner/repo"
          - name: Use token
            env:
              TOKEN: ${{ steps.generate_token.outputs.token }}
            run: |
              echo "The generated token is masked: ${TOKEN}"
    


    GiitHubActions의 추가 달력이며, CircleaCI의 경우 사용법을 첨부합니다.
    자신의 앞에서 기호화폐를 발행하는 것은 매우 번거롭기 때문에 아래의 도구를 사용했다.감사합니다.
    https://github.com/mackee/git-credential-github-apps
    jobs:
      first:
        executor: hogehoge
        steps:
          - checkout
          - run: |
              wget https://github.com/mackee/git-credential-github-apps/releases/download/v1.1.1/git-credential-github-apps_1.1.1_Linux_x86_64.tar.gz 
              tar -zxvf git-credential-github-apps_1.1.1_Linux_x86_64.tar.gz
              chmod 755 git-credential-github-apps
              mv git-credential-github-apps /usr/bin/git-credential-github-apps
          - run: |
              echo -e $PRIVATE_KEY > /tmp/key.pem
              export $(echo -e 'host=github.com\nprotocol=https' |  git-credential-github-apps -privatekey /tmp/key.pem -appid $APP_ID -login {{org名}} get | grep password)
              export GIT_TOKEN=$password
    

    끝말


    아이고, 설정이 귀찮네.
    필요한 권한 문제 등으로 기계 사용자와Generate a private key도 적합한 부분이 있어 균형을 잡으면서 능숙하게 사용하고 싶어요![1]
    GitHub Actions Advent Calendar 2021, 7일째인 내일은 kt15의 "최근 공개된 자작 Action"!
    각주
    GiitHub App과 OAuth App의 차이점 ↩︎

    좋은 웹페이지 즐겨찾기