diff --git a/.github/workflows/run_jcb_basic_testing.yaml b/.github/workflows/run_jcb_basic_testing.yaml new file mode 100644 index 0000000..7305d7e --- /dev/null +++ b/.github/workflows/run_jcb_basic_testing.yaml @@ -0,0 +1,77 @@ +name: Run JCB client testing with client changes + +on: + push: + branches: + - develop + pull_request: + types: + - opened + - synchronize + - reopened + +jobs: + + jcb_integration_tests: + + runs-on: ubuntu-latest + name: JCB Client Integration Tests + + env: + JCB_REPO: https://github.com/NOAA-EMC/jcb.git + + steps: + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + + - name: Add repo url to the environment + run: | + JCB_ALGO_REPO="${{ github.repository }}" + echo "JCB_ALGO_REPO=${JCB_ALGO_REPO}" >> $GITHUB_ENV + + - name: Determine the name of the client branch + run: | + if [ "${{ github.event_name }}" == "pull_request" ]; then + JCB_ALGO_BRANCH=${{ github.head_ref }} + else + BRANCH_REF=${{ github.ref }} + JCB_ALGO_BRANCH=${BRANCH_REF#refs/heads/} + fi + echo "JCB_ALGO_BRANCH=$JCB_ALGO_BRANCH" >> $GITHUB_ENV + + - name: Determine branch to use for main jcb repo + run: | + BRANCH_NAME=${{ env.JCB_ALGO_BRANCH }} + if git ls-remote --heads $JCB_REPO $BRANCH_NAME | grep -q "refs/heads/$BRANCH_NAME"; then + echo "Branch $BRANCH_NAME exists in jcb repo." + echo "JCB_BRANCH=$BRANCH_NAME" >> $GITHUB_ENV + else + echo "Branch $BRANCH_NAME does not exist in jcb repo. Using develop branch." + echo "JCB_BRANCH=develop" >> $GITHUB_ENV + fi + + - name: Clone jcb repository + run: | + mkdir -p empty_hooks + git config --global core.hooksPath empty_hooks + git clone --branch ${{ env.JCB_BRANCH }} --recursive $JCB_REPO jcb_repo + + - name: Clone the clients + run: | + cd jcb_repo + pip install pyyaml + ./jcb_client_init.py + # Note that the above step will take care of checking out the correct branch of the + # algorithm repo and any clients being simultaneously modified. + + - name: Install dependencies + run: | + cd jcb_repo + pip install .[testing] + + - name: Run the JCB client integration tests + run: | + cd jcb_repo/test/client_integration + pytest -v