A GitHub Action to create an '.env' file with GitHub Secrets. This is useful when you are creating artifacts that contain values stored in GitHub Secrets. This creates a file with variables that are defined in the Action config.
The Action looks for environment variables that start with envkey_
and creates
an '.env' file with them. These are defined in the with
section of the Action
config. Here is an example of it in use:
name: Create envfile
on: [ push ]
jobs:
create-envfile:
runs-on: ubuntu-latest
steps:
- name: Make envfile
uses: SpicyPizza/[email protected]
with:
envkey_DEBUG: false
envkey_SOME_API_KEY: "123456abcdef"
envkey_SECRET_KEY: ${{ secrets.SECRET_KEY }}
envkey_VARIABLE: ${{ vars.SOME_ACTION_VARIABLE }}
some_other_variable: foobar
directory: <directory_name>
file_name: .env
fail_on_empty: false
sort_keys: false
In the example above, there are several key/value pairs that will be added to the '.env' file:
Name | Description |
---|---|
envkey_DEBUG , envkey_SOME_API_KEY |
These values can be whatever, and they will be added to the '.env' file as DEBUG and SOME_API_KEY . |
envkey_SECRET_KEY |
This one will use a secret stored in the repository's GitHub Secrets, and add it to the file as SECRET_KEY |
directory (Optional) |
This key will set the directory in which you want to create env file. Important: cannot start with / . Action will fail if the specified directory doesn't exist. |
file_name (Optional) |
Set the name of the output '.env' file. Defaults to .env |
fail_on_empty (Optional) |
If set to true, the Action will fail if any env key is empty. Default to false . |
sort_keys (Optional) |
If set to true, the Action will sort the keys in the output '.env' file. Default to false . |
Assuming that the GitHub Secret that was used is password123
, the '.env' file
that is created from the config above would contain:
DEBUG=false
SOME_API_KEY="123456abcdef"
SECRET_KEY=password123
This Action supports multiline secrets, as described in the nodejs dotenv readme.
You may have a secret that requres multiple lines, like a private key. You can store this in a GitHub Secret, and use it as any other secret in this Action:
PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
...
Kh9NV...
...
-----END RSA PRIVATE KEY-----"
It will get stored as a single line in the '.env' file. This line will start and
end with a "
character, and will contain \n
characters to represent the
newlines:
PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nKh9NV...\n-----END RSA PRIVATE KEY-----\n"
When the Action runs, it will show Warning: Unexpected input(s) ...
. This is
because GitHub is expecting all the potential input variables to be defined by
the Action's definition. You can read more about it in this
issue.