Fixed access to an exception error #7
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: Main Branch Workflow | |
| on: | |
| push: | |
| branches: [ "main" ] | |
| paths-ignore: | |
| - 'README.md' | |
| - 'CODE_OF_CONDUCT.md' | |
| - 'CONTRIBUTING.md' | |
| - 'LICENSE' | |
| - '.github/**' | |
| - 'examples/**' | |
| workflow_dispatch: | |
| jobs: | |
| build-jars: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| - name: Build with Gradle Wrapper | |
| run: ./gradlew build --no-daemon | |
| - name: Extract project name from Gradle | |
| id: extract-name | |
| run: | | |
| PROJECT_NAME=$(./gradlew -q printProjectName --no-daemon) | |
| echo "PROJECT_NAME=${PROJECT_NAME}" >> $GITHUB_ENV | |
| - name: Extract version from Gradle | |
| id: extract-version | |
| run: | | |
| VERSION=$(./gradlew -q printProjectVersion --no-daemon) | |
| echo "VERSION=${VERSION}" >> $GITHUB_ENV | |
| - name: Upload jars | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ env.PROJECT_NAME }}-${{ env.VERSION }}-jars | |
| path: build/libs/*.jar | |
| - name: Upload JaCoCo test report | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ env.PROJECT_NAME }}-${{ env.VERSION }}-test-report | |
| path: build/reports/jacoco/jacocoRootReport/jacocoRootReport.xml | |
| upload-codecov: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - build-jars | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Extract project name from Gradle | |
| id: extract-name | |
| run: | | |
| PROJECT_NAME=$(./gradlew -q printProjectName --no-daemon) | |
| echo "PROJECT_NAME=${PROJECT_NAME}" >> $GITHUB_ENV | |
| - name: Extract version from Gradle | |
| id: extract-version | |
| run: | | |
| VERSION=$(./gradlew -q printProjectVersion --no-daemon) | |
| echo "VERSION=${VERSION}" >> $GITHUB_ENV | |
| - name: Download JaCoCo test report | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ${{ env.PROJECT_NAME }}-${{ env.VERSION }}-test-report | |
| path: artifacts/ | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: ./build/reports/jacoco/test/jacocoTestReport.xml | |
| fail_ci_if_error: true | |
| documentate: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| - name: Documentate with Gradle Wrapper | |
| run: ./gradlew documentate --no-daemon | |
| - name: Deploy to GitHub Pages | |
| uses: peaceiris/actions-gh-pages@v4 | |
| with: | |
| github_token: ${{ secrets.GITHUB_TOKEN }} | |
| publish_dir: ./build/dokka/htmlMultiModule | |
| publish_branch: gh-pages | |
| create-release: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - build-jars | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Extract project name from Gradle | |
| id: extract_name | |
| run: | | |
| PROJECT_NAME=$(./gradlew -q printProjectName) | |
| echo "PROJECT_NAME=${PROJECT_NAME}" >> $GITHUB_ENV | |
| - name: Extract version from Gradle | |
| id: get-version | |
| run: | | |
| VERSION=$(./gradlew -q printProjectVersion) | |
| echo "VERSION=${VERSION}" >> $GITHUB_ENV | |
| - name: Download jars | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ${{ env.PROJECT_NAME }}-${{ env.VERSION }}-jars | |
| path: artifacts/ | |
| - name: Release | |
| uses: softprops/action-gh-release@v2 | |
| if: "!contains(env.VERSION, '-')" | |
| with: | |
| tag_name: ${{ env.VERSION }} | |
| body_path: ./CHANGELOG.md | |
| files: | | |
| artifacts/* | |
| publish: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - create-release | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - name: Checkout source | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '17' | |
| - name: Configure Gradle | |
| uses: gradle/gradle-build-action@v3 | |
| - name: Publish to GitHub Packages | |
| run: ./gradlew publish --no-daemon | |
| env: | |
| PGP_PRIVATE_KEY: ${{ secrets.PGP_PRIVATE_KEY }} | |
| PGP_PRIVATE_KEY_PASSWORD: ${{ secrets.PGP_PRIVATE_KEY_PASSWORD }} | |
| SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} | |
| SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} | |
| GITHUB_REPO: ${{ github.repository }} | |
| GITHUB_USERNAME: ${{ github.actor }} | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| dependency-submission: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| # Generates and submits a dependency graph, enabling Dependabot Alerts for all project dependencies. | |
| # See: https://github.com/gradle/actions/blob/main/dependency-submission/README.md | |
| - name: Generate and submit dependency graph | |
| uses: gradle/actions/dependency-submission@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0 | |
| generate-git-badges: | |
| name: Generate Git Badges | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Output git info | |
| id: git_info | |
| run: | | |
| function format_size { echo $(numfmt --to iec --suffix B $1); } | |
| function format_number { LC_ALL=en_US.UTF-8 printf "%'d\n" $1; } | |
| echo "file_count=$(format_number $(git ls-files | wc -l))" >> $GITHUB_OUTPUT | |
| echo "lines_of_code=$(find . -type f -name "*.kt" -exec wc -l {} + | awk '{s+=$1} END {print s}')" >> $GITHUB_OUTPUT | |
| git gc | |
| echo "size=$(format_size $(($(git count-objects -v | grep 'size-pack: ' | sed 's/size-pack: //g' | tr -d '\n') * 1024)))" >> $GITHUB_OUTPUT | |
| shell: bash | |
| - name: Generate-Badge | |
| uses: likespro/generate-badge@v1 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| filename: | | |
| ( | |
| "git-size" | |
| "git-file-count" | |
| "git-lines-of-code" | |
| ) | |
| label: ("size" "files" "lines-of-code") | |
| message: | | |
| ( | |
| "${{ steps.git_info.outputs.size }}" | |
| "${{ steps.git_info.outputs.file_count }}" | |
| "${{ steps.git_info.outputs.lines_of_code }}" | |
| ) | |
| namedLogo: ("git" "git" "git") | |
| color: ("f1502f" "f1502f" "f1502f") |