diff --git a/.github/actions/cache/action.yml b/.github/actions/cache/action.yml index 3cf9e992020..43815bb7e40 100644 --- a/.github/actions/cache/action.yml +++ b/.github/actions/cache/action.yml @@ -12,6 +12,9 @@ inputs: cache_hash: description: The cache hash from github actions and scripts required: false + spec: + description: The name of the spec to restore, used for client matrix gen. + required: false runs: using: composite @@ -29,7 +32,7 @@ runs: run: echo "::set-output name=dir::$(yarn config get cacheFolder)" - name: Restore Yarn - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ${{ steps.yarn-cache-dir.outputs.dir || '.yarn/cache' }} key: node-cache-${{ env.CACHE_VERSION_YARN }}-yarn-${{ hashFiles('yarn.lock') }} @@ -40,10 +43,23 @@ runs: 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 - # Restore bundled specs: used during 'client' generation or pushing the 'codegen' + # Restore bundled specs from input: used during 'client' generation + - name: Restore ${{ inputs.spec }} built spec + if: ${{ inputs.job == 'client' && inputs.spec }} + uses: actions/cache@v3 + with: + path: specs/bundled/abtesting.yml + key: | + ${{ env.CACHE_VERSION }}-${{ + hashFiles( + format('specs/{0}/**', inputs.spec), + 'specs/common/**' + )}} + + # Restore bundled specs: used during 'cts' or pushing the 'codegen' - name: Restore built abtesting spec - if: ${{ inputs.job == 'cts' || inputs.job == 'client' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} + uses: actions/cache@v3 with: path: specs/bundled/abtesting.yml key: | @@ -54,8 +70,8 @@ runs: )}} - name: Restore built analytics spec - if: ${{ inputs.job == 'cts' || inputs.job == 'client' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} + uses: actions/cache@v3 with: path: specs/bundled/analytics.yml key: | @@ -66,8 +82,8 @@ runs: )}} - name: Restore built insights spec - if: ${{ inputs.job == 'cts' || inputs.job == 'client' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} + uses: actions/cache@v3 with: path: specs/bundled/insights.yml key: | @@ -78,8 +94,8 @@ runs: )}} - name: Restore built personalization spec - if: ${{ inputs.job == 'cts' || inputs.job == 'client' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} + uses: actions/cache@v3 with: path: specs/bundled/personalization.yml key: | @@ -90,8 +106,8 @@ runs: )}} - name: Restore built predict spec - if: ${{ inputs.job == 'cts' || inputs.job == 'client' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} + uses: actions/cache@v3 with: path: specs/bundled/predict.yml key: | @@ -102,8 +118,8 @@ runs: )}} - name: Restore built query-suggestions spec - if: ${{ inputs.job == 'cts' || inputs.job == 'client' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} + uses: actions/cache@v3 with: path: specs/bundled/query-suggestions.yml key: | @@ -114,8 +130,8 @@ runs: )}} - name: Restore built recommend spec - if: ${{ inputs.job == 'cts' || inputs.job == 'client' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} + uses: actions/cache@v3 with: path: specs/bundled/recommend.yml key: | @@ -126,8 +142,8 @@ runs: )}} - name: Restore built search spec - if: ${{ inputs.job == 'cts' || inputs.job == 'client' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} + uses: actions/cache@v3 with: path: specs/bundled/search.yml key: | @@ -138,8 +154,8 @@ runs: )}} - name: Restore built algoliasearch-lite spec - if: ${{ inputs.job == 'cts' || inputs.job == 'client' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} + uses: actions/cache@v3 with: path: specs/bundled/algoliasearch-lite.yml key: | @@ -150,8 +166,8 @@ runs: )}} - name: Restore built sources spec - if: ${{ inputs.job == 'cts' || inputs.job == 'client' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} + uses: actions/cache@v3 with: path: specs/bundled/sources.yml key: | @@ -164,7 +180,7 @@ runs: # Restore JavaScript clients utils: used during 'javascript' generation or 'cts' - name: Restore built JavaScript common client if: ${{ inputs.language == 'javascript' || inputs.job == 'cts' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: clients/algoliasearch-client-javascript/packages/client-common key: | @@ -175,7 +191,7 @@ runs: - name: Restore built JavaScript node requester if: ${{ inputs.language == 'javascript' || inputs.job == 'cts' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: clients/algoliasearch-client-javascript/packages/requester-node-http key: | @@ -186,7 +202,7 @@ runs: - name: Restore built JavaScript browser requester if: ${{ inputs.language == 'javascript' || inputs.job == 'cts' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: clients/algoliasearch-client-javascript/packages/requester-browser-xhr key: | @@ -198,7 +214,7 @@ runs: # Restore JavaScript clients: used during 'cts' or 'codegen' - name: Restore built JavaScript algoliasearch client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: clients/algoliasearch-client-javascript/packages/algoliasearch key: | @@ -212,7 +228,7 @@ runs: - name: Restore built JavaScript algoliasearch-lite client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: clients/algoliasearch-client-javascript/packages/algoliasearch-lite key: | @@ -229,7 +245,7 @@ runs: - name: Restore built JavaScript search client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: clients/algoliasearch-client-javascript/packages/client-search key: | @@ -246,7 +262,7 @@ runs: - name: Restore built JavaScript recommend client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: clients/algoliasearch-client-javascript/packages/recommend key: | @@ -263,7 +279,7 @@ runs: - name: Restore built JavaScript query-suggestions client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: clients/algoliasearch-client-javascript/packages/client-query-suggestions key: | @@ -280,7 +296,7 @@ runs: - name: Restore built JavaScript personalization client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: clients/algoliasearch-client-javascript/packages/client-personalization key: | @@ -297,7 +313,7 @@ runs: - name: Restore built JavaScript analytics client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: clients/algoliasearch-client-javascript/packages/client-analytics key: | @@ -314,7 +330,7 @@ runs: - name: Restore built JavaScript abtesting client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: clients/algoliasearch-client-javascript/packages/client-abtesting key: | @@ -331,7 +347,7 @@ runs: - name: Restore built JavaScript insights client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: clients/algoliasearch-client-javascript/packages/client-insights key: | @@ -348,7 +364,7 @@ runs: - name: Restore built JavaScript sources client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: clients/algoliasearch-client-javascript/packages/client-sources key: | @@ -365,7 +381,7 @@ runs: - name: Restore built JavaScript predict client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: clients/algoliasearch-client-javascript/packages/client-predict key: | @@ -383,7 +399,7 @@ runs: # Restore Java clients: used during 'cts' or 'codegen' - name: Restore Java client gradle files if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' || (inputs.job == 'client' && inputs.language == 'java') }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | clients/algoliasearch-client-java-2/gradle* @@ -397,7 +413,7 @@ runs: - name: Restore built Java search client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | clients/algoliasearch-client-java-2/algoliasearch-core/src/main/java/com/algolia/api/SearchClient.java @@ -412,7 +428,7 @@ runs: - name: Restore built Java recommend client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | clients/algoliasearch-client-java-2/algoliasearch-core/src/main/java/com/algolia/api/RecommendClient.java @@ -427,7 +443,7 @@ runs: - name: Restore built Java personalization client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | clients/algoliasearch-client-java-2/algoliasearch-core/src/main/java/com/algolia/api/PersonalizationClient.java @@ -442,7 +458,7 @@ runs: - name: Restore built Java analytics client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | clients/algoliasearch-client-java-2/algoliasearch-core/src/main/java/com/algolia/api/AnalyticsClient.java @@ -457,7 +473,7 @@ runs: - name: Restore built Java insights client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | clients/algoliasearch-client-java-2/algoliasearch-core/src/main/java/com/algolia/api/InsightsClient.java @@ -472,7 +488,7 @@ runs: - name: Restore built Java abtesting client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | clients/algoliasearch-client-java-2/algoliasearch-core/src/main/java/com/algolia/api/AbtestingClient.java @@ -487,7 +503,7 @@ runs: - name: Restore built Java query-suggestions client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | clients/algoliasearch-client-java-2/algoliasearch-core/src/main/java/com/algolia/api/QuerySuggestionsClient.java @@ -502,7 +518,7 @@ runs: - name: Restore built Java predict client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | clients/algoliasearch-client-java-2/algoliasearch-core/src/main/java/com/algolia/api/PredictClient.java @@ -518,7 +534,7 @@ runs: # Restore PHP clients: used during 'cts' or 'codegen' - name: Restore built PHP search client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | clients/algoliasearch-client-php/lib/Api/SearchClient.php @@ -533,7 +549,7 @@ runs: - name: Restore built PHP recommend client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | clients/algoliasearch-client-php/lib/Api/RecommendClient.php @@ -548,7 +564,7 @@ runs: - name: Restore built PHP personalization client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | clients/algoliasearch-client-php/lib/Api/PersonalizationClient.php @@ -563,7 +579,7 @@ runs: - name: Restore built PHP analytics client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | clients/algoliasearch-client-php/lib/Api/AnalyticsClient.php @@ -578,7 +594,7 @@ runs: - name: Restore built PHP insights client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | clients/algoliasearch-client-php/lib/Api/InsightsClient.php @@ -593,7 +609,7 @@ runs: - name: Restore built PHP abtesting client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | clients/algoliasearch-client-php/lib/Api/AbtestingClient.php @@ -608,7 +624,7 @@ runs: - name: Restore built PHP query-suggestions client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | clients/algoliasearch-client-php/lib/Api/QuerySuggestionsClient.php diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index 1fc0bb4cb90..647a4eab9c1 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -17,6 +17,12 @@ runs: shell: bash run: echo "CACHE_VERSION=$(< .github/.cache_version)" >> $GITHUB_ENV + - name: Install Node + uses: actions/setup-node@v2 + with: + node-version-file: .nvmrc + cache: yarn + - name: Install Java if: inputs.type != 'minimal' uses: actions/setup-java@v2 @@ -29,13 +35,8 @@ runs: if: inputs.type != 'minimal' uses: gradle/wrapper-validation-action@v1 - - name: Install Node - uses: actions/setup-node@v2 - with: - node-version-file: .nvmrc - cache: yarn - - name: Run yarn install and install java formatter + if: inputs.type != 'minimal' uses: ./.github/actions/cache with: language: java @@ -61,7 +62,11 @@ runs: id: spec-matrix shell: bash run: | - base_changed=${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 || steps.diff.outputs.COMMON_SPECS_CHANGED > 0 }} + base_changed=${{ + steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || + steps.diff.outputs.SCRIPTS_CHANGED > 0 || + steps.diff.outputs.COMMON_SPECS_CHANGED > 0 + }} matrix=$(yarn workspace scripts createMatrix $base_changed ${{ steps.diff.outputs.ORIGIN_BRANCH }}) @@ -82,7 +87,13 @@ runs: id: js-matrix shell: bash run: | - base_changed=${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.COMMON_SPECS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 || steps.diff.outputs.GENERATORS_CHANGED > 0 || steps.diff.outputs.JS_TEMPLATE_CHANGED > 0 || steps.diff.outputs.JS_COMMON_CHANGED > 0 }} + base_changed=${{ + steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || + steps.diff.outputs.COMMON_SPECS_CHANGED > 0 || + steps.diff.outputs.SCRIPTS_CHANGED > 0 || + steps.diff.outputs.GENERATORS_CHANGED > 0 || + steps.diff.outputs.JS_TEMPLATE_CHANGED > 0 || + steps.diff.outputs.JS_COMMON_CHANGED > 0 }} algoliasearch_changed=${{ steps.diff.outputs.JS_ALGOLIASEARCH_CHANGED > 0 }} common_changed=${{ steps.diff.outputs.JS_COMMON_CHANGED > 0 }} @@ -115,7 +126,12 @@ runs: id: java-matrix shell: bash run: | - base_changed=${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.COMMON_SPECS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 || steps.diff.outputs.GENERATORS_CHANGED > 0 || steps.diff.outputs.JAVA_TEMPLATE_CHANGED > 0 }} + base_changed=${{ + steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || + steps.diff.outputs.COMMON_SPECS_CHANGED > 0 || + steps.diff.outputs.SCRIPTS_CHANGED > 0 || + steps.diff.outputs.GENERATORS_CHANGED > 0 || + steps.diff.outputs.JAVA_TEMPLATE_CHANGED > 0 }} matrix=$(yarn workspace scripts createMatrix $base_changed ${{ steps.diff.outputs.ORIGIN_BRANCH }} java) @@ -136,7 +152,12 @@ runs: id: php-matrix shell: bash run: | - base_changed=${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.COMMON_SPECS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 || steps.diff.outputs.GENERATORS_CHANGED > 0 || steps.diff.outputs.PHP_TEMPLATE_CHANGED > 0 }} + base_changed=${{ + steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || + steps.diff.outputs.COMMON_SPECS_CHANGED > 0 || + steps.diff.outputs.SCRIPTS_CHANGED > 0 || + steps.diff.outputs.GENERATORS_CHANGED > 0 || + steps.diff.outputs.PHP_TEMPLATE_CHANGED > 0 }} matrix=$(yarn workspace scripts createMatrix $base_changed ${{ steps.diff.outputs.ORIGIN_BRANCH }} php) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 07b4456492a..0e30d341255 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -101,7 +101,7 @@ jobs: - name: Cache '${{ matrix.client.name }}' bundled specs id: cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ${{ format('specs/bundled/{0}.yml', matrix.client.name) }} key: | @@ -136,7 +136,7 @@ jobs: - name: Cache '${{ matrix.client }}' client id: cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: clients/algoliasearch-client-javascript/packages/${{ matrix.client }} key: | @@ -171,11 +171,12 @@ jobs: with: job: client language: javascript + spec: ${{ matrix.client.name }} cache_hash: ${{ needs.setup.outputs.CACHE_COMMON_HASH }} - name: Cache '${{ matrix.client.name }}' client id: cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ${{ matrix.client.path }} key: | @@ -223,11 +224,12 @@ jobs: with: job: client language: java + spec: ${{ matrix.client.name }} cache_hash: ${{ needs.setup.outputs.CACHE_COMMON_HASH }} - name: Cache '${{ matrix.client.name }}' client id: cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | ${{ format('{0}/algoliasearch-core/src/main/java/com/algolia/api/{1}.java', matrix.client.path, matrix.client.api) }} @@ -273,11 +275,12 @@ jobs: with: job: client language: php + spec: ${{ matrix.client.name }} cache_hash: ${{ needs.setup.outputs.CACHE_COMMON_HASH }} - name: Cache '${{ matrix.client.name }}' client id: cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | ${{ format('{0}/lib/Api/{1}.php', matrix.client.path, matrix.client.api) }} @@ -325,7 +328,7 @@ jobs: - name: Cache 'algoliasearch' client id: cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: clients/algoliasearch-client-javascript/packages/algoliasearch key: | diff --git a/website/docs/automation/add-new-api-client.md b/website/docs/automation/add-new-api-client.md index 2120d16df7a..56bbd5a1f63 100644 --- a/website/docs/automation/add-new-api-client.md +++ b/website/docs/automation/add-new-api-client.md @@ -74,7 +74,7 @@ You can copy [an existing client caching step](https://github.com/algolia/api-cl ```yaml - name: Restore built client if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }} - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: key: |