From 9a80ae63845f39ef498eb5d07699f2aaf438f290 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Mar 2026 00:28:45 +0000 Subject: [PATCH 1/3] Initial plan From b9b7cba547225c7872a8720004ca4ee65d82bd03 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Mar 2026 00:36:08 +0000 Subject: [PATCH 2/3] Adopt TOKEN_* env names and split CI integration jobs by provider tier Co-authored-by: mbe24 <7420624+mbe24@users.noreply.github.com> --- .github/workflows/ci.yml | 112 +++++++++++++++++++++++-- CONTRIBUTING.md | 8 +- docs/providers/bitbucket-cloud.md | 2 +- docs/providers/bitbucket-datacenter.md | 2 +- docs/providers/github.md | 2 +- docs/providers/gitlab.md | 2 +- docs/providers/jira.md | 2 +- docs/reference/config-keys.md | 8 +- src/cmd/config/store.rs | 4 +- src/config.rs | 46 ++++++++-- src/source/bitbucket/shared/http.rs | 2 +- src/source/github/api.rs | 2 +- src/source/gitlab/api.rs | 4 +- src/source/jira/api.rs | 4 +- tests/integration.rs | 61 ++++++++------ 15 files changed, 206 insertions(+), 55 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4e9bd91..e3861e1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,11 +40,113 @@ jobs: - name: Unit tests run: cargo test --features telemetry-otel - - name: Integration tests - if: env.GITHUB_TOKEN != '' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: cargo test --features telemetry-otel -- --include-ignored --skip jira_ --skip bitbucket_ + integration_github: + name: Integration (GitHub, blocking) + needs: test + runs-on: ubuntu-latest + if: ${{ secrets.GITHUB_TOKEN != '' }} + env: + TOKEN_GITHUB: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v6 + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Cache cargo registry + uses: actions/cache@v5 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + target + key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-cargo- + + - name: Integration tests (GitHub) + run: cargo test --features telemetry-otel --test integration -- --include-ignored github_ + + integration_gitlab: + name: Integration (GitLab, blocking) + needs: test + runs-on: ubuntu-latest + if: ${{ secrets.GITLAB_TOKEN != '' }} + env: + TOKEN_GITLAB: ${{ secrets.GITLAB_TOKEN }} + steps: + - uses: actions/checkout@v6 + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Cache cargo registry + uses: actions/cache@v5 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + target + key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-cargo- + + - name: Integration tests (GitLab) + run: cargo test --features telemetry-otel --test integration -- --include-ignored gitlab_ + + integration_jira: + name: Integration (Jira, advisory) + needs: test + runs-on: ubuntu-latest + continue-on-error: true + if: ${{ secrets.JIRA_TOKEN != '' }} + env: + TOKEN_JIRA: ${{ secrets.JIRA_TOKEN }} + steps: + - uses: actions/checkout@v6 + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Cache cargo registry + uses: actions/cache@v5 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + target + key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-cargo- + + - name: Integration tests (Jira) + run: cargo test --features telemetry-otel --test integration -- --include-ignored jira_ + + integration_bitbucket: + name: Integration (Bitbucket, advisory) + needs: test + runs-on: ubuntu-latest + continue-on-error: true + if: ${{ secrets.BITBUCKET_TOKEN != '' && secrets.BITBUCKET_REPO != '' && secrets.BITBUCKET_PR_ID != '' }} + env: + TOKEN_BITBUCKET: ${{ secrets.BITBUCKET_TOKEN }} + BITBUCKET_REPO: ${{ secrets.BITBUCKET_REPO }} + BITBUCKET_PR_ID: ${{ secrets.BITBUCKET_PR_ID }} + steps: + - uses: actions/checkout@v6 + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Cache cargo registry + uses: actions/cache@v5 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + target + key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-cargo- + + - name: Integration tests (Bitbucket) + run: cargo test --features telemetry-otel --test integration -- --include-ignored bitbucket_ docs: name: Docs diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2be79f3..c54628c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,7 +17,13 @@ cargo test Ignored integration tests (live APIs): ```bash -cargo test -- --include-ignored --skip jira_ +# blocking provider slices +cargo test --test integration -- --include-ignored github_ +cargo test --test integration -- --include-ignored gitlab_ + +# advisory provider slices +cargo test --test integration -- --include-ignored jira_ +cargo test --test integration -- --include-ignored bitbucket_ ``` ## Local Quality Gates diff --git a/docs/providers/bitbucket-cloud.md b/docs/providers/bitbucket-cloud.md index e7bf1b9..3b0a4e5 100644 --- a/docs/providers/bitbucket-cloud.md +++ b/docs/providers/bitbucket-cloud.md @@ -10,7 +10,7 @@ - `platform = "bitbucket"` - `deployment = "cloud"` - `repo` format: `workspace/repo_slug` -- Token env var: `BITBUCKET_TOKEN` +- Token env var: `TOKEN_BITBUCKET` (legacy fallback: `BITBUCKET_TOKEN`) ## Examples diff --git a/docs/providers/bitbucket-datacenter.md b/docs/providers/bitbucket-datacenter.md index 3114b7f..555db50 100644 --- a/docs/providers/bitbucket-datacenter.md +++ b/docs/providers/bitbucket-datacenter.md @@ -11,7 +11,7 @@ - `deployment = "selfhosted"` - `url` must be provided. - `repo` format: `project/repo_slug` -- Token env var: `BITBUCKET_TOKEN` +- Token env var: `TOKEN_BITBUCKET` (legacy fallback: `BITBUCKET_TOKEN`) ## Examples diff --git a/docs/providers/github.md b/docs/providers/github.md index c9ebdae..62db8a3 100644 --- a/docs/providers/github.md +++ b/docs/providers/github.md @@ -8,7 +8,7 @@ ## Required Values - `repo` format: `owner/repo` -- Token env var: `GITHUB_TOKEN` +- Token env var: `TOKEN_GITHUB` (legacy fallback: `GITHUB_TOKEN`) ## Examples diff --git a/docs/providers/gitlab.md b/docs/providers/gitlab.md index 1636bb6..15124eb 100644 --- a/docs/providers/gitlab.md +++ b/docs/providers/gitlab.md @@ -9,7 +9,7 @@ - `repo` format: `group/project` - Nested groups are supported (for example `group/subgroup/project`). -- Token env var: `GITLAB_TOKEN` +- Token env var: `TOKEN_GITLAB` (legacy fallback: `GITLAB_TOKEN`) ## Examples diff --git a/docs/providers/jira.md b/docs/providers/jira.md index 1afd740..93e24e7 100644 --- a/docs/providers/jira.md +++ b/docs/providers/jira.md @@ -9,7 +9,7 @@ ## Required Values - `repo` is Jira project scope for search (for example `CPQ`). -- Token env var: `JIRA_TOKEN` +- Token env var: `TOKEN_JIRA` (legacy fallback: `JIRA_TOKEN`) - Optional account email env var: `JIRA_ACCOUNT_EMAIL` ## Examples diff --git a/docs/reference/config-keys.md b/docs/reference/config-keys.md index 692b9dd..541cc89 100644 --- a/docs/reference/config-keys.md +++ b/docs/reference/config-keys.md @@ -31,11 +31,11 @@ Use `instances..`: ## Environment Variables -- `GITHUB_TOKEN` -- `GITLAB_TOKEN` -- `JIRA_TOKEN` +- `TOKEN_GITHUB` (legacy fallback: `GITHUB_TOKEN`) +- `TOKEN_GITLAB` (legacy fallback: `GITLAB_TOKEN`) +- `TOKEN_JIRA` (legacy fallback: `JIRA_TOKEN`) - `JIRA_ACCOUNT_EMAIL` -- `BITBUCKET_TOKEN` +- `TOKEN_BITBUCKET` (legacy fallback: `BITBUCKET_TOKEN`) ## Selection Behavior diff --git a/src/cmd/config/store.rs b/src/cmd/config/store.rs index 3201bb6..042f5cc 100644 --- a/src/cmd/config/store.rs +++ b/src/cmd/config/store.rs @@ -3,7 +3,7 @@ use std::path::PathBuf; use crate::cmd::config::key::{ConfigKey, InstanceField}; use crate::config::{ - DotfileConfig, InstanceConfig, TelemetrySection, account_email_env_var, token_env_var, + DotfileConfig, InstanceConfig, TelemetrySection, account_email_env_var, token_from_env, }; #[derive(Debug, Clone, Copy)] @@ -363,7 +363,7 @@ fn merge_telemetry( fn apply_env_overrides(cfg: &mut DotfileConfig) { for instance in cfg.instances.values_mut() { if let Some(platform) = instance.platform.as_deref() - && let Ok(token) = std::env::var(token_env_var(platform)) + && let Some(token) = token_from_env(platform) { instance.token = Some(token); } diff --git a/src/config.rs b/src/config.rs index 1232cbc..0755c5b 100644 --- a/src/config.rs +++ b/src/config.rs @@ -301,7 +301,7 @@ fn resolve_instance_mode(merged: &DotfileConfig, opts: ResolveOptions<'_>) -> Re let token = opts .token .map(std::borrow::ToOwned::to_owned) - .or_else(|| std::env::var(token_env_var(&platform)).ok()) + .or_else(|| token_from_env(&platform)) .or_else(|| instance.token.clone()); let account_email = opts .account_email @@ -354,7 +354,7 @@ fn resolve_cli_only_mode(opts: ResolveOptions<'_>) -> Result { let token = opts .token .map(std::borrow::ToOwned::to_owned) - .or_else(|| std::env::var(token_env_var(&platform)).ok()); + .or_else(|| token_from_env(&platform)); let account_email = opts .account_email .map(std::borrow::ToOwned::to_owned) @@ -523,14 +523,32 @@ fn validate_instance_keys(table: &toml::value::Table) -> Result<()> { #[must_use] pub fn token_env_var(platform: &str) -> &'static str { match platform { - "github" => "GITHUB_TOKEN", - "gitlab" => "GITLAB_TOKEN", - "jira" => "JIRA_TOKEN", - "bitbucket" => "BITBUCKET_TOKEN", + "github" => "TOKEN_GITHUB", + "gitlab" => "TOKEN_GITLAB", + "jira" => "TOKEN_JIRA", + "bitbucket" => "TOKEN_BITBUCKET", _ => "TOKEN", } } +#[must_use] +pub fn legacy_token_env_var(platform: &str) -> Option<&'static str> { + match platform { + "github" => Some("GITHUB_TOKEN"), + "gitlab" => Some("GITLAB_TOKEN"), + "jira" => Some("JIRA_TOKEN"), + "bitbucket" => Some("BITBUCKET_TOKEN"), + _ => None, + } +} + +#[must_use] +pub fn token_from_env(platform: &str) -> Option { + std::env::var(token_env_var(platform)) + .ok() + .or_else(|| legacy_token_env_var(platform).and_then(|key| std::env::var(key).ok())) +} + #[must_use] pub fn account_email_env_var(platform: &str) -> Option<&'static str> { match platform { @@ -614,6 +632,22 @@ mod tests { assert!(err.contains("instances.work.foo")); } + #[test] + fn token_env_var_prefers_canonical_names() { + assert_eq!(token_env_var("github"), "TOKEN_GITHUB"); + assert_eq!(token_env_var("gitlab"), "TOKEN_GITLAB"); + assert_eq!(token_env_var("jira"), "TOKEN_JIRA"); + assert_eq!(token_env_var("bitbucket"), "TOKEN_BITBUCKET"); + } + + #[test] + fn legacy_token_env_var_remains_available_for_compat() { + assert_eq!(legacy_token_env_var("github"), Some("GITHUB_TOKEN")); + assert_eq!(legacy_token_env_var("gitlab"), Some("GITLAB_TOKEN")); + assert_eq!(legacy_token_env_var("jira"), Some("JIRA_TOKEN")); + assert_eq!(legacy_token_env_var("bitbucket"), Some("BITBUCKET_TOKEN")); + } + #[test] fn auto_selects_single_instance() { let cfg = resolve_with_opts( diff --git a/src/source/bitbucket/shared/http.rs b/src/source/bitbucket/shared/http.rs index 612f5b2..39d56d3 100644 --- a/src/source/bitbucket/shared/http.rs +++ b/src/source/bitbucket/shared/http.rs @@ -189,7 +189,7 @@ fn auth_hint(token: Option<&str>) -> &'static str { if token.is_some() { "Check Bitbucket token credentials and scopes." } else { - "No Bitbucket token detected. Set --token, BITBUCKET_TOKEN, or [instances.].token." + "No Bitbucket token detected. Set --token, TOKEN_BITBUCKET (or BITBUCKET_TOKEN), or [instances.].token." } } diff --git a/src/source/github/api.rs b/src/source/github/api.rs index e7b389c..04aacb0 100644 --- a/src/source/github/api.rs +++ b/src/source/github/api.rs @@ -170,7 +170,7 @@ impl GitHubSource { if token.is_some() { "GitHub token seems invalid or lacks required scope." } else { - "No GitHub token detected. Set --token, GITHUB_TOKEN, or [instances.].token." + "No GitHub token detected. Set --token, TOKEN_GITHUB (or GITHUB_TOKEN), or [instances.].token." } } else { "" diff --git a/src/source/gitlab/api.rs b/src/source/gitlab/api.rs index a00bf94..45778b7 100644 --- a/src/source/gitlab/api.rs +++ b/src/source/gitlab/api.rs @@ -185,7 +185,7 @@ impl GitLabSource { let hint = if token.is_some() { "GitLab token seems invalid or lacks required scope (use read_api)." } else { - "No GitLab token detected. Set --token, GITLAB_TOKEN, or [instances.].token." + "No GitLab token detected. Set --token, TOKEN_GITLAB (or GITLAB_TOKEN), or [instances.].token." }; return Err(AppError::auth(format!( "GitLab API auth error {}: {hint} {}", @@ -282,7 +282,7 @@ impl GitLabSource { let hint = if token.is_some() { "GitLab token seems invalid or lacks required scope (use read_api)." } else { - "No GitLab token detected. Set --token, GITLAB_TOKEN, or [instances.].token." + "No GitLab token detected. Set --token, TOKEN_GITLAB (or GITLAB_TOKEN), or [instances.].token." }; return Err(AppError::auth(format!( "GitLab API auth error {}: {hint} {}", diff --git a/src/source/jira/api.rs b/src/source/jira/api.rs index 448ec6c..7e16d39 100644 --- a/src/source/jira/api.rs +++ b/src/source/jira/api.rs @@ -246,7 +246,7 @@ impl JiraSource { " Check Jira permissions for this issue." } } else { - " Jira often returns 404 for unauthorized issues. Set --token, JIRA_TOKEN, or [instances.].token." + " Jira often returns 404 for unauthorized issues. Set --token, TOKEN_JIRA (or JIRA_TOKEN), or [instances.].token." }; return Err(AppError::not_found(format!( "Jira issue '{}' was not found or is not accessible.{} Response: {}", @@ -587,7 +587,7 @@ impl JiraSource { " Jira auth failed. If this is an Atlassian API token, also set account email (--account-email, JIRA_ACCOUNT_EMAIL, or [instances.].account_email), or pass --token as email:api_token." } } else { - " No Jira token detected. Set --token, JIRA_TOKEN, or [instances.].token." + " No Jira token detected. Set --token, TOKEN_JIRA (or JIRA_TOKEN), or [instances.].token." } } else { "" diff --git a/tests/integration.rs b/tests/integration.rs index e481466..72c777d 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -1,10 +1,10 @@ /// Integration tests — live network tests for GitHub + GitLab + Jira. /// Run with: cargo test -- --include-ignored /// Optional env vars for higher-rate/authenticated calls: -/// - `GITHUB_TOKEN`=... -/// - `GITLAB_TOKEN`=... -/// - `JIRA_TOKEN`=... -/// - `BITBUCKET_TOKEN`=... +/// - `TOKEN_GITHUB`=... (legacy fallback: `GITHUB_TOKEN`) +/// - `TOKEN_GITLAB`=... (legacy fallback: `GITLAB_TOKEN`) +/// - `TOKEN_JIRA`=... (legacy fallback: `JIRA_TOKEN`) +/// - `TOKEN_BITBUCKET`=... (legacy fallback: `BITBUCKET_TOKEN`) /// - `BITBUCKET_REPO`=`workspace/repo_slug` /// - `BITBUCKET_PR_ID`=numeric pull request id #[cfg(test)] @@ -26,26 +26,35 @@ mod tests { } fn github_token() -> Option { - std::env::var("GITHUB_TOKEN").ok().or_else(|| { - problems99::config::Config::load_with_options(problems99::config::ResolveOptions { - instance: Some("github"), - ..problems99::config::ResolveOptions::default() - }) + std::env::var("TOKEN_GITHUB") .ok() - .and_then(|c| c.token) - }) + .or_else(|| std::env::var("GITHUB_TOKEN").ok()) + .or_else(|| { + problems99::config::Config::load_with_options(problems99::config::ResolveOptions { + instance: Some("github"), + ..problems99::config::ResolveOptions::default() + }) + .ok() + .and_then(|c| c.token) + }) } fn gitlab_token() -> Option { - std::env::var("GITLAB_TOKEN").ok() + std::env::var("TOKEN_GITLAB") + .ok() + .or_else(|| std::env::var("GITLAB_TOKEN").ok()) } fn jira_token() -> Option { - std::env::var("JIRA_TOKEN").ok() + std::env::var("TOKEN_JIRA") + .ok() + .or_else(|| std::env::var("JIRA_TOKEN").ok()) } fn bitbucket_token() -> Option { - std::env::var("BITBUCKET_TOKEN").ok() + std::env::var("TOKEN_BITBUCKET") + .ok() + .or_else(|| std::env::var("BITBUCKET_TOKEN").ok()) } fn required_env(var: &str) -> String { @@ -124,7 +133,7 @@ mod tests { } #[test] - #[ignore = "requires GITHUB_TOKEN and live network"] + #[ignore = "requires TOKEN_GITHUB (or GITHUB_TOKEN) and live network"] fn github_fetch_known_issue_1842() { let source = GitHubSource::new(false).unwrap(); let req = req_id("schemaorg/schemaorg", "1842", false); @@ -141,7 +150,7 @@ mod tests { } #[test] - #[ignore = "requires GITHUB_TOKEN and live network"] + #[ignore = "requires TOKEN_GITHUB (or GITHUB_TOKEN) and live network"] fn github_search_returns_results() { let source = GitHubSource::new(false).unwrap(); let req = FetchRequest { @@ -165,7 +174,7 @@ mod tests { } #[test] - #[ignore = "requires GITHUB_TOKEN and live network"] + #[ignore = "requires TOKEN_GITHUB (or GITHUB_TOKEN) and live network"] fn github_fetch_one_comment_has_author_and_body() { let source = GitHubSource::new(false).unwrap(); let req = req_id("schemaorg/schemaorg", "1842", false); @@ -183,7 +192,7 @@ mod tests { } #[test] - #[ignore = "requires GITHUB_TOKEN and live network"] + #[ignore = "requires TOKEN_GITHUB (or GITHUB_TOKEN) and live network"] fn github_fetch_pr_2402_default_issue_comments_only() { let source = GitHubSource::new(false).unwrap(); let req = req_id_with_kind("github/gitignore", "2402", ContentKind::Pr); @@ -206,7 +215,7 @@ mod tests { } #[test] - #[ignore = "requires GITHUB_TOKEN and live network"] + #[ignore = "requires TOKEN_GITHUB (or GITHUB_TOKEN) and live network"] fn github_fetch_pr_2402_with_review_comments() { let source = GitHubSource::new(false).unwrap(); let mut req = req_id_with_kind("github/gitignore", "2402", ContentKind::Pr); @@ -227,7 +236,7 @@ mod tests { } #[test] - #[ignore = "requires GITHUB_TOKEN and live network"] + #[ignore = "requires TOKEN_GITHUB (or GITHUB_TOKEN) and live network"] fn github_search_pr_query_includes_2402() { let source = GitHubSource::new(false).unwrap(); let req = FetchRequest { @@ -248,7 +257,7 @@ mod tests { } #[test] - #[ignore = "requires GITHUB_TOKEN and live network"] + #[ignore = "requires TOKEN_GITHUB (or GITHUB_TOKEN) and live network"] fn github_fetch_issue_as_pr_errors_when_kind_is_explicit() { let source = GitHubSource::new(false).unwrap(); let req = req_id_with_kind("schemaorg/schemaorg", "1842", ContentKind::Pr); @@ -257,7 +266,7 @@ mod tests { } #[test] - #[ignore = "requires GITHUB_TOKEN and live network"] + #[ignore = "requires TOKEN_GITHUB (or GITHUB_TOKEN) and live network"] fn github_fetch_pr_as_issue_errors_when_fallback_is_disabled() { let source = GitHubSource::new(false).unwrap(); let req = req_id_with_kind("github/gitignore", "2402", ContentKind::Issue); @@ -266,7 +275,7 @@ mod tests { } #[test] - #[ignore = "requires live network (GITLAB_TOKEN recommended for comments)"] + #[ignore = "requires live network (TOKEN_GITLAB/GITLAB_TOKEN recommended for comments)"] fn gitlab_fetch_issue_6() { let source = GitLabSource::new(None, false).unwrap(); let req = FetchRequest { @@ -298,7 +307,7 @@ mod tests { } #[test] - #[ignore = "requires live network (GITLAB_TOKEN recommended for comments)"] + #[ignore = "requires live network (TOKEN_GITLAB/GITLAB_TOKEN recommended for comments)"] fn gitlab_fetch_mr_6() { let source = GitLabSource::new(None, false).unwrap(); let req = FetchRequest { @@ -330,7 +339,7 @@ mod tests { } #[test] - #[ignore = "requires live network (GITLAB_TOKEN recommended for comments)"] + #[ignore = "requires live network (TOKEN_GITLAB/GITLAB_TOKEN recommended for comments)"] fn gitlab_search_issue_results() { let source = GitLabSource::new(None, false).unwrap(); let req = FetchRequest { @@ -359,7 +368,7 @@ mod tests { } #[test] - #[ignore = "requires live network (GITLAB_TOKEN recommended for comments)"] + #[ignore = "requires live network (TOKEN_GITLAB/GITLAB_TOKEN recommended for comments)"] fn gitlab_search_mr_results() { let source = GitLabSource::new(None, false).unwrap(); let req = FetchRequest { From 9dc481e1ac93da3bd3353267be685ef1da5bb737 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Mar 2026 00:39:58 +0000 Subject: [PATCH 3/3] Harden workflow secret presence checks for provider integration jobs Co-authored-by: mbe24 <7420624+mbe24@users.noreply.github.com> --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e3861e1..f0f75e1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,7 +44,7 @@ jobs: name: Integration (GitHub, blocking) needs: test runs-on: ubuntu-latest - if: ${{ secrets.GITHUB_TOKEN != '' }} + if: ${{ secrets.GITHUB_TOKEN }} env: TOKEN_GITHUB: ${{ secrets.GITHUB_TOKEN }} steps: @@ -70,7 +70,7 @@ jobs: name: Integration (GitLab, blocking) needs: test runs-on: ubuntu-latest - if: ${{ secrets.GITLAB_TOKEN != '' }} + if: ${{ secrets.GITLAB_TOKEN }} env: TOKEN_GITLAB: ${{ secrets.GITLAB_TOKEN }} steps: @@ -97,7 +97,7 @@ jobs: needs: test runs-on: ubuntu-latest continue-on-error: true - if: ${{ secrets.JIRA_TOKEN != '' }} + if: ${{ secrets.JIRA_TOKEN }} env: TOKEN_JIRA: ${{ secrets.JIRA_TOKEN }} steps: @@ -124,7 +124,7 @@ jobs: needs: test runs-on: ubuntu-latest continue-on-error: true - if: ${{ secrets.BITBUCKET_TOKEN != '' && secrets.BITBUCKET_REPO != '' && secrets.BITBUCKET_PR_ID != '' }} + if: ${{ secrets.BITBUCKET_TOKEN && secrets.BITBUCKET_REPO && secrets.BITBUCKET_PR_ID }} env: TOKEN_BITBUCKET: ${{ secrets.BITBUCKET_TOKEN }} BITBUCKET_REPO: ${{ secrets.BITBUCKET_REPO }}