如何在由GitHub action创建的Docker容器中访问GitHub存储库文件?

4

我尝试在GitHub action中创建一个自定义的Docker容器,但是我无法访问我的存储库文件。

我有这个.github/workflows/workflow.yml

name: Workflow

on:
  push:
    branches:
      - my-test-branch

jobs:
  testjob:
    runs-on: ubuntu-20.04
    name: My test job
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: My Custom Action
        uses: ./.github/actions/my-custom-action

.github/actions/my-custom-action/action.yml文件包含以下内容:

name: Docker container test
description: Start container
runs:
  using: docker
  image: ./php.dockerfile

.github/actions/my-custom-action/php.dockerfile 中包含以下内容:

FROM php:8.1-fpm-alpine

WORKDIR /var/www/html

# here I want to use COPY or ADD to attach the directory to the Docker container

我查阅了GitHub文档,但没有找到关于此主题的内容。我浏览了几个Stackoverflow和GitHub问题,并尝试了一些技巧,但没有找到有用的信息。
如何从Docker容器中访问存储库文件?
1个回答

2
我从未在GitHub Actions工作流文件中看到过image: ./php.dockerfile 您可以使用您先前构建和发布到Docker公共注册表(如grc.io)的自定义映像:
jobs:
  my_first_job:
    steps:
      - name: My first step
        uses: docker://gcr.io/cloud-builders/gradle

但是,认为GitHub的工作流程必须先构建一个镜像才能测试您的程序似乎是不利于生产力的。
您可以运行现有的自定义镜像,将已检出的文件夹挂载到正在运行的自定义容器中(而不是使用Dockerfile ADD和COPY命令)。
它使用jobs.<job_id>.container
name: CI
on:
  push:
    branches: [ main ]
jobs:
  container-test-job:
    runs-on: ubuntu-latest
    container:
      image: node:14.16
      env:
        NODE_ENV: development
      ports:
        - 80
      volumes:
        - my_docker_volume:/volume_mount
      options: --cpus 1
    steps:
      - name: Check for dockerenv file
        run: (ls /.dockerenv && echo Found dockerenv) || (echo No dockerenv)

你需要在容器中挂载卷
Mounting volumes in a container

volumes:
  - my_docker_volume:/volume_mount
  - /data/my_data
  - /source/directory:/destination/directory  <= of interest in your case

但这一切都假定你已经构建并发布了自定义镜像,供你的 GitHub Action 在运行时使用。

那么你的意思是唯一的方法就是创建一个 Docker 镜像,将其发布到 Docker Hub,然后使用这个已发布的镜像,对吗? - netdjw
@netdjw 是的,它的要点是:我不知道在 GitHub Action 运行时构建自定义镜像是否可行。但是,在 GitHub Action 中使用自定义镜像肯定是可以的。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接