如何在GitHub Actions流水线中添加文件修改与Robot处理步骤?
如何在GitHub Actions pre-release流水线中新增sed注释+Robot推理流程
你需要把新增流程插入到自动发布步骤之后、准备提交文件步骤之前(也就是你标注的PROBABLY HERE SHOULD BE MY CODE (?)区域)。以下是具体修改方案:
新增步骤说明
- 先解压package目录里的
opencs.ttl.gz到临时目录,方便编辑 - 执行sed命令注释指定行(注意把HTML转义的
"换成实际双引号) - 下载Robot工具(如果容器未预装)
- 运行Robot推理命令处理修改后的TTL文件
- 将处理后的文件重新压缩,替换回package目录(确保自动发布和后续pages推送都用处理后的文件)
修改后的完整流水线代码
name: "pre-release" on: push: branches: - main jobs: pre-release: name: "Pre-release" runs-on: "ubuntu-latest" container: ghcr.io/opencs-ontology/ci-worker:main steps: - name: Checkout repository uses: actions/checkout@v2 with: path: opencs - name: "Package ontology" run: python /app/package.py opencs package dev - uses: "marvinpinto/action-automatic-releases@v1.2.1" with: repo_token: "${{ secrets.GITHUB_TOKEN }}" automatic_release_tag: "dev" prerelease: true title: "Development build" files: package/* # 新增的sed注释+Robot推理流程开始 - name: "Create temp directory for processing" run: mkdir -p temp - name: "Extract opencs.ttl from compressed package" run: gzip -cd package/opencs.ttl.gz > temp/opencs.ttl - name: "Comment specified lines with sed" run: | sed -i '15 s/^/ foaf:name "XYZ".] #/' temp/opencs.ttl sed -i '16 s/^/#/' temp/opencs.ttl sed -i '21 s/^/#/' temp/opencs.ttl - name: "Download Robot tool" run: wget https://github.com/ontodev/robot/releases/download/v1.9.0/robot.jar -O temp/robot.jar - name: "Run Robot reasoning" run: java -jar temp/robot.jar reason --reasoner HermiT --axiom-generators "PropertyAssertion" --input temp/opencs.ttl --output temp/output_opencs2.ttl - name: "Replace original package with processed file" run: gzip -c temp/output_opencs2.ttl > package/opencs.ttl.gz # 新增流程结束 - name: "Prepare ontology files for commit" run: | mkdir output_files gzip -cd package/opencs.ttl.gz > output_files/opencs.ttl gzip -cd package/opencs.rdf.gz > output_files/opencs.rdf gzip -cd package/opencs.nt.gz > output_files/opencs.nt - name: "Push the files to the Github Pages repository" uses: "cpina/github-action-push-to-another-repository@main" env: SSH_DEPLOY_KEY: ${{ secrets.SSH_DEPLOY_KEY }} with: source-directory: 'output_files' destination-github-username: 'opencs-ontology' destination-repository-name: 'opencs-ontology.github.io' user-name: ci-worker target-directory: /releases/latest target-branch: main
注意事项
- 如果你的ci-worker容器已经预装了Robot工具,可以去掉
Download Robot tool步骤,直接用robot reason ...命令替代java -jar temp/robot.jar ... - 确认sed命令中的行号(15、16、21)在流水线环境中的文件里是正确的,避免因文件格式差异导致注释错误
- 处理后的文件会替换原package里的opencs.ttl.gz,因此自动发布的dev版本和推送到pages的文件都会是经过处理的版本
内容的提问来源于stack exchange,提问作者Klaudyna Niedzin
相关产品推荐
相关产品推荐

