现在,一些标准 GitHub 操作已存档并且不再受支持,我需要创建一个新版本并使用GitHub 脚本操作上传工件。
注意:我无法使用 GitHub 不支持的操作。
我已经完成了发布并正在工作,但是现在当尝试上传发布工件时,我找不到上传发布内容(这是一个 tarball)的方法。
用于上传发布资产的 API 端点的文档建议数据应该是调用输入的一部分,而不是引用文件。
如何将文件的内容获取到下面的数据参数中:
- name: Upload Assets
uses: "actions/github-script@v6"
with:
script: |
try {
return await github.rest.repos.uploadReleaseAsset({
owner: context.repo.owner,
repo: context.repo.repo,
name: "release.tar.xz",
release_id: ${{ fromJSON(steps.deploy.outputs.result).data.id }}
data:
})
} catch (error) {
core.setFailed(error.message);
}
Run Code Online (Sandbox Code Playgroud) 我在一个在Linux上运行的库中有一个状态机实现.程序的主循环只是等待,直到有足够的时间来要求下一次执行状态机.
在他们的时刻,我有一个类似于以下伪代码的循环:
while( 1 )
{
while( StateTicks() > 0 )
StateMachine();
Pause( 10ms );
}
Run Code Online (Sandbox Code Playgroud)
StateTicks可能每隔50ms返回一次.我使Pause()越短,我在程序中使用的CPU时间就越多.
有没有更好的方法来测试一段时间的传递,可能是基于信号?我宁愿停止执行,直到StateTicks()> 0而不是完全调用Pause().
在状态机实现的底层,StateTicks使用clock_gettime(PFT_CLOCK ...),效果很好.我很想保持这种计时,因为如果一个StateMachine()调用花费的时间超过状态机,那么这个实现就会赶上.
暂停使用nanosleep来实现合理准确的暂停时间.
也许这已经是最好的方式,但它似乎并不特别优雅.