在GitHub Actions中使用特定用户运行作业

99次阅读
没有评论

问题描述

正在将一组GitHub Actions的运行器作为Kubernetes中的Pods运行。他希望确保这些作业是以特定用户的身份运行的,例如以tom用户的身份运行。用户已经将tom用户设置为Kubernetes的一个Pod用户,并将其作为容器镜像的默认用户嵌入到镜像中。

解决方案

请注意以下操作可能会因版本差异而有所不同,确保对应版本的文档来实施。

方案1

为了在GitHub Actions中的Kubernetes运行器上使用特定的用户,你需要在GitHub Actions的工作流文件中进行配置。你可以使用run关键字来指定作业运行的容器镜像,并通过args参数来传递执行命令。此外,你可以通过设置容器的user属性来指定作业运行的用户。以下是一个示例工作流文件:

name: Example Workflow
on:
  push:
    branches:
      - main

jobs:
  example-job:
    runs-on: [self-hosted]
    container:
      image: your_image_with_tom_user:latest
      user: tom
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Run a command as tom user
        run: |
          whoami
          # 在这里可以执行其他的命令

在上面的示例中,我们创建了一个名为example-job的作业,它在自托管的GitHub Actions运行器上执行。我们指定了使用包含tom用户的镜像,并设置了容器的user属性为tom。这将确保作业在tom用户的身份下运行。

你可以将上述示例中的your_image_with_tom_user:latest替换为包含tom用户配置的容器镜像。在作业的steps中,你可以执行需要在tom用户下运行的命令。

方案2

如果你的镜像中已经默认设置了tom用户,并且你不想在GitHub Actions的工作流文件中进行user属性的配置,你可以直接在镜像中指定默认用户。这样,无论在什么环境下运行镜像,它都会以tom用户的身份运行。要做到这一点,你需要在Dockerfile中使用USER命令来指定默认用户。以下是一个示例的Dockerfile片段:

# 基于某个基础镜像
FROM your_base_image:latest

# 设置默认用户为tom
USER tom

# 其他镜像配置和命令
# ...

在上面的示例中,我们使用USER命令将默认用户设置为tom。这意味着无论在哪个环境中运行这个镜像,它都会以tom用户的身份来执行。

使用这种方法,你只需要确保你的镜像中已经包含了tom用户的配置,不需要在GitHub Actions的工作流文件中做额外的配置。

请根据你的需求选择适合的方案来在GitHub Actions中使用特定用户运行作业。

正文完