diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml new file mode 100644 index 0000000..6af5821 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -0,0 +1,88 @@ +name: Bug Report +description: Create a report to help us improve +body: + - type: textarea + id: description + attributes: + label: Describe the bug + description: A clear and concise description of what the bug is. + validations: + required: true + - type: textarea + id: repro + attributes: + label: Steps To Reproduce + description: How do you trigger this bug? Please walk us through it step by step. + value: | + Steps to reproduce the behavior: + 1. Go to '...' + 2. Click on '....' + 3. Scroll down to '....' + 4. See error + render: dart + validations: + required: true + - type: textarea + id: behavior + attributes: + label: Expected behavior + description: A clear and concise description of what you expected to happen. + validations: + required: true + - type: input + id: clickstream-version + attributes: + label: ClickstreamAnalytic Flutter SDK Version + placeholder: e.g. 1.0.0 + validations: + required: true + - type: input + id: flutter-version + attributes: + label: Flutter version + placeholder: e.g. 3.3.0 + validations: + required: true + - type: input + id: platform + attributes: + label: The platform of the bug + placeholder: | + - e.g. Android/iOS/All + validations: + required: true + - type: textarea + id: logs + attributes: + label: Relevant log output + description: >- + Include any relevant log output + value: | +
+ Log Messages + + ``` + INSERT LOG MESSAGES HERE + ``` +
+ render: shell + - type: dropdown + id: regression + attributes: + label: Is this a regression? + multiple: false + options: + - "Yes" + - "No" + validations: + required: true + - type: textarea + id: regression-info + attributes: + label: Regression additional context + placeholder: If it was a regression provide the versions used before and after the upgrade. + - type: textarea + id: context + attributes: + label: Additional context + description: Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml new file mode 100644 index 0000000..36105ac --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -0,0 +1,32 @@ +name: Feature request +description: Suggest an idea for this project +body: + - type: textarea + id: description + attributes: + label: Is your feature request related to a problem? Please describe. + description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + validations: + required: true + + - type: textarea + id: proposal + attributes: + label: Describe the solution you'd like + description: A clear and concise description of what you want to happen. + validations: + required: true + + - type: textarea + id: alternatives + attributes: + label: Describe alternatives you've considered + description: A clear and concise description of any alternative solutions or features you've considered. + validations: + required: true + + - type: textarea + id: context + attributes: + label: Additional context + description: Add any other context about the problem here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..5503089 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,16 @@ +## Issue \# + + +## Description + + +## General Checklist + + +- [ ] Added new tests to cover change, if needed +- [ ] Security oriented best practices and standards are followed (e.g. using input sanitization, principle of least privilege, etc) +- [ ] Documentation update for the change if required +- [ ] PR title conforms to conventional commit style +- [ ] If breaking change, documentation/changelog update with migration instructions + +By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000..50154fe --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,11 @@ +changelog: + categories: + - title: Feature + labels: + - enhancement + - title: Fix + labels: + - bug + - title: Other Changes + labels: + - "*" \ No newline at end of file diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml new file mode 100644 index 0000000..3aae12e --- /dev/null +++ b/.github/workflows/build-android.yml @@ -0,0 +1,25 @@ +name: Flutter SDK Build for Android + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build-android: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-java@v3 + with: + distribution: 'corretto' + java-version: '11' + - uses: subosito/flutter-action@v2 + with: + channel: 'stable' + - name: Run build apk + run: | + flutter pub get + cd example + flutter build apk diff --git a/.github/workflows/build-ios.yml b/.github/workflows/build-ios.yml new file mode 100644 index 0000000..5ba82c4 --- /dev/null +++ b/.github/workflows/build-ios.yml @@ -0,0 +1,25 @@ +name: Flutter SDK Build for iOS + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build-ios: + runs-on: macos-13-xl + steps: + - uses: actions/checkout@v3 + - name: Initialize submodules + run: | + git submodule update --init + - uses: subosito/flutter-action@v2 + with: + channel: 'stable' + architecture: x64 + - name: Run build ios + run: | + flutter pub get + cd example + flutter build ios --release --no-codesign diff --git a/.github/workflows/code-lint.yml b/.github/workflows/code-lint.yml new file mode 100644 index 0000000..269c06a --- /dev/null +++ b/.github/workflows/code-lint.yml @@ -0,0 +1,23 @@ +name: Flutter SDK Lint + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + code-lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: subosito/flutter-action@v2 + with: + channel: 'stable' + - run: flutter --version + - name: Run install packages + run: flutter pub get + - name: Run code format + run: dart format . --set-exit-if-changed + - name: Run code lint + run: flutter analyze --fatal-warnings diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..881c9d2 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,38 @@ +name: Release Next Version +on: + workflow_dispatch: + inputs: + release_tag: + description: 'Release Tag' + required: true + type: string +env: + NEW_VERSION: ${{ github.event.inputs.release_tag }} +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + ref: main + fetch-depth: 0 + token: ${{ secrets.PROJECT_TOKEN }} + - name: Modify for next release + run: | + chmod +x release.sh + ./release.sh ${{ env.NEW_VERSION }} + git diff + git config user.name '${{ vars.USER_NAME }}' + git config user.email '${{ vars.USER_EMAIL }}' + git add . + git commit -m 'release: clickstream Flutter ${{ env.NEW_VERSION }}' + git push + git tag v${{ env.NEW_VERSION }} + git push origin v${{ env.NEW_VERSION }} + - name: Create GitHub release + uses: softprops/action-gh-release@v1 + with: + name: "Clickstream Flutter ${{ env.NEW_VERSION }}" + tag_name: "v${{ env.NEW_VERSION }}" + prerelease: true + generate_release_notes: true diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..a7fea28 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,25 @@ +name: Flutter SDK Test + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + code-test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: subosito/flutter-action@v2 + with: + channel: 'stable' + - name: Run test + run: | + flutter pub get + flutter test --coverage --reporter github + - name: Upload Test Report + uses: codecov/codecov-action@v3 + with: + name: report + files: coverage/lcov.info \ No newline at end of file diff --git a/.github/workflows/title-lint.yml b/.github/workflows/title-lint.yml new file mode 100644 index 0000000..c3cf4bb --- /dev/null +++ b/.github/workflows/title-lint.yml @@ -0,0 +1,48 @@ +name: Commit Title Lint + +on: + pull_request: + branches: [ "main" ] + +jobs: + title-lint: + runs-on: ubuntu-latest + steps: + - uses: amannn/action-semantic-pull-request@v3.2.6 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + # Configure which types are allowed. + # Default: https://github.com/commitizen/conventional-commit-types + types: | + fix + feat + docs + style + refactor + perf + test + build + ci + chore + revert + release + # Configure that a scope must always be provided. + requireScope: false + # Configure additional validation for the subject based on a regex. + # This example ensures the subject doesn't start with an uppercase character. + subjectPattern: ^(?![A-Z]).+$ + # If `subjectPattern` is configured, you can use this property to override + # the default error message that is shown when the pattern doesn't match. + # The variables `subject` and `title` can be used within the message. + subjectPatternError: | + The subject "{subject}" found in the pull request title "{title}" + didn't match the configured pattern. Please ensure that the subject + doesn't start with an uppercase character. + # For work-in-progress PRs you can typically use draft pull requests + # from Github. However, private repositories on the free plan don't have + # this option and therefore this action allows you to opt-in to using the + # special "[WIP]" prefix to indicate this state. This will avoid the + # validation of the PR title and the pull request checks remain pending. + # Note that a second check will be reported if this is enabled. + wip: true diff --git a/README.md b/README.md index fcf130d..5db76b0 100644 --- a/README.md +++ b/README.md @@ -135,8 +135,8 @@ You can update the default configuration after initializing the SDK, below are t ```dart final analytics = ClickstreamAnalytics(); analytics.updateConfigure( - appId: "your appId", - endpoint: "https://example.com/collect", + appId: "your appId", + endpoint: "https://example.com/collect", isLogEvents: true, isCompressEvents: false, isTrackScreenViewEvents: false @@ -157,10 +157,24 @@ analytics.flushEvents(); ### Build +Install flutter packages + ```bash flutter pub get ``` +Build for Android + +```bash +cd example && flutter build apk +``` + +Build for iOS + +```dart +cd example && flutter build ios +``` + ### Format and lint ```bash diff --git a/release.sh b/release.sh new file mode 100755 index 0000000..f45292d --- /dev/null +++ b/release.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +version="$1" +echo ${version} +regex="[0-9]\+\.[0-9]\+\.[0-9]\+" + +sed -i "s/version: ${regex}/version: ${version}/g" pubspec.yaml