Unverified Commit 37ca465d authored by Watson, Gregory's avatar Watson, Gregory Committed by GitHub
Browse files

Create build-test.yml

parent 53f1c171
Loading
Loading
Loading
Loading
Loading
+100 −0
Original line number Diff line number Diff line
name: Build and Test

on:
  workflow_dispatch:
  #push:
     #branches:
  
concurrency:
  group: "${{ github.ref }}"
  cancel-in-progress: true
  
env:
  NDIP_DOCKER_USER: "${{ secrets.NDIP_DOCKER_USER }}"
  NDIP_DOCKER_PASSWORD: "${{ secrets.NDIP_DOCKER_PASSWORD }}"
  NDIP_DOCKER_REPOSITORY: "${{ secrets.NDIP_DOCKER_REPOSITORY }}"
  
jobs:
  lint-check:
    runs-on: ubuntu-latest
    timeout-minutes: 60
    env:
      GIT_STRATEGY: clone
      IMAGE_NAME: "${NDIP_DOCKER_REPOSITORY}/${{ github.repository }}"
    steps:
    - uses: actions/checkout@v4.1.0
      with:
        fetch-depth: 20
        lfs: true
    - run: curl https://code.ornl.gov/rse-deployment/rse-sharables/raw/master/rse-bash-modules.sh -O
    - run: source rse-bash-modules.sh
    - run: func_rse_docker_cleanup
    - run: docker login -u $NDIP_DOCKER_USER -p $NDIP_DOCKER_PASSWORD $NDIP_DOCKER_REPOSITORY
    - run: export VERSION=$(cat pyproject.toml | grep "version =" | head -n 1 | awk '{ print $3 }' | tr -d '"')
    - run: docker build -f dockerfiles/Dockerfile --target source -t image .
    - run: docker run -u `id -u`:`id -g` image poetry run ruff check
    - run: docker run -u `id -u`:`id -g` image poetry run ruff format --check
    - run: docker run -u `id -u`:`id -g` image poetry run mypy .
    - run: docker tag image ${IMAGE_NAME}:src-${{ github.sha }}
    - run: docker push ${IMAGE_NAME}:src-${{ github.sha }}
    - run: curl https://code.ornl.gov/rse-deployment/rse-sharables/raw/master/rse-bash-modules.sh -O
      if: always()
    - run: source rse-bash-modules.sh
      if: always()
    - run: func_rse_docker_cleanup
      if: always()
      
  unit-tests:
    needs: lint-check
    runs-on: ubuntu-latest
    timeout-minutes: 60
    env:
      GIT_STRATEGY: clone
      IMAGE_NAME: "${NDIP_DOCKER_REPOSITORY}/${{ github.repository }}"
    steps:
    - uses: actions/checkout@v4.1.0
      with:
        fetch-depth: 20
        lfs: true
    - run: curl https://code.ornl.gov/rse-deployment/rse-sharables/raw/master/rse-bash-modules.sh -O
    - run: source rse-bash-modules.sh
    - run: func_rse_docker_cleanup
    - run: docker login -u $NDIP_DOCKER_USER -p $NDIP_DOCKER_PASSWORD $NDIP_DOCKER_REPOSITORY
    - run: export VERSION=$(cat pyproject.toml | grep "version =" | head -n 1 | awk '{ print $3 }' | tr -d '"')
    - run: mkdir reports
    - run: docker run -u `id -u`:`id -g` -v `pwd`/reports:/src/reports ${IMAGE_NAME}:src-${{ github.sha }} poetry run coverage run
    - run: docker run -u `id -u`:`id -g` -v `pwd`/reports:/src/reports ${IMAGE_NAME}:src-${{ github.sha }} poetry run coverage report
    - run: docker run -u `id -u`:`id -g` -v `pwd`/reports:/src/reports ${IMAGE_NAME}:src-${{ github.sha }} poetry run coverage xml -o reports/coverage.xml
    - run: sed -i "s:<source>/src:<source>${{ github.workspace }}/${{ github.repository }}:" reports/coverage.xml
    # need to figure out coverage rules
    - run: curl https://code.ornl.gov/rse-deployment/rse-sharables/raw/master/rse-bash-modules.sh -O
      if: always()
    - run: source rse-bash-modules.sh
      if: always()
    - run: func_rse_docker_cleanup
      if: always()

  docs-test:
    needs: lint-check
    runs-on: ubuntu-latest
    timeout-minutes: 60
    env:
      GIT_STRATEGY: clone
      IMAGE_NAME: "${NDIP_DOCKER_REPOSITORY}/${{ github.repository }}"
    steps:
    - uses: actions/checkout@v4.1.0
      with:
        fetch-depth: 20
        lfs: true
    - run: curl https://code.ornl.gov/rse-deployment/rse-sharables/raw/master/rse-bash-modules.sh -O
    - run: source rse-bash-modules.sh
    - run: func_rse_docker_cleanup
    - run: docker login -u $NDIP_DOCKER_USER -p $NDIP_DOCKER_PASSWORD $NDIP_DOCKER_REPOSITORY
    - run: export VERSION=$(cat pyproject.toml | grep "version =" | head -n 1 | awk '{ print $3 }' | tr -d '"')
    - run: docker run -u `id -u`:`id -g` ${IMAGE_NAME}:src-${{ github.sha }} bash build_docs.sh
    - run: curl https://code.ornl.gov/rse-deployment/rse-sharables/raw/master/rse-bash-modules.sh -O
      if: always()
    - run: source rse-bash-modules.sh
      if: always()
    - run: func_rse_docker_cleanup
      if: always()