这是indexloc提供的服务,不要输入任何密码
Skip to content

Hash env vars #495

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 23 commits into from
Jan 10, 2022
Merged

Hash env vars #495

merged 23 commits into from
Jan 10, 2022

Conversation

jaredpalmer
Copy link
Contributor

@jaredpalmer jaredpalmer commented Jan 4, 2022

When you use turbo with tools which inline environment variables at build time (e.g. Next.js or Create React App), it is important you tell turbo about it. Otherwise, you could ship a cached artifact with the wrong environment variables!

With this PR, you can now change a task hash by doing any of the following:

  • (new) Including environment variables in a dependsOn in your pipeline definition prefixed by a $ will impact the cache fingerprint on a per-task or per-package-task basis.
  • (new) Including environment variables in globalDependencies list prefixed by a $ will impact the cache fingerprint of all tasks.
  • Including files or globs of files in globalDependencies will impact the cache fingerprint of all tasks.
  • (new) The value of any environment variable that includes THASH in its name will impact the cache fingerprint of all tasks.

Example Configuration

{
  "turbo": {
    "pipeline": {
      "build": {
        "dependsOn": {
          "^build"
          // env vars will impact hashes of all "build" tasks
          "$SOME_ENV_VAR"
        },
        "outputs": ["dist/**"]
      },
      "web#build": { // override settings for the "build" task for the "web" app
        "dependsOn": [
          "^build",
           // env vars that will impact the hash of "build" task for only "web" app
           "$STRIPE_SECRET_KEY",
           "$NEXT_PUBLIC_STRIPE_PUBLIC_KEY",
           "$NEXT_PUBLIC_ANALYTICS_ID",
        ],
        "outputs": [".next/**"],
      },
      "docs#build": { // override settings for the "build" task for the "docs" app
        "dependsOn": [
          "^build",
           // env vars that will impact the hash of "build" task for only "web" app
           "$STRIPE_SECRET_KEY",
           "$NEXT_PUBLIC_STRIPE_PUBLIC_KEY",
           "$NEXT_PUBLIC_ANALYTICS_ID",
        ],
        "outputs": [".next/**"],
      }
    },
    "baseBranch": "origin/main",
    "globalDependencies": [
      "$GITHUB_TOKEN"// env var that will impact the hashes of all tasks,
      "tsconfig.json" // file contents will impact the hashes of all tasks,
      ".env.*" // glob file contents will impact the hashes of all tasks,
    ],
  }
}

@vercel
Copy link

vercel bot commented Jan 4, 2022

This pull request is being automatically deployed with Vercel (learn more).
To see the status of your deployment, click below or on the icon next to each commit.

🔍 Inspect: https://vercel.com/vercel/turbo-site/AeCgiXY2F1qXvKJUdC4ACjGoZgpJ
✅ Preview: https://turbo-site-git-refactor-hashable-env-vars.vercel.sh

@jaredpalmer jaredpalmer changed the title Hash env vars redux Hash env vars Jan 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants