diff --git a/.github/.cache_version b/.github/.cache_version index 00750edc07d..aaac2c578ce 100644 --- a/.github/.cache_version +++ b/.github/.cache_version @@ -1 +1 @@ -3 +3-test-91 diff --git a/.github/actions/cache/action.yml b/.github/actions/cache/action.yml index 2c21fbc547d..1d189860cd6 100644 --- a/.github/actions/cache/action.yml +++ b/.github/actions/cache/action.yml @@ -29,10 +29,6 @@ runs: 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' }} @@ -157,8 +153,7 @@ runs: key: | ${{ env.CACHE_VERSION }}-${{ hashFiles( - 'clients/algoliasearch-client-javascript/packages/client-common/**', - '!clients/algoliasearch-client-javascript/packages/client-common/dist' + 'clients/algoliasearch-client-javascript/packages/client-common/**' )}} - name: Restore built JavaScript node requester @@ -169,8 +164,7 @@ runs: key: | ${{ env.CACHE_VERSION }}-${{ hashFiles( - 'clients/algoliasearch-client-javascript/packages/requester-node-http/**', - '!clients/algoliasearch-client-javascript/packages/requester-node-http/dist' + 'clients/algoliasearch-client-javascript/packages/requester-node-http/**' )}} - name: Restore built JavaScript browser requester @@ -181,8 +175,7 @@ runs: key: | ${{ env.CACHE_VERSION }}-${{ hashFiles( - 'clients/algoliasearch-client-javascript/packages/requester-browser-xhr/**', - '!clients/algoliasearch-client-javascript/packages/requester-browser-xhr/dist' + 'clients/algoliasearch-client-javascript/packages/requester-browser-xhr/**' )}} # Restore JavaScript clients: used during 'cts' or 'codegen' @@ -195,7 +188,10 @@ runs: ${{ env.CACHE_VERSION }}-${{ hashFiles( 'clients/algoliasearch-client-javascript/packages/algoliasearch/**', - '!clients/algoliasearch-client-javascript/packages/algoliasearch/dist' + 'clients/algoliasearch-client-javascript/packages/client-search/**', + 'clients/algoliasearch-client-javascript/packages/client-analytics/**', + 'clients/algoliasearch-client-javascript/packages/client-personalization/**', + 'templates/javascript/**' )}} - name: Restore built JavaScript search client @@ -206,9 +202,12 @@ runs: key: | ${{ env.CACHE_VERSION }}-${{ hashFiles( - 'clients/algoliasearch-client-javascript/packages/client-search/**', - '!clients/algoliasearch-client-javascript/packages/client-search/dist', - 'specs/bundled/search.yml' + 'clients/algoliasearch-client-javascript/packages/client-search/src/**', + 'clients/algoliasearch-client-javascript/packages/client-search/model/**', + 'clients/algoliasearch-client-javascript/packages/client-search/builds/**', + 'clients/algoliasearch-client-javascript/packages/client-search/package.json', + 'specs/bundled/search.yml', + 'templates/javascript/**' )}} - name: Restore built JavaScript recommend client @@ -219,9 +218,12 @@ runs: key: | ${{ env.CACHE_VERSION }}-${{ hashFiles( - 'clients/algoliasearch-client-javascript/packages/recommend/**', - '!clients/algoliasearch-client-javascript/packages/recommend/dist', - 'specs/bundled/recommend.yml' + 'clients/algoliasearch-client-javascript/packages/recommend/src/**', + 'clients/algoliasearch-client-javascript/packages/recommend/model/**', + 'clients/algoliasearch-client-javascript/packages/recommend/builds/**', + 'clients/algoliasearch-client-javascript/packages/recommend/package.json', + 'specs/bundled/recommend.yml', + 'templates/javascript/**' )}} - name: Restore built JavaScript query-suggestions client @@ -232,9 +234,12 @@ runs: 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' + 'clients/algoliasearch-client-javascript/packages/client-query-suggestions/src/**', + 'clients/algoliasearch-client-javascript/packages/client-query-suggestions/model/**', + 'clients/algoliasearch-client-javascript/packages/client-query-suggestions/builds/**', + 'clients/algoliasearch-client-javascript/packages/client-query-suggestions/package.json', + 'specs/bundled/query-suggestions.yml', + 'templates/javascript/**' )}} - name: Restore built JavaScript personalization client @@ -245,9 +250,12 @@ runs: key: | ${{ env.CACHE_VERSION }}-${{ hashFiles( - 'clients/algoliasearch-client-javascript/packages/client-personalization/**', - '!clients/algoliasearch-client-javascript/packages/client-personalization/dist', - 'specs/bundled/personalization.yml' + 'clients/algoliasearch-client-javascript/packages/client-personalization/src/**', + 'clients/algoliasearch-client-javascript/packages/client-personalization/model/**', + 'clients/algoliasearch-client-javascript/packages/client-personalization/builds/**', + 'clients/algoliasearch-client-javascript/packages/client-personalization/package.json', + 'specs/bundled/personalization.yml', + 'templates/javascript/**' )}} - name: Restore built JavaScript analytics client @@ -258,9 +266,12 @@ runs: key: | ${{ env.CACHE_VERSION }}-${{ hashFiles( - 'clients/algoliasearch-client-javascript/packages/client-analytics/**', - '!clients/algoliasearch-client-javascript/packages/client-analytics/dist', - 'specs/bundled/analytics.yml' + 'clients/algoliasearch-client-javascript/packages/client-analytics/src/**', + 'clients/algoliasearch-client-javascript/packages/client-analytics/model/**', + 'clients/algoliasearch-client-javascript/packages/client-analytics/builds/**', + 'clients/algoliasearch-client-javascript/packages/client-analytics/package.json', + 'specs/bundled/analytics.yml', + 'templates/javascript/**' )}} - name: Restore built JavaScript abtesting client @@ -271,9 +282,12 @@ runs: key: | ${{ env.CACHE_VERSION }}-${{ hashFiles( - 'clients/algoliasearch-client-javascript/packages/client-abtesting/**', - '!clients/algoliasearch-client-javascript/packages/client-abtesting/dist', - 'specs/bundled/abtesting.yml' + 'clients/algoliasearch-client-javascript/packages/client-abtesting/src/**', + 'clients/algoliasearch-client-javascript/packages/client-abtesting/model/**', + 'clients/algoliasearch-client-javascript/packages/client-abtesting/builds/**', + 'clients/algoliasearch-client-javascript/packages/client-abtesting/package.json', + 'specs/bundled/abtesting.yml', + 'templates/javascript/**' )}} - name: Restore built JavaScript insights client @@ -284,9 +298,12 @@ runs: key: | ${{ env.CACHE_VERSION }}-${{ hashFiles( - 'clients/algoliasearch-client-javascript/packages/client-insights/**', - '!clients/algoliasearch-client-javascript/packages/client-insights/dist', - 'specs/bundled/insights.yml' + 'clients/algoliasearch-client-javascript/packages/client-insights/src/**', + 'clients/algoliasearch-client-javascript/packages/client-insights/model/**', + 'clients/algoliasearch-client-javascript/packages/client-insights/builds/**', + 'clients/algoliasearch-client-javascript/packages/client-insights/package.json', + 'specs/bundled/insights.yml', + 'templates/javascript/**' )}} - name: Restore built JavaScript sources client @@ -297,9 +314,12 @@ runs: key: | ${{ env.CACHE_VERSION }}-${{ hashFiles( - 'clients/algoliasearch-client-javascript/packages/client-sources/**', - '!clients/algoliasearch-client-javascript/packages/client-sources/dist', - 'specs/bundled/sources.yml' + 'clients/algoliasearch-client-javascript/packages/client-sources/src/**', + 'clients/algoliasearch-client-javascript/packages/client-sources/model/**', + 'clients/algoliasearch-client-javascript/packages/client-sources/builds/**', + 'clients/algoliasearch-client-javascript/packages/client-sources/package.json', + 'specs/bundled/sources.yml', + 'templates/javascript/**' )}} - name: Restore built JavaScript predict client @@ -310,9 +330,12 @@ runs: key: | ${{ env.CACHE_VERSION }}-${{ hashFiles( - 'clients/algoliasearch-client-javascript/packages/client-predict/**', - '!clients/algoliasearch-client-javascript/packages/client-predict/dist', - 'specs/bundled/predict.yml' + 'clients/algoliasearch-client-javascript/packages/client-predict/src/**', + 'clients/algoliasearch-client-javascript/packages/client-predict/model/**', + 'clients/algoliasearch-client-javascript/packages/client-predict/builds/**', + 'clients/algoliasearch-client-javascript/packages/client-predict/package.json', + 'specs/bundled/predict.yml', + 'templates/javascript/**' )}} # Restore Java clients: used during 'cts' or 'codegen' @@ -324,8 +347,8 @@ runs: key: | ${{ env.CACHE_VERSION }}-${{ hashFiles( - 'clients/algoliasearch-client-java-2/**', '!clients/algoliasearch-client-java-2/target', + 'clients/algoliasearch-client-java-2/**', 'specs/bundled/search.yml' )}} @@ -341,3 +364,7 @@ runs: 'clients/algoliasearch-client-php/*', 'specs/bundled/search.yml' )}} + + - name: Install JavaScript dependencies + shell: bash + run: YARN_ENABLE_IMMUTABLE_INSTALLS=false yarn install diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index 2dabeace154..306fc2007a3 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -100,13 +100,8 @@ runs: matrix=$(./scripts/ci/create-client-matrix.sh javascript $base_changed ${{ steps.diff.outputs.ORIGIN_BRANCH }}) if [[ $algoliasearch_changed == 'true' || $base_changed == 'true' ]]; then - algoliasearch_client='{"name": "algoliasearch","folder": "clients/algoliasearch-client-javascript/packages/algoliasearch"}' - - if [[ $matrix == '{"client":["no-run"]}' ]]; then - matrix="{\"client\": [$algoliasearch_client]}" - else - matrix="{\"client\": $(echo $matrix | jq ".client + [$algoliasearch_client]" -c)}" - fi + echo "Running algoliasearch: true" + echo "::set-output name=RUN_ALGOLIASEARCH::true" fi if [[ $matrix == '{"client":["no-run"]}' ]]; then @@ -185,6 +180,10 @@ outputs: description: Determine if the `client-javascript` job should run value: ${{ steps.js-matrix.outputs.RUN_CLIENT }} + RUN_JS_ALGOLIASEARCH: + description: Determine if the `client-javascript-algoliasearch` job should run + value: ${{ steps.js-matrix.outputs.RUN_ALGOLIASEARCH }} + RUN_JS_COMMON: description: Whether to build JS client common folders when RUN_JS is false value: ${{ steps.js-matrix.outputs.RUN_COMMON }} diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index a84ece97d09..8e91af0b58f 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -34,6 +34,7 @@ jobs: SPECS_MATRIX: ${{ steps.setup.outputs.SPECS_MATRIX }} RUN_JS: ${{ steps.setup.outputs.RUN_JS }} + RUN_JS_ALGOLIASEARCH: ${{ steps.setup.outputs.RUN_JS_ALGOLIASEARCH }} RUN_JS_COMMON: ${{ steps.setup.outputs.RUN_JS_COMMON }} JS_MATRIX: ${{ steps.setup.outputs.JS_MATRIX }} @@ -118,8 +119,7 @@ jobs: key: | ${{ env.CACHE_VERSION }}-${{ hashFiles( - format('clients/algoliasearch-client-javascript/packages/{0}/**', matrix.client), - format('!clients/algoliasearch-client-javascript/packages/{0}/dist', matrix.client) + format('clients/algoliasearch-client-javascript/packages/{0}/**', matrix.client) )}} - name: Build '${{ matrix.client }}' client @@ -157,19 +157,63 @@ jobs: key: | ${{ env.CACHE_VERSION }}-${{ hashFiles( - format('{0}/**', matrix.client.folder), - format('!{0}/dist', matrix.client.folder), - format('specs/bundled/{0}.yml', matrix.client.name) + format('{0}/src/**', matrix.client.folder), + format('{0}/model/**', matrix.client.folder), + format('{0}/builds/**', matrix.client.folder), + format('{0}/package.json', matrix.client.folder), + format('specs/bundled/{0}.yml', matrix.client.name), + 'templates/javascript/**' )}} - name: Generate '${{ matrix.client.name }}' client - if: steps.cache.outputs.cache-hit != 'true' && matrix.client.name != 'algoliasearch' + if: steps.cache.outputs.cache-hit != 'true' run: yarn cli generate javascript ${{ matrix.client.name }} - name: Build '${{ matrix.client.name }}' client if: steps.cache.outputs.cache-hit != 'true' run: yarn cli build clients javascript ${{ matrix.client.name }} + - name: Show diff for '${{ matrix.client.name }}' client + if: steps.cache.outputs.cache-hit != 'true' + run: git --no-pager diff + + client_javascript_algoliasearch: + timeout-minutes: 10 + runs-on: ubuntu-20.04 + needs: client_javascript + if: | + always() && + needs.setup.outputs.RUN_JS_ALGOLIASEARCH == 'true' && + contains(needs.client_javascript.result, 'success') && + !contains(needs.client_javascript.result, 'failure') + steps: + - uses: actions/checkout@v2 + + - name: Restore cache + uses: ./.github/actions/cache + with: + job: codegen + language: javascript + + - name: Cache 'algoliasearch' client + id: cache + uses: actions/cache@v2 + with: + path: clients/algoliasearch-client-javascript/packages/algoliasearch + key: | + ${{ env.CACHE_VERSION }}-${{ + hashFiles( + 'clients/algoliasearch-client-javascript/packages/algoliasearch/**', + 'clients/algoliasearch-client-javascript/packages/client-search/**', + 'clients/algoliasearch-client-javascript/packages/client-analytics/**', + 'clients/algoliasearch-client-javascript/packages/client-personalization/**', + 'templates/javascript/**' + )}} + + - name: Build 'algoliasearch' client + if: steps.cache.outputs.cache-hit != 'true' + run: yarn cli build clients javascript algoliasearch + client_java: runs-on: ubuntu-20.04 timeout-minutes: 10 @@ -200,8 +244,8 @@ jobs: key: | ${{ env.CACHE_VERSION }}-${{ hashFiles( - format('{0}/**', matrix.client.folder), format('!{0}/target', matrix.client.folder), + format('{0}/**', matrix.client.folder), format('specs/bundled/{0}.yml', matrix.client.name) )}} @@ -260,6 +304,7 @@ jobs: timeout-minutes: 20 needs: - client_javascript + - client_javascript_algoliasearch - client_java - client_php if: |