Skip to content

Commit c311acb

Browse files
authored
feat(ci): add cache and job skip (#60)
1 parent 84a1041 commit c311acb

File tree

4 files changed

+276
-69
lines changed

4 files changed

+276
-69
lines changed

.github/actions/cache/action.yml

Lines changed: 60 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,76 @@ name: Cache
22

33
description: Restore cached dependencies.
44

5+
inputs:
6+
job:
7+
description: 'The job that requires this composite'
8+
required: true
9+
default: 'cts'
10+
511
runs:
612
using: composite
713
steps:
8-
- name: Get yarn cache directory path
9-
shell: bash
10-
id: yarn-cache-dir-path
11-
run: echo "::set-output name=dir::$(yarn cache dir)"
14+
# restore clients
15+
- name: Restore built JavaScript search client
16+
if: ${{ inputs.job == 'cts' }}
17+
uses: actions/cache@v2
18+
with:
19+
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-javascript/client-search/**
20+
key: ${{ runner.os }}-js-client-search-${{ hashFiles('yarn.lock') }}
1221

13-
- name: Restore yarn cache
22+
- name: Restore built JavaScript recommend client
23+
if: ${{ inputs.job == 'cts' }}
1424
uses: actions/cache@v2
15-
id: yarn-cache
1625
with:
17-
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
18-
key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
26+
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-javascript/recommend/**
27+
key: ${{ runner.os }}-js-client-recommend-${{ hashFiles('yarn.lock') }}
1928

20-
- name: Restore node_modules
29+
- name: Restore built JavaScript personalization client
30+
if: ${{ inputs.job == 'cts' }}
2131
uses: actions/cache@v2
2232
with:
23-
path: '**/node_modules'
24-
key: ${{ runner.os }}-modules-${{ hashFiles('yarn.lock') }}
33+
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-javascript/client-personalization/**
34+
key: ${{ runner.os }}-js-client-personalization-${{ hashFiles('yarn.lock') }}
2535

26-
- name: Restore maven dependencies
36+
- name: Restore built JavaScript analytics client
37+
if: ${{ inputs.job == 'cts' }}
38+
uses: actions/cache@v2
39+
with:
40+
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-javascript/client-analytics/**
41+
key: ${{ runner.os }}-js-client-analytics-${{ hashFiles('yarn.lock') }}
42+
43+
- name: Restore built Java client
44+
if: ${{ inputs.job == 'cts' }}
45+
uses: actions/cache@v2
46+
with:
47+
path: /home/runner/work/api-clients-automation/api-clients-automation/clients/algoliasearch-client-java-2/**
48+
key: ${{ runner.os }}-java-client-${{ hashFiles('**/pom.xml') }}
49+
50+
# setup yarn
51+
- name: Get yarn cache directory path
52+
shell: bash
53+
id: yarn-cache-dir
54+
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
55+
56+
- name: Restore Yarn
57+
uses: actions/cache@v2
58+
with:
59+
path: ${{ steps.yarn-cache-dir.outputs.dir || '/home/runner/work/api-clients-automation/api-clients-automation/.yarn/cache' }}
60+
key: node-cache-${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
61+
62+
- name: Install JavaScript dependencies
63+
shell: bash
64+
run: yarn install
65+
66+
# setup maven
67+
- name: Restore Maven
68+
if: ${{ inputs.job == 'java' }}
2769
uses: actions/cache@v2
2870
with:
2971
path: ~/.m2/repository
30-
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
72+
key: setup-java-${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
73+
74+
- name: Install Maven dependencies
75+
if: ${{ inputs.job == 'java' }}
76+
shell: bash
77+
run: mvn clean install -f clients/algoliasearch-client-java-2/pom.xml

.github/actions/setup/action.yml

Lines changed: 81 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,96 @@ description: Setup CI environment.
55
runs:
66
using: composite
77
steps:
8-
- name: Restore cache
9-
uses: ./.github/actions/cache
10-
11-
- name: Update apt packages
12-
shell: bash
13-
run: sudo apt update
14-
158
- name: Install Java
169
uses: actions/setup-java@v2
1710
with:
1811
distribution: zulu
1912
java-version: 11.0.4
13+
cache: maven
2014

2115
- name: Install Node
2216
uses: actions/setup-node@v2
2317
with:
2418
node-version-file: .nvmrc
19+
cache: yarn
2520

26-
- name: Install JavaScript Dependencies
21+
- name: Restore cache
22+
uses: ./.github/actions/cache
23+
24+
- name: Setting diff outputs variables
25+
id: diff
2726
shell: bash
28-
run: yarn install
27+
run: |
28+
echo "::set-output name=GITHUB_ACTIONS_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- .github/actions .github/workflows | wc -l)"
29+
30+
echo "::set-output name=SPECS_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- specs | wc -l)"
31+
echo "::set-output name=COMMON_SPECS_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- specs/common | wc -l)"
32+
echo "::set-output name=SEARCH_SPECS_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- specs/search | wc -l)"
33+
echo "::set-output name=RECOMMEND_SPECS_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- specs/recommend | wc -l)"
34+
echo "::set-output name=QS_SPECS_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- specs/query_suggestions | wc -l)"
35+
echo "::set-output name=PERSO_SPECS_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- specs/personalization | wc -l)"
36+
echo "::set-output name=INSIGHTS_SPECS_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- specs/insights | wc -l)"
37+
echo "::set-output name=ANALYTICS_SPECS_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- specs/analytics | wc -l)"
38+
echo "::set-output name=AB_SPECS_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- specs/abtesting | wc -l)"
39+
40+
echo "::set-output name=TESTS_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- tests | wc -l)"
41+
42+
echo "::set-output name=SCRIPTS_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- scripts | wc -l)"
43+
44+
echo "::set-output name=JS_CLIENT_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- clients/algoliasearch-client-javascript | wc -l)"
45+
echo "::set-output name=JS_SEARCH_CLIENT_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- clients/algoliasearch-client-javascript/client-search | wc -l)"
46+
echo "::set-output name=JS_RECOMMEND_CLIENT_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- clients/algoliasearch-client-javascript/recommend | wc -l)"
47+
echo "::set-output name=JS_PERSO_CLIENT_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- clients/algoliasearch-client-javascript/client-personalization | wc -l)"
48+
echo "::set-output name=JS_ANALYTICS_CLIENT_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- clients/algoliasearch-client-javascript/client-analytics | wc -l)"
49+
echo "::set-output name=JS_TEMPLATE_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- templates/javascript | wc -l)"
50+
51+
echo "::set-output name=JAVA_CLIENT_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- clients/algoliasearch-client-java-2 | wc -l)"
52+
echo "::set-output name=JAVA_TEMPLATE_CHANGED::$(git diff --shortstat origin/${{ github.base_ref }}..HEAD -- templates/java | wc -l)"
53+
54+
outputs:
55+
# specs variables
56+
RUN_SPECS_SEARCH:
57+
description: 'Determine if the `specs_search` job should run'
58+
value: ${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 || steps.diff.outputs.COMMON_SPECS_CHANGED > 0 || steps.diff.outputs.SEARCH_SPECS_CHANGED > 0 }}
59+
RUN_SPECS_RECOMMEND:
60+
description: 'Determine if the `specs_recommend` job should run'
61+
value: ${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 || steps.diff.outputs.COMMON_SPECS_CHANGED > 0 || steps.diff.outputs.RECOMMEND_SPECS_CHANGED > 0 }}
62+
RUN_SPECS_QS:
63+
description: 'Determine if the `specs_qs` job should run'
64+
value: ${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 || steps.diff.outputs.COMMON_SPECS_CHANGED > 0 || steps.diff.outputs.QS_SPECS_CHANGED > 0 }}
65+
RUN_SPECS_PERSO:
66+
description: 'Determine if the `specs_perso` job should run'
67+
value: ${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 || steps.diff.outputs.COMMON_SPECS_CHANGED > 0 || steps.diff.outputs.PERSO_SPECS_CHANGED > 0 }}
68+
RUN_SPECS_INSIGHTS:
69+
description: 'Determine if the `specs_insights` job should run'
70+
value: ${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 || steps.diff.outputs.COMMON_SPECS_CHANGED > 0 || steps.diff.outputs.INSIGHTS_SPECS_CHANGED > 0 }}
71+
RUN_SPECS_ANALYTICS:
72+
description: 'Determine if the `specs_analytics` job should run'
73+
value: ${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 || steps.diff.outputs.COMMON_SPECS_CHANGED > 0 || steps.diff.outputs.ANALYTICS_SPECS_CHANGED > 0 }}
74+
RUN_SPECS_AB:
75+
description: 'Determine if the `specs_ab` job should run'
76+
value: ${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 || steps.diff.outputs.COMMON_SPECS_CHANGED > 0 || steps.diff.outputs.AB_SPECS_CHANGED > 0 }}
77+
78+
# js client variables
79+
RUN_JS_CLIENT_SEARCH:
80+
description: 'Determine if the `client_javascript_search` job should run'
81+
value: ${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.COMMON_SPECS_CHANGED > 0 || steps.diff.outputs.SEARCH_SPECS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 || steps.diff.outputs.JS_SEARCH_CLIENT_CHANGED > 0 || steps.diff.outputs.JS_TEMPLATE_CHANGED > 0 }}
82+
RUN_JS_CLIENT_RECOMMEND:
83+
description: 'Determine if the `client_javascript_recommend` job should run'
84+
value: ${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.COMMON_SPECS_CHANGED > 0 || steps.diff.outputs.RECOMMEND_SPECS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 || steps.diff.outputs.JS_RECOMMEND_CLIENT_CHANGED > 0 || steps.diff.outputs.JS_TEMPLATE_CHANGED > 0 }}
85+
RUN_JS_CLIENT_PERSO:
86+
description: 'Determine if the `client_javascript_perso` job should run'
87+
value: ${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.COMMON_SPECS_CHANGED > 0 || steps.diff.outputs.PERSO_SPECS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 || steps.diff.outputs.JS_PERSO_CLIENT_CHANGED > 0 || steps.diff.outputs.JS_TEMPLATE_CHANGED > 0 }}
88+
RUN_JS_CLIENT_ANALYTICS:
89+
description: 'Determine if the `client_javascript_analytics` job should run'
90+
value: ${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.COMMON_SPECS_CHANGED > 0 || steps.diff.outputs.ANALYTICS_SPECS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 || steps.diff.outputs.JS_ANALYTICS_CLIENT_CHANGED > 0 || steps.diff.outputs.JS_TEMPLATE_CHANGED > 0 }}
91+
92+
# java client variables
93+
RUN_JAVA_CLIENT:
94+
description: 'Determine if the `client_java_*` job should run'
95+
value: ${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.COMMON_SPECS_CHANGED > 0 || steps.diff.outputs.SEARCH_SPECS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 || steps.diff.outputs.JAVA_CLIENT_CHANGED > 0 || steps.diff.outputs.JAVA_TEMPLATE_CHANGED > 0 }}
96+
97+
# cts variables
98+
RUN_CTS:
99+
description: 'Determine if the `cts` job should run'
100+
value: ${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.SPECS_CHANGED > 0 || steps.diff.outputs.CTS_CHANGED > 0 || steps.diff.outputs.JS_CLIENT_CHANGED > 0 || steps.diff.outputs.JS_TEMPLATE_CHANGED > 0 || steps.diff.outputs.JAVA_CLIENT_CHANGED > 0 || steps.diff.outputs.JAVA_TEMPLATE_CHANGED > 0 }}

0 commit comments

Comments
 (0)