我在GitHub提交操作运行的容器中使用mkdocs时遇到了问题。
大家好,
我一直在尝试把我的python代码文档放到GitHub上,我已经通过运行GitHub操作成功地做到了
mkdocs gh-deploy --force
使用以下GitHub操作工作流:
name: ci
on:
push:
branches:
- master
- main
permissions:
contents: write
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: 3.x
- run: pip install mkdocs
- run: pip install mkdocs-material
- run: pip install mkdocstrings[python]
- run: mkdocs gh-deploy --force --config-file './docs/mkdocs.yml'
问题是mkdocstrings不起作用,所以网页上没有显示源代码。我做了一个Docker容器,可以通过卷绑定访问本地计算机上的. github文件夹。
停靠文件:
FROM ubuntu:20.04
# This stops being asked for geographical location with apt-get
ARG DEBIAN_FRONTEND=noninteractive
WORKDIR /
COPY requirements.txt /
# TODO: #1 Maybe should not use update (as this can change environment from update to update)
RUN apt-get update -y
RUN apt-get install -y python3.10 python3-pip git-all expect
RUN pip install -r requirements.txt
Docker组成:
version: "3.9"
services:
mkdocs:
build: .
container_name: mkdocs
ports:
- 8000:8000
env_file:
- ../.env
volumes:
- ../:/project
working_dir: /project/docs
command:
sh -c "./gh-deploy.sh"
当我在电脑上运行Docker容器时,这是有效的,但当然当它作为GitHub操作的工作流运行时,它没有访问. github文件夹的权限。
name: dockerMkdocs
on:
push:
branches:
- master
- main
jobs:
build:
runs-on: ubuntu-latest
env:
GH_user: ${{ secrets.GH_user }}
GH_token: ${{ secrets.GH_token }}
steps:
- uses: actions/checkout@v2
- name: Build the Docker image and run
run: docker compose --file ./docs/Docker-compose_GA.yml up
有谁知道mkdocs在上面的第一个例子中运行时是如何知道它在github操作中运行的,但是当它在docker的容器中运行时却不能访问相同的"环境"的吗?如果我能回答这个问题,那么我就可以让'mkdocs gh-deploy--force'在github操作中工作,并加快CI/CD。
我的GitHub存储库位于:https://github.com/healthENV/healthENVsandbox
多谢了
1条答案
按热度按时间mkshixfv1#
我觉得你有两个选择:
1.在容器内运行整个作业
在这种情况下, checkout 操作将获取您的存储库,然后您运行的脚本可以找到必要的文件。这是因为作业中的所有步骤都在容器内部执行。
2.挂载$GITHUB_WORKSPACE文件夹
在容器中装载包含 checkout 的repo的文件夹。您已经将文件夹装载到项目文件夹,但似乎不是正确的文件夹。您可以在运行docker compose之前运行检查以查看当前文件夹是什么(也可以在脚本中运行额外的检查)。