⚡️ 6分钟内创建你的第一个GitHub操作
Sapper 的 GitHub Action
介绍
开发者社区的朋友们,大家好!😉 新的一天,又带来了一些关于 GitHub Actions 的实用信息。之前,我们探讨了如何 在推送代码后将静态 11ty 网站部署到远程虚拟服务器 ,希望大家已经掌握了文章中提到的要点。
使用Marketplace 中 现成的 GitHub Actions 固然不错,但是……如果它们 不可用 ,或者/以及您的配置 过于特殊 怎么办?
没错!👌 让我们来写下你的第一个行动吧。
📝 目录
示例的基础
让我们来看看我为构建基于 Sapper 的 网站 而创建的 GitHub Action :
:octocat: 使用 Sapper 生成静态网站的 GitHub Action。
Sapper 的 GitHub Action
使用此操作,通过Sapper 构建您的静态网站 。
☝️ 如何使用?
要使用它,请 .github/workflows/sapper_build.yml在基于 Sapper 的网站存储库中创建一个文件作为操作。
📌 提示 :阅读 本文 以更深入地了解GitHub Actons步骤。
⚙️ 输入
此操作接受几个 可选 输入:
输入名称
必需的?
默认
描述
build_mode
不
"export"
工兵的建造模式
args
不
none
传递给工兵调用的参数
例如:
- name : Build
uses : truewebartisans/actions-sapper@master
with :
build_mode : " export"
args : " --legacy --entry about"
Enter fullscreen mode
Exit fullscreen mode
👀 更多复杂示例
这些示例演示了如何 使用此操作 构建网站,然后如何使用另一个操作进行部署。
💡部署到GitHub Pages
name : Build Sapper and Deploy to GitHub Pages
on : [push]
jobs :
build_deploy :
runs-on : ubuntu-latest
steps :…
Enter fullscreen mode
Exit fullscreen mode
GitHub Action 基础知识
通常,GitHub Action 项目的结构如下所示:
.
├── .gitignore
├── .github
│ ├── gh-cover.png
│ └── workflows
│ └── test_deploy.yml
├── action.yml
├── Dockerfile
├── entrypoint.sh
├── LICENSE
└── README.md
Enter fullscreen mode
Exit fullscreen mode
现在,让我们来分析最基本的文件。在下面的代码示例中,我特意划分了不同的部分并做了标记,以便于阅读。
但是,你的行动可能并非如此……😏
↑ 目录
├── action.yml
这是该操作的设置文件。
# Action's main info
name : " Sapper Action"
description : " Build your Sapper-based static website"
# Action's author name
author : " Vic Shóstak"
# Action's branding data for GitHub Marketplace
# See docs: [1]
branding :
icon : " package" # icon name from Feather open source icons pack
color : " blue"
# Action's inputs (options)
# See docs: [2]
inputs :
# First input (option) name
# See docs: [3]
build_mode :
# Input's description
description : " Build mode to the Sapper (could be `build` or `export`, by default `export`)"
# Specify, if this input is required to define
required : false
# Input's default value
default : " export"
# Second input (option) name
args :
description : " Arguments to pass to the Sapper invocation (by default `--legacy`)"
required : false
default : " --legacy"
# Configures the image (used for the Docker action)
# See docs: [4]
runs :
# Use Docker to run the action
using : " docker"
# The Docker image to use as the container to run the action
# or path to 'Dockerfile' with settings
image : " Dockerfile"
Enter fullscreen mode
Exit fullscreen mode
🔗 文档链接: [1] 、 [2] 、 [3] 、 [4] 。
↑ 目录
├── Dockerfile
是的,正如你已经理解的那样,这是一个常规的 Dockerfile容器设置( 与你在项目中通常使用的设置相同 ):
# Select the Docker image
FROM node:10-alpine
# Copy `entrypoint.sh` file to container's root
COPY entrypoint.sh /
# Set permissions for `entrypoint.sh` file execution
RUN chmod +x /entrypoint.sh
# Define an entrypoint to be called after the container is created
ENTRYPOINT ["/entrypoint.sh"]
Enter fullscreen mode
Exit fullscreen mode
☝️ 提示 :请阅读 此处的 Dockerfile 编写最佳实践 。
↑ 目录
├── entrypoint.sh
入口点将在容器创建后被调用。在我们的例子中,它只是一个简单的 bash脚本。
#!/bin/sh
echo "Running \` npm install \` "
npm install
echo "Build Sapper"
npx sapper $INPUT_BUILD_MODE $INPUT_ARGS
Enter fullscreen mode
Exit fullscreen mode
请注意, 在文件中 $INPUT_BUILD_MODE等同于 ,同样的逻辑也适用于括号 ( )。换句话说,所有允许用户定义的变量都应该定义为 。 inputs.build_modeactions.yml$INPUT_ARGSinputs.args$INPUT_<OPTION_NAME>
条件运算符示例
如果某个变量是特定的,你可以用 boolean变量定义它 action.yml,然后在变量中检查它 entrypoint.sh。
inputs为“部分” 指定一个新的输入 action.yml:
# ...
inputs :
npm_install :
description : ' If set to `true`, `npm install` will be run'
required : false
default : false
# ...
Enter fullscreen mode
Exit fullscreen mode
☝️ 提示 :文件中变量名的大小写并不重要 action.yml,但必须全部是大写字母或全部是小写字母!
现在,只需添加 if...then以下部分 entrypoint.sh:
#!/bin/sh
if [ " $INPUT_NPM_INSTALL " = "true" ] ; then
echo "Running \` npm install \` "
npm install
fi
# ...
Enter fullscreen mode
Exit fullscreen mode
↑ 目录
其他文件和文件夹
.github/workflows/test_build.yml— 测试您的操作(可选)。
.github/gh-cover.png— 预览封面图片,如下所示:
↑ 目录
文档
GitHub Action 的文档和使用示例 README.md至关重要。因为你的 Action 很可能 会被其他开发者使用!创建新 Action 时,务必牢记这一点。
以下是一些 简单的 规则,可以帮助你编写出真正优秀的文档:
一开始就写一份详细的入门指南。
将 所有可选值()格式化为 表格 inputs格式,遵循字符串结构: Input name,,, 。 Is required?Default valueDescription
添加更多示例,特别是如果您的操作可以构建成一系列操作,或者只能与另一个 GitHub 操作结合使用。
为您的 GitHub 仓库添加美观易懂的预览图。这一点非常重要,因为当人们分享您的 GitHub 操作链接时,他们会看到一个吸引人的预览图,这有助于提高转化率!
☝️ 提示 :您可以下载一个特殊的模板(带有安全缩进)来创建封面图片,以便预览您的存储库。
( 高级)添加一个演示仓库,其中包含 如何应用您的 GitHub 操作的 示例 ,就像我为这个示例的操作所做的那样:
↑ 目录
将操作发布到 GitHub Marketplace
好的!👍 我们现在已完全准备好将您的第一个操作发布到 GitHub Actions Marketplace。
前往 仓库中的 Releases页面,并起草新的版本发布。
查看 Publish this Action to the GitHub Marketplace。
GitHub 将检查与该操作相关的所有文件,如果发现任何不符合 最佳实践 或/和 社区协议的 内容,将会发出警告。
添加 Security contact email。
添加 Primary和 Secondary操作类别。
指定标签版本(使用 语义化版本控制 )、标题和描述。
点击 Publish release。
如果一切操作正确,那么您的仓库主页上将会添加一个徽章,邀请您在 GitHub Marketplace 上查看此操作:
↑ 目录
最终结果
事实上,就是这样!😎 您刚刚 创建了您的第一个 GitHub 操作 ,为其编写了优秀的文档,并将其发布到了 Marketplace 上。
🎉 恭喜! 我们成功了!
↑ 目录
💬 问题以加深理解
在什么情况下应该写出每个名称 input?
brandingGitHub Actions在文件部分 使用哪套图标集 action.yml?
在为发布版本选择标签时,最佳实践是什么?
如何在GitHub Actions中定义环境变量 input? 请阅读GitHub Actions 文档 中的这一部分。
↑ 目录
✏️ 独立完成的练习
请尝试用自己的方式重现文章中提到的所有内容。 请在本文评论区分享您的结果!
在 GitHub Marketplace 上更改操作的颜色和图标。
↑ 目录
照片/图像由
GitHub Actions推广网站( 链接 )
GitHub 仓库设置( 链接 )
真正的网络艺术家 actions-sapper资源库( 链接 )
PS
如果你想在这个博客上看到更多类似的文章,请在下方留言并订阅我。谢谢!😻
❗️您可以通过 Boosty平台 支持我,既可以 长期 支持,也可以一次性 支持 。所有收益都将用于 支持 我的开源软件项目,并激励我 为社区 创作新的产品和文章。
当然,您也可以帮助我让开发者的工作变得更好!只需以贡献者的身份加入我的项目即可。很简单!
我最需要你帮助(和点赞)的项目👇
🔥 gowebly :一款新一代 CLI 工具,可轻松使用 Go 在后端创建出色的 Web 应用程序,使用 htmx、hyperscript 或 Alpine.js 以及最流行的 CSS 框架在前端进行开发。
✨ create-go-app :通过运行一条 CLI 命令,创建一个包含 Go 后端、前端和部署自动化功能的新生产就绪项目。
我的其他一些小项目: yatr 、 gosl 、 json2csv 、 csv2api 。
文章来源:https://dev.to/koddr/create-your-first-github-action-in-6-minutes-4lm2