Amazon CodeCatalystが提供するGitHub Actionsのランタイム環境の注意点

記事タイトルとURLをコピーする

こんにちは。
アプリケーションサービス部、DevOps担当の兼安です。

今回はAmazon CodeCatalystで、GitHub Actionsのワークフローを動かす際、ランタイム環境に注意が必要なことをお話しします。

本記事のターゲット

AWSで完結したGit環境を構築したいエンジニアを対象としています。

Amazon CodeCatalystとは

Amazon CodeCatalyst(以降、CodeCatalystと記述)は、AWSが提供する開発者向けの統合開発環境です。
GitHubやGitLabのようなGitリポジトリをホストするサービスで、AWSの各種サービスと連携してCI/CDを実現することができます。

aws.amazon.com

AWS CodePipelineと異なり、CI/CDだけでなくIssue管理などの機能を備え、統合開発環境の色が濃くなっています。

GitHub Actionsで書いたワークフローをAmazon CodeCatalystで実行する方法

CodeCatalystでCI/CDを作る場合、ワークフローを作成します。
この時、その定義はYAML形式で記述し、リポジトリ内の.codecatalyst/workflowsディレクトリに配置します。

docs.aws.amazon.com

定義YAMLは、CodeCatalyst特有の形式となっており、GitHub ActionsやAWS CodeBuildのbuildspec.ymlなどとは異なります。

とはいえ、CodeCatalystは後発なので今から新しい形式で定義YAMLを作るのは迷うところ。
これに対し、CodeCatalystはGitHub Actionsを動かす機能を持っています。
これが、本記事で述べているCodeCatalystが提供するGitHub Actionsのランタイム環境とは、この機能で使用されるものです。

docs.aws.amazon.com

CodeCatalystによるGitHub Actionsの動かし方

CodeCatalystのワークフローでGitHub Actionsを動かすには、以下の手順を踏みます。

  1. ワークフローを作成する
  2. ワークフローにGitHub Actions by AWSを追加する
  3. .codecatalyst/workflowsにYAMLファイルができるので編集する

ワークフローの作成と、GitHub Actions by AWSの配置

まずは、CodeCatalystのワークフローを作成します。
CodeCatalystの画面左側のナビゲーションペインから「Workflow」を選択し、「Create workflow」をクリックします。

「Create workflow」をクリック

ワークフローの新規作成画面

Workflowの編集画面が表示されます。
左上の「Actions」をクリック。
次に「GitHub」を選択し、表示される「GitHub Actions by AWS」を選択します。
これで、画面中央にGitHub Actionsが追加されます。

GitHub Actions by AWSを追加

「Sources」にWorkflowSourceを選択、それ以外は特に変更の必要はありません。
「Commit」をクリックします。

Commitでワークフローができる

この後、リポジトリの方を見ると、.codecatalyst/workflowsディレクトリが作成され、YAMLファイルが作成されているはずです。

ワークフローのYAMLファイルが作成される

作ったばかりの内容はこちらです。

Name: Workflow_77ec
SchemaVersion: "1.0"

# Optional - Set automatic triggers.
Triggers:
  - Type: Push
    Branches:
      - develop

# Required - Define action configurations.
Actions:
  GitHubActions_b9:
    # Identifies the action. Do not modify this value.
    Identifier: aws/github-actions-runner@v1.0.0
    Inputs:
      Sources:
        - WorkflowSource
    # Defines the action's properties.
    Configuration:
      # Required - Steps are sequential instructions that run shell commands
      Steps:
        - name: Hello_world_action
          uses: actions/hello-world-javascript-action@v1.1
          with:
            who-to-greet: Mona the Octocat
    Compute:
      Type: EC2

以降は、このYAMLファイルを編集していきます。
なお、CodeCatalystのGUIで編集して、YAMLファイルに反映することもできますが、今回その手順は省略します。

作成した後に、一度プッシュしてみてください。
ワークフローが実行されるのが確認できると思います。

CodeCatalystのワークフローのYAMLファイルにGitHub Actionsの内容を移植してみる

次に、GitHub Actionsの内容をCodeCatalystのワークフローに移植してみます。
GitHub Actionsのワークフローは、以下のような内容で、GitHub Actionsにおいて正常終了することを確認しています。
ジョブは2つ用意しています。

name: GitHub Actions Workflow

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  first_job:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '23.10.0'

      - name: Install dependencies
        run: npm install
  second_job:
    runs-on: ubuntu-latest
    steps:
      - name: Echo message
        run: echo "This is the second job"

CodeCatalystのワークフローのYAMLファイルに移植した結果はこちらです。

Name: CodeCatalyst_GitHub_Actions_Workflow
SchemaVersion: "1.0"

# Optional - Set automatic triggers.
Triggers:
  - Type: Push
    Branches:
      - main

# Required - Define action configurations.
Actions:
  FirstJob:
    # Identifies the action. Do not modify this value.
    Identifier: aws/github-actions-runner@v1.0.0
    # Specifies the source and/or artifacts to pass to the action as input.
    Inputs:
      # Optional
      Sources:
        - WorkflowSource # This specifies that the action requires this Workflow as a source
    # Defines the action's properties.
    Configuration:
      # Required - Steps are sequential instructions that run shell commands
      Steps:
        - name: Setup Node.js
          uses: actions/setup-node@v3
          with:
            node-version: '23.10.0'

        - name: Install dependencies
          run: npm install
    Compute:
      Type: EC2
  SecondJob:
    Identifier: aws/github-actions-runner@v1.0.0
    Configuration:
      Steps:
        - name: Echo message
          run: echo "This is the second job"
    Compute:
      Type: EC2

first_jobsecond_jobに相当するFirstJobSecondJobを作り、それぞれIdentifierでランタイム環境を指定しています。
ランタイム環境は、aws/github-actions-runner@v1.0.0を指定します。
そして、first_jobsecond_jobstepsに相当する部分をConfiguration.Stepsの中に記述します。
ただし、actions/checkout@v3の部分は移植する必要がないので、削除しています。
actions/checkout@v3は行うのはソースのチェックアウトですが、WorkflowSourceで指定しているので、不要です。

Stepsの中身以外はCodeCatalystの形式に合わせる必要があります。
GitHub Actionsのワークフローを流用しようと考えた場合、実質的にそのまま流用できるのは、ジョブの定義のみとなります。

移植自体はこれで完了ですが、これを実行するとFirstJobの方で以下のエラーが出ます。

CodeCatalystでのワークフローの実行結果

[Container] 2025/05/XX XX:XX:XX npm install
[Container] 2025/05/XX XX:XX:XX env:
[Container] 2025/05/XX XX:XX:XX   AWS_REGION: us-west-2
[Container] 2025/05/XX XX:XX:XX node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)
[Container] 2025/05/XX XX:XX:XX node: /lib64/libc.so.6: version `GLIBC_2.27' not found (required by node)
[Container] 2025/05/XX XX:XX:XX node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node)
[Container] 2025/05/XX XX:XX:XX ##[error]Process completed with exit code 1.

この理由は、aws/github-actions-runner@v1.0.0にあります。
aws/github-actions-runner@v1.0.0GLIBC_2.27GLIBC_2.28が含まれていないのが原因です。

aws/github-actions-runnerとは

aws/github-actions-runnerは、AWSが提供するGitHub Actionsを動かすためのランタイム環境です。
このランタイム環境には制限事項があります。

Amazon CodeCatalystユーザーガイド CodeCatalyst における GitHub Action の制限事項

GitHub Actions は 2022 年 11 月のランタイム環境 Docker イメージで実行されており、このイメージには古いツールが含まれています。 イメージやツールの詳細については、「ランタイム環境イメージの指定」を参照してください。

そして、このランタイム環境に含まれるNode.jsのバージョンは、以下のページで確認できます。

Amazon CodeCatalystユーザーガイド ランタイム環境イメージの指定

Node.jsのバージョンは、16.20.2とあります。
ランタイムに含まれるNode.jsが16.20.2であるため、その実行に必要なGLIBCのバージョンも古く、Node.jsのバージョンを上げるとGLIBCとの互換性がなくなるのがエラーの原因です。

これを回避するには、Node.jsのバージョンを下げるか、新しいバージョンのNode.jsとGLIBCおよび GitHub Actions Runner を使用可能なカスタムコンテナを作る必要があります。

まとめ

CodeCatalystは、GitHub Actionsのワークフローを動かす機能を持っていますが、以下の点に注意が必要です。

  • CodeCatalystとGitHub Actions記法が一致するのはジョブの定義部分のみ
  • CodeCatalystが提供するGitHub Actionsのランタイム環境は、GitHub Actionsがデフォルトで提供するランタイム環境と差がある

注意事項を押さえつつ利用すれば、有効に活用できる機能です。
本記事が、CodeCatalystを利用する際の参考になれば幸いです。

兼安 聡(執筆記事の一覧)

アプリケーションサービス部 DS3課所属
2025 Japan AWS Top Engineers (AI/ML Data Engineer)
2025 Japan AWS All Certifications Engineers
2025 AWS Community Builders
Certified ScrumMaster
PMP
広島在住です。今日も明日も修行中です。