fix: Make sure GitHub job pushes latest image on scheduled job
This commit is contained in:
parent
f13b67637b
commit
04972416cb
11 changed files with 231 additions and 179 deletions
|
|
@ -1,15 +1,16 @@
|
|||
use std::env;
|
||||
|
||||
use blue_build_utils::{
|
||||
constants::{
|
||||
CI_COMMIT_REF_NAME, CI_COMMIT_SHORT_SHA, CI_DEFAULT_BRANCH, CI_MERGE_REQUEST_IID,
|
||||
CI_PIPELINE_SOURCE, CI_PROJECT_NAME, CI_PROJECT_NAMESPACE, CI_PROJECT_URL, CI_REGISTRY,
|
||||
CI_SERVER_HOST, CI_SERVER_PROTOCOL,
|
||||
},
|
||||
get_env_var,
|
||||
use blue_build_utils::constants::{
|
||||
CI_COMMIT_REF_NAME, CI_COMMIT_SHORT_SHA, CI_DEFAULT_BRANCH, CI_MERGE_REQUEST_IID,
|
||||
CI_PIPELINE_SOURCE, CI_PROJECT_NAME, CI_PROJECT_NAMESPACE, CI_PROJECT_URL, CI_REGISTRY,
|
||||
CI_SERVER_HOST, CI_SERVER_PROTOCOL,
|
||||
};
|
||||
use log::{debug, trace};
|
||||
|
||||
#[cfg(not(test))]
|
||||
use blue_build_utils::get_env_var;
|
||||
|
||||
#[cfg(test)]
|
||||
use blue_build_utils::test_utils::get_env_var;
|
||||
|
||||
use crate::drivers::Driver;
|
||||
|
||||
use super::CiDriver;
|
||||
|
|
@ -18,8 +19,8 @@ pub struct GitlabDriver;
|
|||
|
||||
impl CiDriver for GitlabDriver {
|
||||
fn on_default_branch() -> bool {
|
||||
env::var(CI_DEFAULT_BRANCH).is_ok_and(|default_branch| {
|
||||
env::var(CI_COMMIT_REF_NAME).is_ok_and(|branch| default_branch == branch)
|
||||
get_env_var(CI_DEFAULT_BRANCH).is_ok_and(|default_branch| {
|
||||
get_env_var(CI_COMMIT_REF_NAME).is_ok_and(|branch| default_branch == branch)
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -57,7 +58,7 @@ impl CiDriver for GitlabDriver {
|
|||
tags.push("latest".into());
|
||||
tags.push(timestamp);
|
||||
}
|
||||
} else if let Ok(mr_iid) = env::var(CI_MERGE_REQUEST_IID) {
|
||||
} else if let Ok(mr_iid) = get_env_var(CI_MERGE_REQUEST_IID) {
|
||||
trace!("{CI_MERGE_REQUEST_IID}={mr_iid}");
|
||||
|
||||
let pipeline_source = get_env_var(CI_PIPELINE_SOURCE)?;
|
||||
|
|
@ -105,110 +106,80 @@ impl CiDriver for GitlabDriver {
|
|||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use std::env;
|
||||
|
||||
use blue_build_utils::constants::{
|
||||
CI_COMMIT_REF_NAME, CI_COMMIT_SHORT_SHA, CI_DEFAULT_BRANCH, CI_MERGE_REQUEST_IID,
|
||||
CI_PIPELINE_SOURCE, CI_PROJECT_NAME, CI_PROJECT_NAMESPACE, CI_REGISTRY, CI_SERVER_HOST,
|
||||
CI_SERVER_PROTOCOL,
|
||||
use blue_build_utils::{
|
||||
constants::{
|
||||
CI_COMMIT_REF_NAME, CI_COMMIT_SHORT_SHA, CI_DEFAULT_BRANCH, CI_MERGE_REQUEST_IID,
|
||||
CI_PIPELINE_SOURCE, CI_PROJECT_NAME, CI_PROJECT_NAMESPACE, CI_REGISTRY, CI_SERVER_HOST,
|
||||
CI_SERVER_PROTOCOL,
|
||||
},
|
||||
test_utils::set_env_var,
|
||||
};
|
||||
|
||||
use crate::{
|
||||
drivers::CiDriver,
|
||||
test::{create_test_recipe, BB_UNIT_TEST_MOCK_GET_OS_VERSION, ENV_LOCK},
|
||||
};
|
||||
use crate::{drivers::CiDriver, test::create_test_recipe};
|
||||
|
||||
use super::GitlabDriver;
|
||||
|
||||
fn setup_default_branch() {
|
||||
setup();
|
||||
env::set_var(CI_COMMIT_REF_NAME, "main");
|
||||
set_env_var(CI_COMMIT_REF_NAME, "main");
|
||||
}
|
||||
|
||||
fn setup_mr_branch() {
|
||||
setup();
|
||||
env::set_var(CI_MERGE_REQUEST_IID, "12");
|
||||
env::set_var(CI_PIPELINE_SOURCE, "merge_request_event");
|
||||
env::set_var(CI_COMMIT_REF_NAME, "test");
|
||||
set_env_var(CI_MERGE_REQUEST_IID, "12");
|
||||
set_env_var(CI_PIPELINE_SOURCE, "merge_request_event");
|
||||
set_env_var(CI_COMMIT_REF_NAME, "test");
|
||||
}
|
||||
|
||||
fn setup_branch() {
|
||||
setup();
|
||||
env::set_var(CI_COMMIT_REF_NAME, "test");
|
||||
set_env_var(CI_COMMIT_REF_NAME, "test");
|
||||
}
|
||||
|
||||
fn setup() {
|
||||
env::set_var(CI_DEFAULT_BRANCH, "main");
|
||||
env::set_var(CI_COMMIT_SHORT_SHA, "1234567");
|
||||
env::set_var(CI_REGISTRY, "registry.example.com");
|
||||
env::set_var(CI_PROJECT_NAMESPACE, "test-project");
|
||||
env::set_var(CI_PROJECT_NAME, "test");
|
||||
env::set_var(CI_SERVER_PROTOCOL, "https");
|
||||
env::set_var(CI_SERVER_HOST, "gitlab.example.com");
|
||||
env::set_var(BB_UNIT_TEST_MOCK_GET_OS_VERSION, "");
|
||||
}
|
||||
|
||||
fn teardown() {
|
||||
env::remove_var(CI_COMMIT_REF_NAME);
|
||||
env::remove_var(CI_MERGE_REQUEST_IID);
|
||||
env::remove_var(CI_PIPELINE_SOURCE);
|
||||
env::remove_var(CI_DEFAULT_BRANCH);
|
||||
env::remove_var(CI_COMMIT_SHORT_SHA);
|
||||
env::remove_var(CI_REGISTRY);
|
||||
env::remove_var(CI_PROJECT_NAMESPACE);
|
||||
env::remove_var(CI_PROJECT_NAME);
|
||||
env::remove_var(CI_SERVER_PROTOCOL);
|
||||
env::remove_var(CI_SERVER_HOST);
|
||||
env::remove_var(BB_UNIT_TEST_MOCK_GET_OS_VERSION);
|
||||
set_env_var(CI_DEFAULT_BRANCH, "main");
|
||||
set_env_var(CI_COMMIT_SHORT_SHA, "1234567");
|
||||
set_env_var(CI_REGISTRY, "registry.example.com");
|
||||
set_env_var(CI_PROJECT_NAMESPACE, "test-project");
|
||||
set_env_var(CI_PROJECT_NAME, "test");
|
||||
set_env_var(CI_SERVER_PROTOCOL, "https");
|
||||
set_env_var(CI_SERVER_HOST, "gitlab.example.com");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn get_registry() {
|
||||
let _env = ENV_LOCK.lock().unwrap();
|
||||
|
||||
setup();
|
||||
|
||||
let registry = GitlabDriver::get_registry().unwrap();
|
||||
|
||||
assert_eq!(registry, "registry.example.com/test-project/test");
|
||||
teardown();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn on_default_branch_true() {
|
||||
let _env = ENV_LOCK.lock().unwrap();
|
||||
|
||||
setup_default_branch();
|
||||
|
||||
assert!(GitlabDriver::on_default_branch());
|
||||
teardown();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn on_default_branch_false() {
|
||||
let _env = ENV_LOCK.lock().unwrap();
|
||||
|
||||
setup_branch();
|
||||
|
||||
assert!(!GitlabDriver::on_default_branch());
|
||||
teardown();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn get_repo_url() {
|
||||
let _env = ENV_LOCK.lock().unwrap();
|
||||
|
||||
setup();
|
||||
|
||||
let url = GitlabDriver::get_repo_url().unwrap();
|
||||
|
||||
assert_eq!(url, "https://gitlab.example.com/test-project/test");
|
||||
teardown();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn generate_tags_default_branch() {
|
||||
let _env = ENV_LOCK.lock().unwrap();
|
||||
let timestamp = blue_build_utils::get_tag_timestamp();
|
||||
|
||||
setup_default_branch();
|
||||
|
|
@ -226,13 +197,10 @@ mod test {
|
|||
expected_tags.sort();
|
||||
|
||||
assert_eq!(tags, expected_tags);
|
||||
|
||||
teardown();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn generate_tags_default_branch_alt_tags() {
|
||||
let _env = ENV_LOCK.lock().unwrap();
|
||||
let timestamp = blue_build_utils::get_tag_timestamp();
|
||||
|
||||
setup_default_branch();
|
||||
|
|
@ -253,14 +221,10 @@ mod test {
|
|||
expected_tags.sort();
|
||||
|
||||
assert_eq!(tags, expected_tags);
|
||||
|
||||
teardown();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn generate_tags_mr_branch() {
|
||||
let _env = ENV_LOCK.lock().unwrap();
|
||||
|
||||
setup_mr_branch();
|
||||
|
||||
let mut tags = GitlabDriver::generate_tags(&create_test_recipe()).unwrap();
|
||||
|
|
@ -270,14 +234,10 @@ mod test {
|
|||
expected_tags.sort();
|
||||
|
||||
assert_eq!(tags, expected_tags);
|
||||
|
||||
teardown();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn generate_tags_branch() {
|
||||
let _env = ENV_LOCK.lock().unwrap();
|
||||
|
||||
setup_branch();
|
||||
|
||||
let mut tags = GitlabDriver::generate_tags(&create_test_recipe()).unwrap();
|
||||
|
|
@ -287,7 +247,5 @@ mod test {
|
|||
expected_tags.sort();
|
||||
|
||||
assert_eq!(tags, expected_tags);
|
||||
|
||||
teardown();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue