将日常开发人员的笑话添加到GitHub Readme
#javascript #github #node #githubactions

今天,我将展示如何使用GitHub Action和JavaScript创建一个简单的项目,该项目每天在午夜运行,并在readme文件中添加开发人员笑话。

Daily Dev Joke

  • Fetches a joke from an API everyday and edits this README

Exercise for others - 160 calories burned. Exercise for coders - 60 bugs fixed.




首先,我们需要通过运行命令npm init -y创建一个package.json文件。
然后,创建一个README.md文件,以便稍后进行编辑。

之后,创建主index.js文件。该文件将是我们在github操作期间运行的文件,因此请转到package.json并创建脚本来开始通过将此字典添加到包装文件中:

"scripts": {
  "start": "node index.js"
}

我们将使用axios从API中获取笑话,因此请运行命令npm install axios与软件包管理器安装axios

运行此代码安装node_modules目录,因此请随时创建一个.gitignore文件并将内容/node_modules添加到它。

在我们的index.js文件的开头,我们需要创建两个常数:axiosfs。使用require()函数来定义它们。

const axios = require('axios');
const fs = require('fs');

我们将从https://backend-omega-seven.vercel.app/api/getjoke获得笑话。

要从笑话API获取数据,您需要使用axios来编写此代码。我们已经提供了一个捕获声明,以防万一API似乎不起作用。

axios.get("https://backend-omega-seven.vercel.app/api/getjoke")
  .then(res => {
    const data = res.data;
    console.log(data)
  })
  .catch(err => {
    console.log('Error: ', err.message);
  });

如果您正确复制/编写了代码,则代码应以:
的格式打印一个数组

[
  {
    "question": "[random question]",
    "punchline": "[random punchline]"
  }
]

现在,我们需要从数据中检索问题和重点。由于我们知道数据是一个包含一个具有问题和重点字典的数组,因此我们可以使用此代码来定义questionpunchline变量:

const question = data[0].question;
const punchline = data[0].punchline;

在我们忘记之前,我们需要使用将运行github操作的存储库,转到其操作设置并提供工作流读取和写入权限(以便它可以编辑您的readme文件)。

image

接下来,定义一个称为text的变量,该变量包含读数名称,简单的回购描述,大胆的问题以及斜体中的重点。这就是代码在此部分的样子:

const text = `
# Daily Dev Joke

- Fetches a joke from an API everyday and edits this README

**${question}**
*${punchline}*`

之后,我们将使用函数fs.writeFile()来编写我们已生成的redme内容README.md

fs.writeFile('README.md', text, 'utf-8', function(err, data) {
    if (err) throw err;
    console.log('Done!');
})

我们已经成功编写了JavaScript代码!

现在我们必须创建GitHub动作。首先创建一个名为.github/workflows的目录,并在其中创建一个名为daily-joke.yml的文件。

此YML文件将用于定义GitHub动作工作流程。它做的一些关键事情是:

  • 它定义了一个名为“生成每日joke”的工作流,该工作流将在午夜(0 0 *)

  • 每天运行
  • 它有一个名为“ add-contributor”的作业

  • 此作业在Ubuntu Linux环境上运行

  • 它检查了GitHub存储库

  • 它设置Node.js版本14

  • 它安装了NPM软件包

  • 它运行一个NPM脚本来编辑README.md文件

  • 它使用消息“生成的每日笑话”

  • 提交了README.md文件的更改
  • 它将提交推向GitHub存储库

name: generate-daily-joke
run-name: Generating Daily Joke
on: 
  schedule:
    - cron: "0 0 * * *"
jobs:
  adds-contributor:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm install
      - name: Edit README.md
        run: |
          npm start
      - name: Commit README.md
        run: |
          git config --global user.name 'VulcanWM'
          git config --global user.email 'VulcanWM@users.noreply.github.com'
          git commit -am "Generated Daily Joke"
          git push

就是这样!我们已经创建了一个使用GitHub Action和JavaScript的简单项目,该项目每天在午夜每天运行,并将开发人员的笑话添加到ReadMe文件中。