Skip to content

chore: add shellspec ci #6

chore: add shellspec ci

chore: add shellspec ci #6

Workflow file for this run

name: ShellSpec Test
on:
push:
branches:
- '**'
tags-ignore:
- '**'
env:
BASE_BRANCH: origin/main
jobs:
shellspec-test:
runs-on: ubuntu-latest
steps:
- name: Cancel Previous Runs
if: ${{ github.ref_name != 'main' }}
uses: styfle/[email protected]
env:
GITHUB_TOKEN: ${{ github.token }}
with:
all_but_latest: true
access_token: ${{ env.GITHUB_TOKEN }}
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get base commit id
id: get_base_commit_id
env:
REF_NAME: ${{ github.ref_name }}
run: |
BASE_COMMITID=`bash .github/utils/utils.sh --type 1 \
--branch-name "${{ env.REF_NAME }}" \
--base-branch "${{ env.BASE_BRANCH }}"`
echo "BASE_COMMITID:$BASE_COMMITID"
echo BASE_COMMITID=$BASE_COMMITID >> $GITHUB_ENV
- name: Get file path
id: get_file_path
run: |
FILE_PATH=`git diff --name-only HEAD ${{ env.BASE_COMMITID }}`
echo "FILE_PATH: $FILE_PATH"
SHELL_FILE_PATH=""
for filePath in $(echo "$FILE_PATH"); do
if [[ "${filePath}" == *"addons/"*"/scripts-ut-spec/"* && -f "${filePath}" ]]; then
SHELL_FILE_PATH="${SHELL_FILE_PATH} ${filePath}"
fi
done
echo shell_file_path=$SHELL_FILE_PATH >> $GITHUB_OUTPUT
- name: Install packages
if: ${{ steps.get_file_path.outputs.shell_file_path }}
run: sudo apt-get install -y bash kcov
- name: Install cc-test-reporter
if: ${{ steps.get_file_path.outputs.shell_file_path }}
env:
CC_TEST_REPORTER_URL: https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64
run: |
curl -sSL "$CC_TEST_REPORTER_URL" > ./cc-test-reporter
chmod +x ./cc-test-reporter
./cc-test-reporter before-build
- name: shellspec test
if: ${{ steps.get_file_path.outputs.shell_file_path }}
run: |
make scripts-test
- name: Run shellspec and upload coverage (Coveralls)
if: ${{ steps.get_file_path.outputs.shell_file_path }}
env:
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
run: |
sudo ./shellspec --task fixture:stat:prepare
./shellspec --shell bash --kcov --kcov-options "--coveralls-id=${COVERALLS_REPO_TOKEN}"
- name: Upload coverage (Codecov)
if: ${{ steps.get_file_path.outputs.shell_file_path }}
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
run: |
bash <(curl -s https://codecov.io/bash) -s coverage
- name: Upload coverage (Code Climate)
if: ${{ steps.get_file_path.outputs.shell_file_path }}
env:
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
run: |
./cc-test-reporter format-coverage coverage/cobertura.xml -t cobertura
./cc-test-reporter upload-coverage