Skip to content

Commit 7a2366b

Browse files
committed
0.0.4
* 一些优化 * 更多范例详见`example`目录 * `run`函数默认注入父进程的`env`环境变量 * 统一Step和Task的`run`方法,支持直接运行`Step.run`和`Task.run`
1 parent a9469a5 commit 7a2366b

File tree

11 files changed

+79
-15
lines changed

11 files changed

+79
-15
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
# CHANGELOG
22

33

4+
## [0.0.4] - 2025-06-27
5+
6+
* 一些优化
7+
* 更多范例详见`example`目录
8+
* `run`函数默认注入父进程的`env`环境变量
9+
* 统一Step和Task的`run`方法,支持直接运行`Step.run``Task.run`
10+
11+
412
## [0.0.3] - 2025-06-26
513

614
* 日志染色,高亮关键信息,更容易区分日志信息
715
* 优化部分代码,提高可读性和可维护性
816
* Step添加`skip`属性,支持跳过执行,默认为`false`
917

18+
1019
## [0.0.2] - 2025-06-26
1120

1221
* 一些优化

README.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Airport
22

3-
使用`ts`编写`Shell`管道
3+
使用`ts`编写流水线
44

55
```bash
66
bun add airport2
@@ -32,7 +32,7 @@ bun airport.ts // 也可以将命令添加到package.json中
3232

3333
## Example
3434

35-
1、常规构建发布
35+
**常规构建发布范例**
3636

3737
```ts
3838
import { name, version } from './package.json'
@@ -74,14 +74,13 @@ const deployTask = new Task({
7474
PipeLine.run([deployTask])
7575
```
7676

77-
docker构建发布:
77+
**docker构建范例**
7878

7979
```ts
8080
import { name, version } from './package.json'
8181
import { PipeLine, Task } from 'airport2'
8282

83-
// 创建部署任务
84-
const deployTask = new Task({
83+
const dockerTask = new Task({
8584
name: '部署docker应用',
8685
steps: [
8786
{
@@ -95,5 +94,5 @@ const deployTask = new Task({
9594
],
9695
})
9796

98-
PipeLine.run([deployTask])
97+
dockerTask.run()
9998
```

airport-docker.ts renamed to example/airport-docker.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { name, version } from './package.json'
2-
import { PipeLine, Task } from './src/airport'
1+
import { name, version } from '../package.json'
2+
import { PipeLine, Task } from '../src/airport'
33

44
// 创建部署任务
55
const deployTask = new Task({

airport.ts renamed to example/airport.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { join } from 'path'
2-
import { name, version } from './package.json'
3-
import { PipeLine, Task, remote, exec, logError } from './src/airport'
2+
import { name, version } from '../package.json'
3+
import { PipeLine, Task, remote, logError } from '../src/airport'
44

55
const file = [name, version].join('-') + '.tgz'
66

example/airstep.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { Step } from '../src/airport'
2+
3+
// 创建部署任务
4+
const step = new Step({
5+
name: '构建项目',
6+
run: [
7+
'mkdir -p .cache',
8+
'mv `npm pack` .cache/',
9+
],
10+
})
11+
12+
step.run()

example/airtask.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { join } from 'path'
2+
import { name, version } from '../package.json'
3+
import { Task, remote, logError } from '../src/airport'
4+
5+
const file = [name, version].join('-') + '.tgz'
6+
7+
// 创建部署任务
8+
const deployTask = new Task({
9+
name: '部署应用',
10+
steps: [
11+
{
12+
name: '构建项目',
13+
run: [
14+
'mkdir -p .cache',
15+
'mv `npm pack` .cache/',
16+
],
17+
},
18+
{
19+
name: '发布到远程服务器',
20+
async run() {
21+
const ssh = remote('gavin@192.168.5.121')
22+
const dir = (path?: string) => join('/home/gavin/test', path ?? '')
23+
try {
24+
await ssh.run('rm -f', dir('latest'))
25+
await ssh.run('mkdir -p', dir(version))
26+
await ssh.scp(`.cache/${file}`, dir())
27+
await ssh.run('tar -zxvf', dir(file), '-C', dir(version))
28+
await ssh.run('ln -s', dir(version), dir('latest'))
29+
}
30+
catch (e) {
31+
logError(e)
32+
}
33+
},
34+
},
35+
],
36+
})
37+
38+
deployTask.run()

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "airport2",
3-
"version": "0.0.3",
3+
"version": "0.0.4",
44
"main": "src/index.ts",
55
"type": "module",
66
"scripts": {

src/airport/air/pipeline.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export class PipeLine {
2020
log(purple('Pipe'), gray('Start'), '-------------------------')
2121

2222
for (const task of this.tasks) {
23-
await task.execute()
23+
await task.run()
2424
}
2525

2626
log(`------------- ${purple("Pipe")} ${gray('End')} -------------`)

src/airport/air/step.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export class Step {
1717
/**
1818
* 执行步骤
1919
*/
20-
async execute(): Promise<any> {
20+
async run(): Promise<any> {
2121
if (typeof this.step.run === 'string') {
2222
return this.runString()
2323
} else if (Array.isArray(this.step.run)) {

src/airport/air/task.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ export class Task {
1616
/**
1717
* 执行任务中的所有步骤
1818
*/
19-
async execute(test: boolean = false) {
19+
async run(test: boolean = false) {
2020
const steps = this.steps.map((step) => new Step(step, test))
2121

2222
log(purple('Task'), gray('Start'), blue(this.name))
2323

2424
for (const step of steps) {
2525
if (!step.skip) {
2626
log(purple('Step'), gray('Start'), blue(step.name))
27-
step.skip || (await step.execute())
27+
step.skip || (await step.run())
2828
log(purple('Step'), gray('End'), blue(step.name))
2929
}
3030
}

0 commit comments

Comments
 (0)