今天,我将展示如何使用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
文件的开头,我们需要创建两个常数:axios
和fs
。使用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]"
}
]
现在,我们需要从数据中检索问题和重点。由于我们知道数据是一个包含一个具有问题和重点字典的数组,因此我们可以使用此代码来定义question
和punchline
变量:
const question = data[0].question;
const punchline = data[0].punchline;
在我们忘记之前,我们需要使用将运行github操作的存储库,转到其操作设置并提供工作流读取和写入权限(以便它可以编辑您的readme文件)。
接下来,定义一个称为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
文件 -
它使用消息“生成的每日笑话”
提交了 -
它将提交推向GitHub存储库
README.md
文件的更改
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文件中。