Overview
创建自己的操作, 发布到 GitHub 社区 marketplace 中
imgs20210708183340.pngCreate Marketplace apps
创建项目 iOS-helper-action
mkdir iOS-helper-action
创建 action metadata file
action.yml
name: 'iOS Helper Action'
description: 'Tool for iOS developers to automate tedious tasks like swiftlint, pod-lib-lint, install, run, test.'
inputs:
action: # action
description: 'automate tedious tasks'
required: true
runs:
using: "node12"
main: "dist/index.js"
提交、标记和推送操作到 GitHub
编写 index.js
echo 'node_modules/' > .gitignore
npm install @actions/core
npm install @actions/exec
vi index.js
index.js 只负责接收参数, 并转发给 build.sh
const core = require("@actions/core");
const exec = require("@actions/exec");
async function run() {
try {
// Validate action
if (
!core.getInput("action")
) {
throw new Error("action missing or in the wrong format.");
}
const action = core.getInput("action");
console.log(`Action: ${action}`);
// Execute build.sh
await exec.exec(`bash ${__dirname}/../build.sh ${action}`);
} catch (error) {
core.setFailed(error.message);
}
}
run();
build.sh 中完成具体的操作
vi build.sh
#!/bin/bash
if !(which xchelper >/dev/null); then
echo "Installing xchelper"
sh -c "$(curl -fsSL https://raw.githubusercontent.com/BlueIntent/xchelper/main/scripts/install.sh)"
echo "Done!"
fi
xchelper $1
编译 index.js
npm i -g @vercel/ncc --verbose
ncc build index.js --license licenses.txt
添加 tag, 并提交
git tag v0.0.1
git push --tags
测试
提交后, 修改 workfile 引用, 即可
- uses: BlueIntent/iOS-helper-action@v0.0.1
with:
action: 'swiftlint'
发布
测试通过后, 可发布到 Marketplace.
在自己 github 上可看到
imgs20210708181732.png imgs20210708182602.png
iOS Helper Action 发布成功
Usage
- name: swiftlint
uses: BlueIntent/iOS-helper-action@v0.0.1
with:
action: 'swiftlint'
可查看示例 iOS-test-with-xchelper-action.yml, 直接编辑提PR, 可直接测试.
网友评论