# This workflow builds the client (UI), the server, builds the JAR. name: CI # Controls when the action will run. Triggers the workflow on push or pull request # events but only for the master branch on: push: branches: [ master ] pull_request: branches: [ master ] jobs: # This job builds the client (web view). build-client: # Let all steps run within the photon-client dir. defaults: run: working-directory: photon-client # The type of runner that the job will run on. runs-on: ubuntu-latest # Grab the docker container. container: image: docker://node:10 steps: # Checkout code. - uses: actions/checkout@v1 # Setup Node.js - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 10 # Run npm - run: | npm ci npm run build --if-present # Upload client artifact. - uses: actions/upload-artifact@master with: name: built-client path: photon-client/dist/ build-server: # Let all steps run within the photon-server dir. defaults: run: working-directory: photon-server # The type of runner that the job will run on. runs-on: ubuntu-latest steps: # Checkout code. - name: Checkout code uses: actions/checkout@v1 # Install Java 11. - name: Install Java 11 uses: actions/setup-java@v1 with: java-version: 11 # Run Gradle build. - name: Gradle Build run: | chmod +x gradlew ./gradlew build -x check # Run Tests Generate Coverage Report. - name: Gradle Test and Coverage run: ./gradlew jacocoTestReport # Publish Coverage Report. - name: Publish Coverage Report uses: codecov/codecov-action@v1 with: file: ./photon-server/build/reports/jacoco/test/jacocoTestReport.xml build-offline-docs: runs-on: ubuntu-latest steps: # Checkout docs. - uses: actions/checkout@v2 with: repository: 'PhotonVision/photonvision-docs.git' ref: master # Install Python. - uses: actions/setup-python@v2 with: python-version: '3.6' - name: Install dependencies run: | python -m pip install --upgrade pip pip install sphinx sphinx_rtd_theme sphinx-tabs sphinxext-opengraph doc8 pip install -r requirements.txt - name: Install LaTeX and other system dependencies run: sudo apt install -y texlive-latex-recommended texlive-fonts-recommended texlive-latex-extra latexmk texlive-lang-greek texlive-luatex texlive-xetex texlive-fonts-extra dvipng graphviz - name: Check the docs run: | make linkcheck make lint - name: Build the docs run: | make html # Upload docs artifact. - uses: actions/upload-artifact@master with: name: built-docs path: build/html build-package: needs: [build-client, build-server, build-offline-docs] # Let all steps run within the photon-server dir. defaults: run: working-directory: photon-server # The type of runner that the job will run on. runs-on: ubuntu-latest steps: # Checkout code. - uses: actions/checkout@v1 # Install Java 11. - uses: actions/setup-java@v1 with: java-version: 11 # Clear any existing web resources. - run: | rm -rf src/main/resources/web/* mkdir -p src/main/resources/web/docs # Download client artifact to resources folder. - uses: actions/download-artifact@v2 with: name: built-client path: photon-server/src/main/resources/web/ # Download docs artifact to resources folder. - uses: actions/download-artifact@v2 with: name: built-docs path: photon-server/src/main/resources/web/docs # Print folder contents. - run: ls working-directory: photon-server/src/main/resources/web/ # Build fat jar. - run: | chmod +x gradlew ./gradlew shadowJar working-directory: photon-server # Upload final fat jar as artifact. - uses: actions/upload-artifact@master with: name: jar path: photon-server/build/libs - uses: eine/tip@master with: token: ${{ secrets.GITHUB_TOKEN }} tag: 'Dev' rm: true files: | photon-server/build/libs/*.jar if: github.event_name == 'push' check-lint: # Let all steps run within the photon-server dir. defaults: run: working-directory: photon-server # The type of runner that the job will run on. runs-on: ubuntu-latest steps: # Checkout code. - uses: actions/checkout@v1 # Install Java 11. - uses: actions/setup-java@v1 with: java-version: 11 # Check server code with Spotless. - run: | chmod +x gradlew ./gradlew spotlessCheck