# 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. - uses: actions/checkout@v1 # Install Java 11. - uses: actions/setup-java@v1 with: java-version: 11 # Run Gradle build. - run: | chmod +x gradlew ./gradlew build # Run Gradle tests. - run: ./gradlew test # Generate Coverage Report. - run: ./gradlew jacocoTestReport # 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.7' - name: Install dependencies run: | python -m pip install --upgrade pip pip install sphinx sphinx_rtd_theme sphinx-tabs sphinxext-opengraph 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: | ls make linkcheck - 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' 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