コンテンツにスキップ

付録1 ワークフロー実行環境の作成例

以下のワークフロー定義は、Red Hat社が提供しているUniversal Base Image(UBI)をベースに、GitコマンドおよびBuildahコマンドをイメージ内にセットアップし、そのイメージをGitHub Packagesを利用したコンテナレジストリへ書き出すサンプルです。ワークフローの実行にも同じUBIを利用しています。

Runnerが設定されているリポジトリのデフォルトブランチの「.github/workflows」ディレクトリ配下に任意のファイル名で本ワークフロー定義ファイルを作成し、%%で囲まれている部分を実際に実行するために必要な情報に置き換えます。詳細は入力のヒントを参照してください。その後、リポジトリのActionsページから実行します。


name: customizing existing container image

on:
  workflow_dispatch:

jobs:
  customizeContainer:
    runs-on: self-hosted

    env:
      IMAGE_NAME: customized_image                           # 最終的に生成するコンテナイメージ名
      GHE_FQDN: %%ご利用されているGitHub EnterpriseのFQDN%%
      REPO_PATH: %%Organization名%%/%%リポジトリ名%%

    container:
      image: registry.access.redhat.com/ubi8/ubi:latest      # ワークフロー実行に利用するコンテナイメージを指定
      volumes:
        - /var/lib/containers:/var/lib/containers            # コンテナ内でイメージ作成するための設定
      options: "--privileged"                                # 同上

    steps:
    - name: customizing container
      run: |
        echo "------- step0 -------"
        yum -y install buildah

        echo "------- step1 -------"
        mkdir /root/work                                   # コンテナイメージをカスタマイズするためのワーク環境
        cd /root/work                                      # カレントを移動

        echo "------- step2 -------"
        cat << EOF > Dockerfile                            # Dockerファイルを作成
        # ベースのイメージ
        FROM registry.access.redhat.com/ubi8/ubi:latest

        # Gitのセットアップ
        RUN yum install -y git

        # Buildahのセットアップ
        RUN yum install -y buildah

        # その他、必要なツールをここでセットアップします

        CMD [ "/bin/bash" ]
        EOF

        echo "------- step3-1 -------"
        buildah login -u ${{ github.actor }} -p ${{ secrets.github_token }} --tls-verify=false $GHE_FQDN

        echo "------- step3-2 -------"
        buildah build --network=host --tls-verify=false -t $GHE_FQDN/$REPO_PATH/$IMAGE_NAME:latest ./

        echo "------- step3-3 -------"
        buildah push --tls-verify=false -f v2s2 $GHE_FQDN/$REPO_PATH/$IMAGE_NAME:latest

        echo "------- done -------"

入力のヒント

入力情報種別 入力する値
%%ご利用中のGitHub EnterpriseのFQDN%% Digital Application Platform GitHub Enterpriseサービスでは「git-〇〇〇〇〇.jp-east-1.paas.cloud.global.fujitsu.com」というFQDNが設定されています。
%%Organization名%% カスタマイズしたコンテナイメージを格納するリポジトリが所属するOrganization名を入力します。省略する場合は後ろにある「/」も削除します。
%%リポジトリ名%% カスタマイズしたコンテナイメージを格納するリポジトリ名を入力します。