#ci #fail #temporary #true #macro #script #detected

failonci

当检测到已知的CI服务器时,中止编译的脚本

6个版本

0.1.7 2021年2月5日
0.1.6 2021年2月5日

#696 in 过程宏

自定义许可

7KB
68

fail_on_ci

你是否曾经编写过临时测试代码,忘记删除它并将其推送到生产环境?

此crate为你提供了一个宏,当检测到已知的CI服务器时,它会失败。只需将你的测试代码包裹在其中,它就只会本地编译。

工作原理

大多数CI服务器定义了特定的环境变量,可以用来检测进程是否在CI服务器上运行。

以下是应该被检测到的CI服务器列表。

或者,你可以将环境变量 FAIL_ON_CI 设置为 true。这可以用于不支持的服务器。

检测到的CI服务器

  • AppVeyor
  • AwsCodeBuild
  • AzurePipelines
  • Bamboo
  • BitbucketPipelines
  • Buddy
  • Codeship
  • CircleCI
  • Drone
  • Github Actions
  • Gitlab CI
  • Jenkins
  • TeamCity
  • Travis
  • Wercker

示例

用于表达式

use fail_on_ci::*;

// Struct used for local test
#[derive(FailOnCi)]
struct TestStruct {}

// alias for FailOnCi
#[derive(TempStruct)]
struct TestStruct2 {}

#[temp_function]
fn test_function() -> bool {
    true 
}

fn main() {
    // insert arbitrary code
    fail_on_ci!{
        println!("This doesn't compile on CI!");
    }
    
    // alias for fail_on_ci
    temp_code!{
        println!("This doesn't compile on CI!");
    }
    
    // returns true
    if temp_true!() {
        println!("Hello, world!");
    }
    
    // returns false
    if temp_false!() {
        println!("Hello, world!");
    }
}

无运行时依赖