Expand description
§gha-main
§Write GitHub Actions in Rust!
This crate provides two convenience macros to make it easier to write GitHub Actions in Rust.
How to use:
- Annotate your
main()function with#[gha_main]. - Add return type
GitHubActionResult. - Use the
?operator to propagate errors. - Return ouputs (anything that implements
Display) to the action runner with thegha_output!()macro so they can be used in later workflow steps or other actions.
Example usage:
use std::env;
use gha_main::{gha_main, gha_output, GitHubActionResult};
#[gha_main]
fn main() -> GitHubActionResult {
let args: Vec<String> = env::args().collect();
let input = &args[1];
let parsed_u32 = input.parse::<u32>()?;
gha_output!(parsed_u32);
Ok(())
}Values wrapped in gha_output!() are returned to the runner with the output name equal to the Rust variable name. In the example above, if the action is called with input "5", the parsed_u32 output will be set to 5.
Errors propagated via the ? operator are returned to the runner as the error output. The error values are formatted using anyhow::Error’s Display implementation.
§Example actions
The /example-actions folder contains several examples that demonstrate how GitHub Actions can be written in Rust.
License: Apache-2.0 OR MIT
Macros§
- gha_
output - Macro to set outputs for the action
Type Aliases§
- GitHub
Action Result - Return type for
main()
Attribute Macros§
- gha_
main - Add this macro to your
main()function to return outputs and errors to the action runner