diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000..093c99e --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,77 @@ +name: "CodeQL" + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +on: + push: + branches: ["main"] + pull_request: + branches: ["main"] + schedule: + - cron: "36 1 * * 0" + +jobs: + analyze: + name: Analyze (${{ matrix.language }}) + runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} + permissions: + security-events: write + packages: read + + strategy: + fail-fast: false + matrix: + include: + - language: actions + build-mode: none + - language: swift + build-mode: manual + # Only include Swift analysis on scheduled runs + run-swift: ${{ github.event_name == 'schedule' }} + steps: + - name: Checkout repository + uses: actions/checkout@v6 + + - name: Cache Swift Package Manager binaries + if: matrix.language == 'swift' && matrix.run-swift == true + uses: actions/cache@v5 + with: + path: | + ~/.swiftpm + ~/Library/Caches/org.swift.swiftpm + ~/Library/Developer/Xcode/DerivedData + .build + key: ${{ runner.os }}-spm-binaries-${{ hashFiles('Package.swift') }} + restore-keys: | + ${{ runner.os }}-spm-binaries- + + - name: Create missing wrapper directory + if: matrix.language == 'swift' && matrix.run-swift == true + run: | + if [ ! -d "OneSignalLiveActivitiesWrapper" ]; then + mkdir -p OneSignalLiveActivitiesWrapper/include + echo "" > OneSignalLiveActivitiesWrapper/dummy.m + echo "" > OneSignalLiveActivitiesWrapper/include/dummy.h + fi + + - name: Initialize CodeQL + if: matrix.language != 'swift' || matrix.run-swift == true + uses: github/codeql-action/init@v4 + with: + languages: ${{ matrix.language }} + build-mode: ${{ matrix.build-mode }} + + - name: Build Swift Package + if: matrix.language == 'swift' && matrix.run-swift == true + timeout-minutes: 20 + run: | + test -d OneSignalLiveActivitiesWrapper && test -f OneSignalLiveActivitiesWrapper/dummy.m && test -f OneSignalLiveActivitiesWrapper/include/dummy.h || (echo "ERROR: Directory structure invalid!" && exit 1) + swift build --arch arm64 --target OneSignalOutcomesWrapper + + - name: Perform CodeQL Analysis + if: matrix.language != 'swift' || matrix.run-swift == true + uses: github/codeql-action/analyze@v4 + with: + category: "/language:${{matrix.language}}" diff --git a/.gitignore b/.gitignore index 7281196..2ecb60a 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,7 @@ .swiftpm .swiftpm/xcode/xcuserdata xcuserdata -.swiftpm/xcode/package.xcworkspace/xcuserdata \ No newline at end of file +.swiftpm/xcode/package.xcworkspace/xcuserdata +.build +dummy.m +dummy.h \ No newline at end of file