| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to You under the Apache License, Version 2.0 |
| # (the "License"); you may not use this file except in compliance with |
| # the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| --- |
| name: CI |
| on: |
| push: |
| branches-ignore: [ 'dependabot/**' ] |
| pull_request: |
| types: [ opened, synchronize, reopened ] |
| |
| jobs: |
| single-commit: |
| name: Single Commit Pull Request |
| if: github.event_name == 'pull_request' |
| runs-on: ubuntu-20.04 |
| steps: |
| - name: Check Single Commit |
| uses: actions/github-script@v7.0.1 |
| with: |
| script: | |
| const commits = await github.rest.pulls.listCommits({ |
| ...context.repo, |
| pull_number: context.issue.number, |
| }); |
| core.info("Number of commits in this pull request: " + commits.data.length); |
| if (commits.data.length > 1) { |
| core.setFailed("If approved with two +1's, squash this pull request into one commit"); |
| } |
| |
| code-format: |
| name: TypeScript/Scala/Svelte Formatting |
| strategy: |
| matrix: |
| java_distribution: [ temurin ] |
| java_version: [ 8 ] |
| os: [ ubuntu-20.04 ] |
| node: [ '18' ] |
| runs-on: ${{ matrix.os }} |
| defaults: |
| run: |
| shell: bash |
| env: |
| SBT: sbt -J-Xms1024m -J-Xmx5120m -J-XX:ReservedCodeCacheSize=512m -J-XX:MaxMetaspaceSize=1024m ++2.12.15 |
| steps: |
| ############################################################ |
| # Setup |
| ############################################################ |
| |
| - name: Check out Repository |
| uses: actions/checkout@v4.2.2 |
| |
| - name: Setup Java |
| uses: actions/setup-java@v4.6.0 |
| with: |
| distribution: ${{ matrix.java_distribution }} |
| java-version: ${{ matrix.java_version }} |
| |
| - name: Install Node.js |
| uses: actions/setup-node@v4.1.0 |
| with: |
| node-version: ${{ matrix.node }} |
| |
| ############################################################ |
| # Lint/format checks |
| ############################################################ |
| |
| - name: Scala format check |
| run: $SBT scalafmtCheck |
| |
| - name: Scala sbt format check |
| run: $SBT scalafmtSbtCheck |
| |
| - name: Install node dependencies |
| run: yarn install |
| |
| - name: TypeScript lint |
| run: yarn lint |
| |
| rat-check: |
| name: Rat Check |
| strategy: |
| matrix: |
| java_distribution: [ temurin ] |
| java_version: [ 8 ] |
| os: [ ubuntu-20.04 ] |
| runs-on: ${{ matrix.os }} |
| defaults: |
| run: |
| shell: bash |
| env: |
| SBT: sbt -J-Xms1024m -J-Xmx5120m -J-XX:ReservedCodeCacheSize=512m -J-XX:MaxMetaspaceSize=1024m ++2.12.15 |
| steps: |
| ############################################################ |
| # Setup |
| ############################################################ |
| |
| - name: Check out Repository |
| uses: actions/checkout@v4.2.2 |
| with: |
| fetch-depth: 0 |
| |
| - name: Setup Java |
| uses: actions/setup-java@v4.6.0 |
| with: |
| distribution: ${{ matrix.java_distribution }} |
| java-version: ${{ matrix.java_version }} |
| |
| ############################################################ |
| # Rat check |
| ############################################################ |
| |
| - name: Run Rat Check |
| run: $SBT ratCheck || (cat target/rat.txt; exit 1) |
| |
| build-test-package: |
| name: 'Build, Test, and Package (OS: ${{ matrix.os }}, Node: ${{ matrix.node }}, Java: ${{ matrix.java_version }}, VS Code: ${{ matrix.vscode }})' |
| strategy: |
| matrix: |
| java_distribution: [ temurin ] |
| java_version: [ 8, 11, 17 ] |
| os: [ macos-13, ubuntu-20.04, windows-2019 ] |
| node: [ '18.20.1' ] |
| vscode: [ '1.82.0', 'stable' ] # v1.82.0 is the first version of VSCode to use Node 18 |
| fail-fast: false # don't immediately fail all other jobs if a single job fails |
| runs-on: ${{ matrix.os }} |
| defaults: |
| run: |
| shell: bash |
| env: |
| DAFFODIL_TEST_VSCODE_VERSION: ${{ matrix.vscode }} |
| steps: |
| ############################################################ |
| # Setup |
| ############################################################ |
| |
| - name: Check out Repository |
| uses: actions/checkout@v4.2.2 |
| |
| - name: Setup Java |
| uses: actions/setup-java@v4.6.0 |
| with: |
| distribution: ${{ matrix.java_distribution }} |
| java-version: ${{ matrix.java_version }} |
| |
| - name: Install sbt - macos-13 only |
| run: brew install sbt |
| if: matrix.os == 'macos-13' |
| |
| - name: Install Node.js |
| uses: actions/setup-node@v4.1.0 |
| with: |
| node-version: ${{ matrix.node }} |
| |
| ############################################################ |
| # Build & Package |
| ############################################################ |
| |
| - name: Install node dependencies |
| run: yarn install |
| |
| - name: Runs tests - Linux |
| run: xvfb-run -a yarn test |
| if: runner.os == 'Linux' |
| |
| - name: Runs tests - Windows/Mac |
| run: yarn test |
| if: runner.os != 'Linux' |
| |
| - name: Check for Errors in macOS |
| run: tail -n 1000 '/Users/runner/Library/Application Support/omega_edit/'* && exit 1 |
| if: failure() && runner.os == 'macOS' |
| |
| - name: Package |
| run: yarn package |