EE2 debug build #19
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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_APP_REPO="${{ github.repository }}" | |
| echo "JCB_APP_REPO=${JCB_APP_REPO}" >> $GITHUB_ENV | |
| - name: Determine the name of the client branch | |
| run: | | |
| if [ "${{ github.event_name }}" == "pull_request" ]; then | |
| JCB_APP_BRANCH=${{ github.head_ref }} | |
| else | |
| BRANCH_REF=${{ github.ref }} | |
| JCB_APP_BRANCH=${BRANCH_REF#refs/heads/} | |
| fi | |
| echo "JCB_APP_BRANCH=$JCB_APP_BRANCH" >> $GITHUB_ENV | |
| - name: Determine branch to use for main jcb repo | |
| run: | | |
| BRANCH_NAME=${{ env.JCB_APP_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: Check for the branch name in the jcb-algorithms repo (if not develop) | |
| run: | | |
| BRANCH_NAME=${{ env.JCB_APP_BRANCH }} | |
| # If branch name is develop then we don't need to check the jcb-algorithms repo. | |
| if [ "$BRANCH_NAME" == "develop" ]; then | |
| echo "JCB_ALGO_BRANCH=develop" >> $GITHUB_ENV | |
| exit 0 | |
| fi | |
| # If the branch is not develop then check the jcb-algorithms repo. | |
| if git ls-remote --heads https://github.com/NOAA-EMC/jcb-algorithms.git $BRANCH_NAME | grep -q "refs/heads/$BRANCH_NAME"; then | |
| echo "Branch $BRANCH_NAME exists in jcb-algorithms repo." | |
| echo "JCB_ALGO_BRANCH=$BRANCH_NAME" >> $GITHUB_ENV | |
| # If the branch exists in jcb-algorithms repo but JCB_BRANCH is develop then we need to | |
| # throw an error. This is not a safe situation. The developer should create a branch in | |
| # the main jcb repo with the same name as the branch in the jcb-application repo. | |
| # If there were branches in other apps to account for the changes in the algorithm repo | |
| # they could not be tested here since the scipt is not clever enough to check for | |
| # the existence of the branch being tested here in all the clients. The safest thing to do | |
| # is simply create a branch with the same name (even if empty) in the main jcb repo. This | |
| # will ensure the branches of the other applications are checked out by the init script. | |
| if [ "${{ env.JCB_BRANCH }}" == "develop" ]; then | |
| echo "Branch $BRANCH_NAME exists in jcb-algorithms repo but not in the main jcb repo. " | |
| echo "Please create a branch with the same name (even if empty with no PR) in the main " | |
| echo "jcb repo. This ensures safely checking all the clients that depend on the " | |
| echo "jcb and jcb-algorithms repos with the changes being proposed." | |
| exit 1 | |
| fi | |
| 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: Create custom jcb_clients.yaml for isolated testing | |
| run: | | |
| cd jcb_repo | |
| # Create a custom jcb_clients.yaml that only includes the current repository | |
| cat > jcb_clients.yaml << EOF | |
| gdas: | |
| git_url: noaa-emc/gdasapp | |
| git_ref: develop | |
| app_subdir: parm/jcb-gdas | |
| EOF | |
| - name: Clone the clients | |
| run: | | |
| cd jcb_repo | |
| pip install pyyaml | |
| ./jcb_client_init.py | |
| - 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 |