GitHub Actions
家里的老电脑还是windows7 系统,只能安装gnu版本的rust,安装步骤还挺复杂,使用rust playground无法编译出二进制文件出来,只是临时学习,用github的持续集成服务应该够用了。
在网上看到两个教程
使用 GitHub Actions 部署跨平台 Rust 二进制文件 - MyEdgeTech
Rust Cross-Compilation With GitHub Actions (reemus.dev)
Rust编译
建立一个rust模版工程 memorywalker/memorywork (github.com)
在工程的Actions页面下新建一个工作流,修改文件名为rust.yml
在给工程打tag的时候触发自动编译版本
1
2
3
4
5on:
push:
tags:
# Regex for a version number such as 0.2.1
- "[0-9]+.[0-9]+.[0-9]+"一个workflow是一个yml文件,由多个job组成,每个job有多个step,每个step可以有不同的action
action可以作为一个公共行为的定义,uses表示使用已经定义好的action,github上提供了action的marketplace
整体的流程和本地开发一样:下载代码,配置编译环境,编译,测试,打包。
普通的rust编译可以直接使用cargo命令,多平台的交叉编译可以使用
Cross
这个action实际使用Cross总会出现
Error: The process 'cross' failed with exit code 125
,所以这里直接使用了Cargo命令,也能节省一些时间
在执行git tag命令后,github会自动执行workflow目录下的rust.yml
中的jobs
1 | git tag 0.0.1 |
workflow执行完成后在github的 Releases 下就有如下程序包
代码rust.yml
执行过程如下,其中每一行对应了一个step的名字,由于没有使用Cross,所以安装cross没有执行。
1 | name: Deploy |