🔖

GitHub ActionでGitHub Organization内にあるプライベートリポジトリのReleaseを取得する

2023/11/29に公開

はじめに

GitHub Organizationで管理しているプライベートリポジトリのアプリケーションがあり、これをReleaseページを使って別リポジトリのGitHub Action内で使えるようにするための手順をまとめます。

GitHub Appの作成

GitHub Appの作り方は以下のドキュメントに倣ってください。

https://docs.github.com/en/apps/creating-github-apps/registering-a-github-app/registering-a-github-app

Repository PermissionsでReleaseページからダウンロードするための権限を有効化します。
ContentsRead-onlyに設定してください。(自動的にMetadataRead-onlyになります)

private keyの作成

作成したGitHub Appのページから、Generate a private keyをクリックしてprivate keyを作成します。

Install GitHub App

作成したGitHub Appをリポジトリにインストールします。

Only select repositoriesを選択し、ダウンロード対象のリポジトリと、ダウンロードするリポジトリの2つを選択します。

Repository secrets

作成したGitHub AppのページにあるApp IDと、ダウンロードしたprivate keyを使って、以下2つのRepository secretを設定します。

  • APP_ID
  • APP_PRIVATE_KEY

GitHub Action

.github/workflowsに任意の名前のWorkflowファイルを追加し、以下のようにGitHub Appsによるトークンの発行・Releaseページからのダウンロードします。

actions/create-github-app-tokenownerrepositoriesを設定しないと、Releaseページからダウンロードできる権限があるトークンが発行されないのでご注意ください。

Releaseページからのダウンロードはhttps://github.com/dsaltares/fetch-gh-release-assetを利用しています。

name: do something

on:
  pull_request:
    types:
      - opened
      - synchronize

jobs:
  do-something:
    runs-on: ubuntu-latest
    timeout-minutes: 5
    steps:
      - uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.head.sha }}

      - name: Generate a token
        id: generate_token
        uses: actions/create-github-app-token@v1
        with:
          app-id: ${{ secrets.APP_ID }}
          private-key: ${{ secrets.APP_PRIVATE_KEY }}
          owner: ${{ github.repository_owner }}
          repositories: "something-a,something-b" # ダウンロード対象のリポジトリ、ダウンロードを行うリポジトリを入力する必要があります

      - name: Download latest binary
        uses: dsaltares/fetch-gh-release-asset@1.1.1
        with:
          repo: org/repo # 任意の組織/リポジトリ名
          version: latest
          file: something_Linux_x86_64.tar.gz # ダウンロードするファイル名
          token: ${{ steps.generate_token.outputs.token }}

      - name: Extract file
        run: tar -xvf something_Linux_x86_64.tar.gz
GitHubで編集を提案

Discussion