diff --git a/.github/workflows/reusable-unit-test.yml b/.github/workflows/reusable-unit-test.yml new file mode 100644 index 0000000..26deb1b --- /dev/null +++ b/.github/workflows/reusable-unit-test.yml @@ -0,0 +1,123 @@ +name: reusable-unit-test +on: + workflow_call: + inputs: + skip-site: + required: false + type: boolean + default: false + node-version: + required: false + type: string + default: '22' + node-version-file: + required: false + type: string + default: '' +jobs: + check: + runs-on: ubuntu-latest + steps: + - uses: TDesignOteam/workflows/actions/check-email@main + + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - uses: actions/setup-node@v4 + with: + node-version: ${{ inputs.node-version }} + node-version-file: ${{ inputs.node-version-file }} + - uses: actions/cache@v4 + env: + cache-name: cache-nodemodules + with: + path: ~/.npm + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package.json') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + ${{ runner.os }}- + - run: npm install + + - run: npm run lint + - run: npm run test + # upload report to codecov + - uses: codecov/codecov-action@v2 + with: + token: ${{ secrets.CODECOV_TOKEN }} + + site: + if: ${{ inputs.skip-site }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - uses: actions/setup-node@v4 + with: + node-version: ${{ inputs.node-version }} + node-version-file: ${{ inputs.node-version-file }} + + - uses: actions/cache@v4 + env: + cache-name: cache-nodemodules + with: + path: ~/.npm + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package.json') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + ${{ runner.os }}- + - run: npm install + + - name: Build site + run: npm run site:preview + + - run: | + zip -r _site.zip _site + + - name: upload _site artifact + uses: actions/upload-artifact@v4 + with: + name: _site + path: _site.zip + retention-days: 5 + + - name: Save PR number + if: ${{ always() }} + run: echo ${{ github.event.number }} > ./pr-id.txt + + - name: Upload PR number + if: ${{ always() }} + uses: actions/upload-artifact@v4 + with: + name: pr + path: ./pr-id.txt + + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - uses: actions/setup-node@v4 + with: + node-version: ${{ inputs.node-version }} + node-version-file: ${{ inputs.node-version-file }} + - uses: actions/cache@v4 + env: + cache-name: cache-nodemodules + with: + path: ~/.npm + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package.json') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + ${{ runner.os }}- + - run: npm install + + - name: Build + run: npm run build