【问题标题】:How to set up a cron job to run app.py on the server via a GitHub workflow?如何设置 cron 作业以通过 GitHub 工作流在服务器上运行 app.py?
【发布时间】:2021-11-26 13:10:41
【问题描述】:

我有一个简单的机器人,可以读取某些电子邮件并在推特上发布它们。现在我正在尝试自动化它,为此我需要在服务器上运行一个 cron 作业。这是我的文件夹结构:

┌ .github
│  └── workflows
│      └── main.yml
├ .env
├ .gitignore
├ app.py
├ post_tweet.py
└ read_email.py

我的主文件很简单:

#app.py

from read_email import mail_connect


def main():
     mail_connect()


if __name__ == '__main__':
     main()

整个项目托管在 Vercel(并与 GitHub 集成)。我想运行这个app.py 文件,从我读过的内容来看,我需要在 GitHub 上创建一个工作流来运行它,但我遇到了一些困难(并且有点不确定它是否会工作)。

#main.yml

on:
  schedule:
  - cron: "*/10 11-13 * * 1-5"

jobs:
  build:
    runs-on: ubuntu-latest
      - uses: actions/checkout@v2  #Do I need this?
      - name: Run a one-line script
        run: #What could I enter here to run app.py?

在我写这个问题的时候,我也想到了以下问题:我真的需要像 Vercel 这样的服务器来运行它吗?还是只用 GitHub 就可以完成所有事情?

【问题讨论】:

    标签: python github-actions


    【解决方案1】:

    要使用 Github Actions 和 CRON 运行 app.py python 脚本,您需要使用如下工作流程:

    name: Python Script Workflow
    
    on:
      schedule:
      - cron: "*/10 11-13 * * 1-5"
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
          - name: Checkout repository content
            uses: actions/checkout@v2 # Checkout the repository content to github runner.
    
          - name: Setup Python Version
            uses: actions/setup-python@v2
            with:
              python-version: 3.8 # Install the python version needed
    
          - name: Install Python dependencies
            uses: py-actions/py-dependency-install@v2
            with:
              path: "requirements.txt"
    
          - name: Execute Python script # Run the app.py
            run: python app.py
    

    如您所见,您需要使用 checkout 操作来访问 github repo 中的文件,然后设置 python 版本,安装依赖项,最后运行脚本。

    Here is an example of a personnal repo with this workflow

    And here is the related workflow run

    【讨论】:

    • 是的,你可以在--upgrade pip read_email之后添加新的依赖,它将为接下来的所有步骤设置依赖。
    • 对不起,我删除了我的评论以更新它,然后再检查您是否已回答。不幸的是,安装依赖项时构建失败:Workflow.
    • 我无法访问您的链接,是私人仓库吗?
    • 对于依赖,也可以直接用这个动作代替shell:github.com/marketplace/actions/pip-installer
    • 不,这是一个公共回购。惊人的!我解决了创建 requirements.txt 并安装它。现在,我有一个与 imaplib.py 相关的different trouble。如果您不介意,我可以使用我的解决方案编辑您的答案,以便将来帮助其他人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 2021-11-07
    • 2012-05-19
    • 1970-01-01
    • 2012-10-31
    • 2015-06-27
    • 2012-02-16
    相关资源
    最近更新 更多