From 9945ec321bc3a774318aeb32e884f7170a3fc5a7 Mon Sep 17 00:00:00 2001 From: Felipe Suero Date: Tue, 25 Apr 2023 10:00:29 -0400 Subject: [PATCH] why does this not work? --- .../src/context-providers/secrets.ts | 46 ++++++++++++++----- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/languageserver/src/context-providers/secrets.ts b/languageserver/src/context-providers/secrets.ts index 6ee5d5b..a018429 100644 --- a/languageserver/src/context-providers/secrets.ts +++ b/languageserver/src/context-providers/secrets.ts @@ -1,15 +1,15 @@ -import {data, DescriptionDictionary} from "@actions/expressions"; -import {StringData} from "@actions/expressions/data/string"; -import {Mode} from "@actions/languageservice/context-providers/default"; -import {WorkflowContext} from "@actions/languageservice/context/workflow-context"; -import {warn} from "@actions/languageservice/log"; -import {isMapping, isString} from "@actions/workflow-parser"; -import {Octokit} from "@octokit/rest"; +import { data, DescriptionDictionary } from "@actions/expressions"; +import { StringData } from "@actions/expressions/data/string"; +import { Mode } from "@actions/languageservice/context-providers/default"; +import { WorkflowContext } from "@actions/languageservice/context/workflow-context"; +import { warn } from "@actions/languageservice/log"; +import { isMapping, isString } from "@actions/workflow-parser"; +import { Octokit } from "@octokit/rest"; -import {RepositoryContext} from "../initializationOptions"; -import {TTLCache} from "../utils/cache"; -import {errorStatus} from "../utils/error"; -import {getRepoPermission} from "../utils/repo-permission"; +import { RepositoryContext } from "../initializationOptions"; +import { TTLCache } from "../utils/cache"; +import { errorStatus } from "../utils/error"; +import { getRepoPermission } from "../utils/repo-permission"; export async function getSecrets( workflowContext: WorkflowContext, @@ -28,6 +28,8 @@ export async function getSecrets( } const eventsConfig = workflowContext?.template?.events; + const dynamicEnv = workflowContext?.template?.env + if (eventsConfig?.workflow_call) { // Unpredictable secrets may be passed in via a workflow_call trigger secretsContext.complete = false; @@ -38,6 +40,7 @@ export async function getSecrets( } let environmentName: string | undefined; + if (workflowContext?.job?.environment) { if (isString(workflowContext.job.environment)) { environmentName = workflowContext.job.environment.value; @@ -53,6 +56,25 @@ export async function getSecrets( } } + + let isDynamicEnv = false; + if (workflowContext.job?.environment && isMapping(workflowContext.job.environment)) { + for (const k of workflowContext.job.environment) { + // check if the value starts with ${{ + if (isString(k.value) && k.value.value.startsWith("${{")) { + isDynamicEnv = true; + } + } + } + + console.log(`isDynamicEnv: ${isDynamicEnv}`) + if (isDynamicEnv) { + secretsContext.complete = false; + if (mode === Mode.Validation) { + return secretsContext; + } + } + const secrets = await getRemoteSecrets(octokit, cache, repo, environmentName); // Build combined map of secrets @@ -171,7 +193,7 @@ async function fetchOrganizationSecrets(octokit: Octokit, repo: RepositoryContex } try { - const secrets: {name: string}[] = await octokit.paginate("GET /repos/{owner}/{repo}/actions/organization-secrets", { + const secrets: { name: string }[] = await octokit.paginate("GET /repos/{owner}/{repo}/actions/organization-secrets", { owner: repo.owner, repo: repo.name, per_page: 100