Set or get a value that persists through GitHub Actions jobs, steps, or workflows.
- Execute some logic if a file hash has changed
- Keep track of a URL required in other steps of your workflow (like a Vercel preview URL)
- Set a boolean value to make other steps in your workflow optional
Any questions, comments, feedback? Join the #gh-persistent-values channel or open a new issue.
Set a single value
For single values, the action takes the inputs below:
Input | Description |
---|---|
key |
The key for the value you want to set |
value |
The value to set |
access_token |
Visit this URL, then add this access token as a GitHub secret to your repo (e.g. PERSISTENT_VALUE_ACCESS_TOKEN ). |
steps:
- name: Set a persistent value
id: set_persistent_value
uses: aaimio/[email protected]
with:
key: foo
value: bar
access_token: ${{ secrets.PERSISTENT_VALUE_ACCESS_TOKEN }}
Set multiple values
For multiple values, the action takes the inputs below:
Input | Description |
---|---|
json |
A JSON string with the keys and values you want to set |
access_token |
Visit this URL, then add this access token as a GitHub secret to your repo (e.g. PERSISTENT_VALUE_ACCESS_TOKEN ). |
steps:
- name: Set a persistent value
id: set_persistent_value
uses: aaimio/[email protected]
with:
json: '{ "some_key": 42, "foo": "bar", "boolean_value": true }'
access_token: ${{ secrets.PERSISTENT_VALUE_ACCESS_TOKEN }}
This action takes the inputs below:
Input | Description |
---|---|
key |
The key for the value you want to retrieve |
access_token |
Visit this URL, then add this access token as a GitHub secret to your repo (e.g. PERSISTENT_VALUE_ACCESS_TOKEN ). |
steps:
- name: Get a persistent value
id: get_persistent_value
uses: aaimio/[email protected]
with:
key: foo
access_token: ${{ secrets.PERSISTENT_VALUE_ACCESS_TOKEN }}
- name: Some other step
run: |
echo ${{ steps.get_persistent_value.outputs.value }}
In the background, the action is talking to a simple key-value store.
To reduce the overhead of downloading the action or introducing yet another step into your workflow, you could also use the API directly:
curl -X POST \
-H 'x-api-key: ${{ secrets.PERSISTENT_VALUE_ACCESS_TOKEN }}' \
-H 'x-github-repo: <GITHUB_OWNER/GITHUB_REPO>' \
-H 'content-type: application/json' \
-d '{ "value": "some_value" }' \
'https://persistent.aaim.io/api/values/set?key=YOUR_KEY&output=plain'
SOME_VALUE=$(curl -X GET \
-H 'x-api-key: ${{ secrets.PERSISTENT_VALUE_ACCESS_TOKEN }}' \
-H 'x-github-repo: <GITHUB_OWNER/GITHUB_REPO>' \
'https://persistent.aaim.io/api/values/get?key=YOUR_KEY&output=plain')
echo $SOME_VALUE
- The
x-github-repo
header is completely optional, it will only keep track of which repositories are using the action or API.
- Items will persist until the
access_token
hasn't been used for 3 months.