GitHub Actions:使用 Podman 运行 Fedora Linux

介绍

GitHub 支持分布式和协作代码开发。 为了确保软件正常工作,许多项目使用持续集成来构建和测试每个新贡献,然后再包含它。 GitHub上的持续集成服务是 GitHub 操作.

背景

GitHub 提供在 Ubuntu、macOS 和 Windows 操作系统上的测试。 但是,还有各种各样的其他操作系统,您可能希望确保在 GitHub 上开发的开源项目在其他操作系统上运行良好,尤其是 Fedora Linux。

Podman 是一个命令行工具,可以在容器中运行不同的 Linux 操作系统。 这提供了一种在其他操作系统上测试软件的便捷方式。 Podman 入门一文在 Fedora Linux 介绍如何运行 Podman Fedora.

本文演示如何运行 Fedora 使用 Podman 的容器中的 Linux。 主机操作系统可以是任何安装了 Podman 的发行版,甚至是 macOS 或 Windows。 在下面的演示中,主机操作系统是 Ubuntu。 这将使我们能够测试在 GitHub 上开发的项目能否在 Fedora, 即使 Fedora 不可用作 GitHub 操作的基本操作系统。

GitHub 操作配置示例

作为一个 example,我们为 Fedora Linux 到 红琥珀,一个支持将数据帧用于机器学习和其他数据科学应用程序的项目 红宝石. 这个项目依赖于 Apache 箭 释放 10 或更大,所以我们需要使用 Fedora Linux 生皮 (F38) 自 Fedora Linux 37 目前有 Apache 箭头释放 9 Fedora 存储库。

GitHub 有很好的使用文档 GitHub 操作. 总之,我们需要创建一个 yaml 项目的 .github/workflows 目录中的文件,然后启用 GitHub Actions(如果尚未启用)。 您可以轻松修改的示例 yaml 文件如下:

name: CI
on:
  push:
    branches:
      - main
  pull_request:
  
jobs:
  test:
    name: fedora
    runs-on: ubuntu-latest
    
    steps:
      - name: Setup Podman
        run: |
          sudo apt update
          sudo apt-get -y install podman
          podman pull fedora:38
      - name: Get source
        uses: actions/checkout@v3
        with:
          path: 'red_amber'
      - name: Create container and run tests
        run: |
          {
              echo 'FROM fedora:38'
              echo '# set TZ to ensure the test using timestamp'
              echo 'ENV TZ=Asia/Tokyo'
              echo 'RUN dnf -y update'
              echo 'RUN dnf -y install gcc-c++ git libarrow-devel libarrow-glib-devel ruby-devel'
              echo 'RUN dnf clean all'
              echo 'COPY red_amber red_amber'
              echo 'WORKDIR /red_amber'
              echo 'RUN bundle install'
              echo 'RUN bundle exec rake test' 
          } > podmanfile
          podman build --tag fedora38test -f ./podmanfile

添加上面的 yaml 文件可以测试 Fedora Linux 在 Ubuntu 上作为访客运行。 类似的工作流程应该适用于在 GitHub 上开发的其他项目,从而确保各种软件都能在 Fedora Linux。

致谢

Benson Muite 感谢 铃木博和 用于创建 RedAmber、改进工作流程并使用它来测试 RedAmber Fedora Linux。