Action 根底
罕用性能
实际
一 每天发送天气邮件
二 打包构建 & 文件上传到服务器
场景:在github上提交代码之后主动打包部署到近程服务器(腾讯云/阿里云等)
实现:
# workflow名name: deploy to tencentCloudon: # 此CI/CD触发时的事件 push: # 在代码提交时主动触发 branches: - main# 一个 CI/CD 的工作流有许多 jobs 组成,比方最典型的 job 是 lint,test,build。jobs: build: # 构建job runs-on: ubuntu-latest # 跑workflow的服务器零碎 steps: # job的一系列动作 # 切换分支获取源码 - name: Checkout # step的名称,将会在 github action 的控制台中显示 # 抉择一个action,能够了解为若干 steps.run,有利于代码复用 uses: actions/checkout@v2 # 装置应用 node:14 - name: use Node.js 14 uses: actions/setup-node@v1 with: node-version: 14 # 运行命令,npm install && npm run build - name: npm install and build run: | npm install npm run build env: CI: true # 部署到腾讯云服务器 - name: 上传到腾讯云 uses: easingthemes/ssh-deploy@main env: # 本地.ssh文件下的私钥id_rsa,存在secrets的TOKEN中 SSH_PRIVATE_KEY: ${{ secrets.TOKEN }} # 复制操作的参数。"-avzr --delete"象征部署时清空服务器目标目录下的文件 ARGS: "-avzr --delete" # 源目录,绝对于仓库内容根目录的门路 SOURCE: "dist/" # 近程服务器地址 REMOTE_HOST: ${{ secrets.REMOTE_HOST }} # 近程服务器用户名 REMOTE_USER: "root" # 目标目录(近程服务器门路) TARGET: "/data/www"
阐明:
- 在 main 分支上提交代码的时候会触发 workflow
- 应用node v14 下打包构建,待实现之后将打包产物上传到近程服务器
三 push 之后主动 release
场景:Release 之后,能够应用jsDelivr 实现收费CDN的性能。 能够参考这里:收费CDN:jsDelivr+Github 应用办法
实现:
name: release CI# Controls when the workflow will runon: # Triggers the workflow on push or pull request events but only for the main branch push: branches: - main# A workflow run is made up of one or more jobs that can run sequentially or in paralleljobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - name: Checkout uses: actions/checkout@v2 # 读取 package.json 文件内容 - name: read version id: version uses: ashley-taylor/read-json-property-action@v1.0 with: path: ./package.json property: version # 执行 Release - name: Release uses: actions/create-release@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: v${{steps.version.outputs.value}} release_name: v${{steps.version.outputs.value}} body: Release v${{steps.version.outputs.value}} draft: false prerelease: false
阐明:
- 在 main 分支上提交代码的时候会触发 workflow
- 每次部署都是正式版本