Yml
name: deploy
on: [release]
jobs:
build:
name: building
runs-on: ubuntu-16.04
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2-beta
with:
node-version: "14"
- run: npm install
- run: npm run build
- uses: appleboy/scp-action@master
with:
host: ${{ secrets.REMOTE_HOST }}
username: ${{ secrets.REMOTE_USER }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
source: ".nuxt"
target: ${{ secrets.REMOTE_TARGET}}
- uses: docker://evaneos/ssh-action:0.1.0
with:
host: ${{ secrets.REMOTE_HOST }}
private-key: ${{ secrets.SERVER_SSH_KEY }}
user: ${{ secrets.REMOTE_USER }}
port: ${{ secrets.PORT }}
password: ${{ secrets.PASSWORD }}
commands: ~/build.sh
如何工作?
on: [release]
当项目 release 了新版本触发 action
name: building
runs-on: ubuntu-16.04
名称是 Action Page 用来显示用的,runs-on 表示 job 在什么样子的系统上运行
steps:
- uses: actions/checkout@v2
checkout code 的 action
一个 job 的具体工作,uses 饮用别人写好的 action,具体 action 作用可以在 https://github.com/actions/ 搜罗,比如我需要 scp 文件那就搜 scp,然后根据 readme 进行配置即可
- uses: actions/setup-node@v2-beta
with:
node-version: "14"
- run: npm install
- run: npm run build
nodejs 相关的 action,由于项目类型为 nodejs 所以用这个,with 是传入一些变量,两个 run 安装依赖并打包
- uses: appleboy/scp-action@master
with:
host: ${{ secrets.REMOTE_HOST }}
username: ${{ secrets.REMOTE_USER }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
source: ".nuxt"
target: ${{ secrets.REMOTE_TARGET}}
由于代码开源所以 host,username,password 这种数据不可能明文写出,所以需要从项目配置里取
这个 action 主要是将第一步打包好的静态文件 scp 至我们的服务器上待用
- uses: docker://evaneos/ssh-action:0.1.0
with:
host: ${{ secrets.REMOTE_HOST }}
private-key: ${{ secrets.SERVER_SSH_KEY }}
user: ${{ secrets.REMOTE_USER }}
port: ${{ secrets.PORT }}
password: ${{ secrets.PASSWORD }}
commands: ~/build.sh
这个 action 用来 ssh 到我们的服务器执行 commands,由于静态文件已经放入服务器,build.sh 我们只要将文件放到合适的地方重启服务就好了,至于 ssh 的公钥和私钥请自行 google
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于