Skip to content

chore: make cache keys cleaner #242

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 3 commits into from
Mar 9, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
207 changes: 144 additions & 63 deletions .github/actions/cache/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,133 +9,214 @@ inputs:
language:
description: The language to retrieve dependencies.
required: false
default: javascript

runs:
using: composite
steps:
# restore clients
# JavaScript setup
- name: Get yarn cache directory path
shell: bash
id: yarn-cache-dir
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"

- name: Restore Yarn
uses: actions/cache@v2
with:
path: ${{ steps.yarn-cache-dir.outputs.dir || '.yarn/cache' }}
key: node-cache-${{ env.CACHE_VERSION }}-yarn-${{ hashFiles('yarn.lock') }}

- name: Install JavaScript dependencies
shell: bash
run: yarn install

# Java setup: used during 'java' generation or 'cts'
- name: Download Java formatter
if: ${{ inputs.language == 'java' || inputs.job == 'cts' }}
shell: bash
run: curl -L "https://github.com/google/google-java-format/releases/download/v1.13.0/google-java-format-1.13.0-all-deps.jar" > /tmp/java-formatter.jar

- name: Download openapi generator jar for java (TODO REMOVE)
if: ${{ inputs.language == 'java' || inputs.job == 'cts' }}
shell: bash
run: curl -L "https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.4.0/openapi-generator-cli-5.4.0.jar" > /tmp/openapi-generator-cli.jar

# Restore JavaScript clients utils: used during 'javascript' generation or 'cts'
- name: Restore built JavaScript common client
if: ${{ inputs.job == 'cts' || inputs.job == 'javascript-client' }}
if: ${{ inputs.language == 'javascript' || inputs.job == 'cts' }}
uses: actions/cache@v2
with:
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-javascript/packages/client-common/dist
key: ${{ runner.os }}-${{ env.CACHE_VERSION }}-js-client-common-${{ hashFiles('clients/algoliasearch-client-javascript/packages/client-common/**') }}
path: clients/algoliasearch-client-javascript/packages/client-common
key: |
${{ env.CACHE_VERSION }}-${{
hashFiles(
'clients/algoliasearch-client-javascript/packages/client-common/**',
'!clients/algoliasearch-client-javascript/packages/client-common/dist'
)}}

- name: Restore built JavaScript node requester
if: ${{ inputs.job == 'cts' || inputs.job == 'javascript-client' }}
if: ${{ inputs.language == 'javascript' || inputs.job == 'cts' }}
uses: actions/cache@v2
with:
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-javascript/packages/requester-node-http/dist
key: ${{ runner.os }}-${{ env.CACHE_VERSION }}-js-requester-node-http-${{ hashFiles('clients/algoliasearch-client-javascript/packages/requester-node-http/**') }}
path: clients/algoliasearch-client-javascript/packages/requester-node-http
key: |
${{ env.CACHE_VERSION }}-${{
hashFiles(
'clients/algoliasearch-client-javascript/packages/requester-node-http/**',
'!clients/algoliasearch-client-javascript/packages/requester-node-http/dist'
)}}

- name: Restore built JavaScript browser requester
if: ${{ inputs.job == 'cts' || inputs.job == 'javascript-client' }}
if: ${{ inputs.language == 'javascript' || inputs.job == 'cts' }}
uses: actions/cache@v2
with:
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-javascript/packages/requester-browser-xhr/dist
key: ${{ runner.os }}-${{ env.CACHE_VERSION }}-js-requester-browser-xhr-${{ hashFiles('clients/algoliasearch-client-javascript/packages/requester-browser-xhr/**') }}

path: clients/algoliasearch-client-javascript/packages/requester-browser-xhr
key: |
${{ env.CACHE_VERSION }}-${{
hashFiles(
'clients/algoliasearch-client-javascript/packages/requester-browser-xhr/**',
'!clients/algoliasearch-client-javascript/packages/requester-browser-xhr/dist'
)}}

# Restore JavaScript clients: used during 'cts'
- name: Restore built JavaScript algoliasearch client
if: ${{ inputs.job == 'cts' }}
if: ${{ inputs.job == 'cts'}}
uses: actions/cache@v2
with:
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-javascript/packages/algoliasearch/dist
key: ${{ runner.os }}-${{ env.CACHE_VERSION }}-js-algoliasearch-${{ hashFiles('clients/algoliasearch-client-javascript/packages/algoliasearch/**') }}
path: clients/algoliasearch-client-javascript/packages/algoliasearch
key: |
${{ env.CACHE_VERSION }}-${{
hashFiles(
'clients/algoliasearch-client-javascript/packages/algoliasearch/**',
'!clients/algoliasearch-client-javascript/packages/algoliasearch/dist'
)}}

- name: Restore built JavaScript search client
if: ${{ inputs.job == 'cts' }}
uses: actions/cache@v2
with:
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-javascript/packages/client-search/dist
key: ${{ runner.os }}-${{ env.CACHE_VERSION }}-js-client-search-${{ hashFiles('clients/algoliasearch-client-javascript/packages/client-search/**') }}-${{ hashFiles('specs/bundled/search.yml') }}
path: clients/algoliasearch-client-javascript/packages/client-search
key: |
${{ env.CACHE_VERSION }}-${{
hashFiles(
'clients/algoliasearch-client-javascript/packages/client-search/**',
'!clients/algoliasearch-client-javascript/packages/client-search/dist',
'specs/bundled/search.yml'
)}}

- name: Restore built JavaScript recommend client
if: ${{ inputs.job == 'cts' }}
uses: actions/cache@v2
with:
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-javascript/packages/recommend/dist
key: ${{ runner.os }}-${{ env.CACHE_VERSION }}-js-client-recommend-${{ hashFiles('clients/algoliasearch-client-javascript/packages/recommend/**') }}-${{ hashFiles('specs/bundled/recommend.yml') }}
path: clients/algoliasearch-client-javascript/packages/recommend
key: |
${{ env.CACHE_VERSION }}-${{
hashFiles(
'clients/algoliasearch-client-javascript/packages/recommend/**',
'!clients/algoliasearch-client-javascript/packages/recommend/dist',
'specs/bundled/recommend.yml'
)}}

- name: Restore built JavaScript query-suggestions client
if: ${{ inputs.job == 'cts' }}
uses: actions/cache@v2
with:
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-javascript/packages/client-query-suggestions/dist
key: ${{ runner.os }}-${{ env.CACHE_VERSION }}-js-client-query-suggestions-${{ hashFiles('clients/algoliasearch-client-javascript/packages/client-query-suggestions/**') }}-${{ hashFiles('specs/bundled/query-suggestions.yml') }}
path: clients/algoliasearch-client-javascript/packages/client-query-suggestions
key: |
${{ env.CACHE_VERSION }}-${{
hashFiles(
'clients/algoliasearch-client-javascript/packages/client-query-suggestions/**',
'!clients/algoliasearch-client-javascript/packages/client-query-suggestions/dist',
'specs/bundled/query-suggestions.yml'
)}}

- name: Restore built JavaScript personalization client
if: ${{ inputs.job == 'cts' }}
uses: actions/cache@v2
with:
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-javascript/packages/client-personalization/dist
key: ${{ runner.os }}-${{ env.CACHE_VERSION }}-js-client-personalization-${{ hashFiles('clients/algoliasearch-client-javascript/packages/client-personalization/**') }}-${{ hashFiles('specs/bundled/personalization.yml') }}
path: clients/algoliasearch-client-javascript/packages/client-personalization
key: |
${{ env.CACHE_VERSION }}-${{
hashFiles(
'clients/algoliasearch-client-javascript/packages/client-personalization/**',
'!clients/algoliasearch-client-javascript/packages/client-personalization/dist',
'specs/bundled/personalization.yml'
)}}

- name: Restore built JavaScript analytics client
if: ${{ inputs.job == 'cts' }}
uses: actions/cache@v2
with:
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-javascript/packages/client-analytics/dist
key: ${{ runner.os }}-${{ env.CACHE_VERSION }}-js-client-analytics-${{ hashFiles('clients/algoliasearch-client-javascript/packages/client-analytics/**') }}-${{ hashFiles('specs/bundled/analytics.yml') }}
path: clients/algoliasearch-client-javascript/packages/client-analytics
key: |
${{ env.CACHE_VERSION }}-${{
hashFiles(
'clients/algoliasearch-client-javascript/packages/client-analytics/**',
'!clients/algoliasearch-client-javascript/packages/client-analytics/dist',
'specs/bundled/analytics.yml'
)}}

- name: Restore built JavaScript abtesting client
if: ${{ inputs.job == 'cts' }}
uses: actions/cache@v2
with:
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-javascript/packages/client-abtesting/dist
key: ${{ runner.os }}-${{ env.CACHE_VERSION }}-js-client-abtesting-${{ hashFiles('clients/algoliasearch-client-javascript/packages/client-abtesting/**') }}-${{ hashFiles('specs/bundled/abtesting.yml') }}
path: clients/algoliasearch-client-javascript/packages/client-abtesting
key: |
${{ env.CACHE_VERSION }}-${{
hashFiles(
'clients/algoliasearch-client-javascript/packages/client-abtesting/**',
'!clients/algoliasearch-client-javascript/packages/client-abtesting/dist',
'specs/bundled/abtesting.yml'
)}}

- name: Restore built JavaScript insights client
if: ${{ inputs.job == 'cts' }}
uses: actions/cache@v2
with:
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-javascript/packages/client-insights/dist
key: ${{ runner.os }}-${{ env.CACHE_VERSION }}-js-client-insights-${{ hashFiles('clients/algoliasearch-client-javascript/packages/client-insights/**') }}-${{ hashFiles('specs/bundled/insights.yml') }}
path: clients/algoliasearch-client-javascript/packages/client-insights
key: |
${{ env.CACHE_VERSION }}-${{
hashFiles(
'clients/algoliasearch-client-javascript/packages/client-insights/**',
'!clients/algoliasearch-client-javascript/packages/client-insights/dist',
'specs/bundled/insights.yml'
)}}

- name: Restore built JavaScript sources client
if: ${{ inputs.job == 'cts' }}
uses: actions/cache@v2
with:
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-javascript/packages/client-sources/dist
key: ${{ runner.os }}-${{ env.CACHE_VERSION }}-js-client-sources-${{ hashFiles('clients/algoliasearch-client-javascript/packages/client-sources/**') }}-${{ hashFiles('specs/bundled/sources.yml') }}
path: clients/algoliasearch-client-javascript/packages/client-sources
key: |
${{ env.CACHE_VERSION }}-${{
hashFiles(
'clients/algoliasearch-client-javascript/packages/client-sources/**',
'!clients/algoliasearch-client-javascript/packages/client-sources/dist',
'specs/bundled/sources.yml'
)}}

- name: Restore built JavaScript predict client
if: ${{ inputs.job == 'cts' }}
uses: actions/cache@v2
with:
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-javascript/packages/client-predict/dist
key: ${{ runner.os }}-${{ env.CACHE_VERSION }}-js-client-predict-${{ hashFiles('clients/algoliasearch-client-javascript/packages/client-predict/**') }}-${{ hashFiles('specs/dist/predict.yml') }}

path: clients/algoliasearch-client-javascript/packages/client-predict
key: |
${{ env.CACHE_VERSION }}-${{
hashFiles(
'clients/algoliasearch-client-javascript/packages/client-predict/**',
'!clients/algoliasearch-client-javascript/packages/client-predict/dist',
'specs/bundled/predict.yml'
)}}

# Restore Java clients: used during 'cts'
- name: Restore built Java client
if: ${{ inputs.job == 'cts' }}
uses: actions/cache@v2
with:
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-java-2
key: ${{ runner.os }}-${{ env.CACHE_VERSION }}-java-client-${{ hashFiles('clients/algoliasearch-client-java-2/**') }}-${{ hashFiles('specs/bundled/search.yml') }}

# setup yarn
- name: Get yarn cache directory path
shell: bash
id: yarn-cache-dir
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"

- name: Restore Yarn
uses: actions/cache@v2
with:
path: ${{ steps.yarn-cache-dir.outputs.dir || '/home/runner/work/api-clients-automation/api-clients-automation/.yarn/cache' }}
key: node-cache-${{ env.CACHE_VERSION }}-${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}

- name: Install JavaScript dependencies
shell: bash
run: yarn install

# Java setup
- name: Download Java formatter
if: ${{ inputs.language == 'java' || inputs.job == 'cts' }}
shell: bash
run: curl -L "https://github.com/google/google-java-format/releases/download/v1.13.0/google-java-format-1.13.0-all-deps.jar" > /tmp/java-formatter.jar

- name: Download openapi generator jar for java (TODO REMOVE)
if: ${{ inputs.language == 'java' || inputs.job == 'cts' }}
shell: bash
run: curl -L "https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.4.0/openapi-generator-cli-5.4.0.jar" > /tmp/openapi-generator-cli.jar
path: clients/algoliasearch-client-java-2
key: |
${{ env.CACHE_VERSION }}-${{
hashFiles(
'clients/algoliasearch-client-java-2/client-predict/**',
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

didn't know java had the predict client already !

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ahaha yep that was a miss, it's fixed in #244

'!clients/algoliasearch-client-java-2/client-predict/target',
'specs/bundled/search.yml'
)}}
Loading