ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【CICID】GitHub-Actions语法 [打印本页]

作者: 风雨同行    时间: 2024-6-16 17:21
标题: 【CICID】GitHub-Actions语法
目次

【CICID】GitHub-Actions语法

1 场景

​                当我们开辟过程中,常常需要提交代码,打包,摆设新代码到对应的环境,整个过程都是人工手动操作,占据开辟人员大量时间,并且很繁琐轻易堕落。所以需要借助一些CI/CD工具让这整个流程自动化,节约生命。
​                一般公司都有自己的CICD工具或平台,但怎样搭建一个属于自己的一套CICD工作流呢?
​                常见的CI/CD工具有Jenkins、GitLab、GitHub Actions等,各有优缺点,自行百度吧~
​                考虑代码都在GitHub托管,也不用额外购买服务器,终极选定GitHub Actions方式
附:推荐参考
2 CI/CD

2.1 什么是CI/CD

2.2 持续集成(CI)

​                持续集成是在提交或归并代码时,自动测试每个更改,并自动启动构建。可以大大减少开辟和运维人员的重复工作,可以在软件开辟生命周期的更早阶段更轻松的发现并修复错误和安全题目。
2.3 持续摆设(CD)

​                持续交付是一种软件开辟实践,一般与持续集成结合使用,以自动化基础设置供应和应用程序发布过程。
​                一旦代码作为 CI 流程的一部分进行了测试和构建,持续交付将在最后阶段接管,以确保可以随时摆设并将摆设所需要的环境打包在一起。
​                通过持续交付,可以随时将构建的软件摆设到生产环境。可以手动触发摆设,也可以进行自动化摆设。
3 介绍

​                GitHub Actions 是一种持续集成和持续交付 (CI/CD) 平台,可用于自动执行天生、测试和摆设管道。 您可以创建工作流程来构建和测试存储库的每个拉取请求,或将归并的拉取请求摆设到生产环境。
3.1 优点

4 工作流常用语法

官网文档:https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions
​        工作流文件使用 YAML 语法,并且必须具有 .yml 或 .yaml 文件扩展名。
4.1 name : 工作流名称
  1. name: 这是工作流名称               
复制代码
4.2 on : 触发工作流时机

4.3 jobs : 作业

工作流运行由一个或多个 jobs 组成,默认环境下并行运行。
​                时机类型:https://docs.github.com/zh/actions/using-workflows/events-that-trigger-workflows
5 环境变量

Github action 定义变量很多方式,很轻易搞混,记录下常用方式
口诀:
5.1 自定义变量

5.1.1 在env中定义变量

定义变量
  1. jobs:
  2.   build:
  3.     runs-on: ubuntu-latest
  4.      env:
  5.       # 端口号
  6.       Port: 8080
  7.       # 云服务地址
  8.       Host_IP: ${{secrets.REMOTE_SERVER01_IP}}  
  9.       # 云服务密码
  10.       Host_PWD: ${{secrets.REMOTE_SERVER01_PWD}}
  11.       # 账号
  12.       Host_Role: root
  13.       # 路径
  14.       Host_Dir: "/cicd"
复制代码
变量取值
  1. # 测试环境变量
  2. - name: Use variable from environment
  3.   run: |
  4.     echo "端口号:$Port"
  5.     echo "服务器地址: $Host_IP"
复制代码
  1. # 上传新的docker镜像
  2. - name: upload new docker image and start-up script
  3.   run:
  4.     sshpass -p ${Host_PWD} scp -r -o StrictHostKeyChecking=no ./${FILE_NAME}.tar ${Host_Role}@${Host_IP}:${Host_Dir}
复制代码
  1. # 加载tar文件,加载docker镜像
  2. - name: Load new docker image
  3.   uses: matheusvanzan/sshpass-action@v2
  4.   with:
  5.     host: ${{env.Host_IP}}
  6.     user: ${{env.Host_Role}}
  7.     pass: ${{env.Host_PWD}}
  8.     run:
  9.       docker load -i ${{env.Host_Dir}}/${{env.FILE_NAME}}.tar
复制代码
5.1.2 Run通过写入到github变量

在run里面定义了变量,需要给后面step使用,一定要写入github环境中echo "key=$xxx" >> "$GITHUB_ENV"
定义
  1. steps:
  2.     # 定义环境变量
  3.     - name: Define environment variables
  4.       run: |
  5.         # 定义全局变量
  6.         PROJECT_NAME=$(basename $GITHUB_REPOSITORY | tr '[:upper:]' '[:lower:]')
  7.         FILE_NAME=${PROJECT_NAME}-backend
  8.         VERSION=0.1
  9.         # 写入环境中
  10.         echo "PROJECT_NAME=$PROJECT_NAME" >> "$GITHUB_ENV"
  11.         echo "FILE_NAME=$FILE_NAME" >> "$GITHUB_ENV"
  12.         echo "VERSION=$VERSION" >> "$GITHUB_ENV"
复制代码
取值
5.2 默认环境变量

环境变量阐明CODESPACE_NAME代码空间的名称 例如,octocat-literate-space-parakeet-mld5CODESPACES在代码空间中始终为 trueGIT_COMMITTER_EMAIL未来 git 提交的“作者”字段的电子邮件。GIT_COMMITTER_NAME未来 git 提交的“提交者”字段的名称。GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN返回 GitHub Codespaces 转发端口的域。 例如 app.github.dev。GITHUB_API_URL返回 API URL。 例如 https://api.github.com。GITHUB_GRAPHQL_URL返回 GraphQL API URL。 例如 https://api.github.com/graphql。GITHUB_REPOSITORY所有者和堆栈名称。 例如,octocat/Hello-World。GITHUB_SERVER_URL返回 GitHub 服务器的 URL。 例如,https://github.com。GITHUB_TOKEN代表代码空间中用户的签名身份验证令牌。 您可以使用它对 GitHub API 进行颠末身份验证的调用。 有关详细信息,请参阅“GitHub Codespaces 中的安全性”。GITHUB_USER启动代码空间的用户的名称。 例如,octocat。
6 常用示例

7 参考资料

​                https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions
遇到题目

本文由博客一文多发平台 OpenWrite 发布!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4