【问题标题】:How to use your own Makefile in github actions?如何在 github 操作中使用自己的 Makefile?
【发布时间】:2021-07-22 03:39:09
【问题描述】:

我正在尝试使用 github 操作自动化 CI/CD 管道。我有一个 Makefile 如下:

.virtualenv:
    virtualenv -p python3 .virtualenv
    . .virtualenv/bin/activate; \
    pip install -r requirements.txt -r requirements_test.txt

clean:
    find . -name __pycache__ -exec rm -rf {} +
    rm -rf *.egg-info
    rm -rf .virtualenv/


test: .virtualenv
    (. .virtualenv/bin/activate; \
    pycodestyle --max-line-length=79 app test; \
    nosetests --with-coverage --cover-tests --cover-min-percentage=80 --cover-package=app test)

build: test clean

.PHONY: test clean

我想使用 github 操作来自动化这个工作流程。我已经像这样设置了我的 github 工作流程:

name: python-app

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - name: build application
      run: make build

我想要的是当推送到 master 或针对 master 创建 PR 时,应该触发工作流。我知道这里有一个测试 python 应用程序的标准模板:https://docs.github.com/en/actions/guides/building-and-testing-python#testing-your-code 但我想通过我自己的 Makefile 来完成。当我运行它时,我得到了这个错误:

每个步骤都必须定义一个usesrun

这方面的任何线索都会有所帮助。谢谢

【问题讨论】:

  • 最简单的解决方法 - dockerize 整个过程,然后只在 CI (GitHub Actions) 端使用 docker 命令。如果你 dockerize,它可以在任何 CI 之间进行互操作,你不需要针对特定​​环境进行调整。这通常是所有问题的最佳实践,例如 smth 在 CI 环境中不起作用。
  • 是的,我确实会 dockerize 它 make build 最终会运行测试并构建 docker
  • 我认为@taledor 的评论很有趣。我不喜欢我无法使用 GH 操作在本地构建的事实,并且能够为我的构建使用 Dockerfile 而不是 GH .yaml 用于操作,这似乎是一个胜利。

标签: continuous-integration github-actions


【解决方案1】:

当你想从当前仓库执行文件时,你需要使用actions/checkout

这将允许您在工作流程中访问存储库 $github_workspaceGithub environment variables 之一)。

例如,考虑到您的 Makefile 文件位于存储库的根目录,您可以使用如下内容:

   name: python-app

   on:
     push:
       branches: [ master ]
     pull_request:
       branches: [ master ]

   jobs:
    build:
      runs-on: ubuntu-latest
      steps:
      - name: checkout repo
        uses: actions/checkout@v2
      - name: build application
        run: make build

Here 是来自个人存储库的另一个工作流示例,如果您想执行特定脚本来执行任何操作,请遵循相同的逻辑。

【讨论】:

    猜你喜欢
    • 2021-08-17
    • 2023-02-14
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 2012-11-26
    • 2021-09-22
    • 2021-11-26
    • 1970-01-01
    相关资源
    最近更新 更多