diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml new file mode 100644 index 0000000..a938024 --- /dev/null +++ b/.github/workflows/develop.yml @@ -0,0 +1,37 @@ +name: Develop + +# Controls when the workflow will run +on: + # Triggers the workflow on push or pull request events but only for the develop branch + push: + branches: [dev] + pull_request: + branches: [dev] + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + build: + name: Analyze + # The type of runner that the job will run on + runs-on: ubuntu-latest + steps: + - name: Checkout the code + uses: actions/checkout@v4 + + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: '11' + + - name: Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: 'stable' + + - name: Get packages + run: flutter pub get + + - name: Analyze + run: flutter analyze \ No newline at end of file diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml new file mode 100644 index 0000000..3396cbc --- /dev/null +++ b/.github/workflows/pre-release.yml @@ -0,0 +1,48 @@ +name: Pre-Release + +# Controls when the workflow will run +on: + # Triggers the workflow on pull request events but only for the main branch + pull_request: + branches: [main] + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "Build and Pre-Release APK" + releases: + name: Build and Pre-Release APK + # The type of runner that the job will run on + runs-on: ubuntu-latest + steps: + - name: Checkout the code + uses: actions/checkout@v4 + + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: '11' + + - name: Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: 'stable' + + - name: Get packages + run: flutter pub get + + - name: Generate Java keystore + env: + KEY_JKS: ${{ secrets.KEY_JKS }} + run: echo "$KEY_JKS" | base64 --decode > release-keystore.jks + + - name: Build APK + env: + KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} + run: flutter build apk --split-per-abi + + - name: Pre-release APK by uploading it to Artifacts + uses: actions/upload-artifact@v3 + with: + name: APKS + path: build/app/outputs/flutter-apk/*.apk \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..920e66b --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,61 @@ +# This is a basic workflow to help you get started with Actions +name: Release + +# Controls when the workflow will run +on: + # Triggers the workflow on push events but only for the main branch + push: + branches: [main] + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "Build and Release APK" + releases: + name: Build and Release APK + # The type of runner that the job will run on + runs-on: ubuntu-latest + steps: + - name: Checkout the code + uses: actions/checkout@v4 + + - name: Get version from pubspec.yaml + id: version + run: echo "::set-output name=version::$(grep "version:" pubspec.yaml | cut -c10-)" + + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: '11' + + - name: Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: 'stable' + + - name: Get packages + run: flutter pub get + + - name: Generate Java keystore + env: + KEY_JKS: ${{ secrets.KEY_JKS }} + run: echo "$KEY_JKS" | base64 --decode > release-keystore.jks + + - name: Build APK + env: + KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} + run: flutter build apk --split-per-abi + + - name: Get current date + id: date + run: echo "::set-output name=date::$(TZ='Asia/Jakarta' date +'%A %d-%m-%Y %T WIB')" + + - name: Release APK + uses: ncipollo/release-action@v1 + with: + allowUpdates: true + artifacts: "build/app/outputs/flutter-apk/*.apk" + body: "Published at ${{ steps.date.outputs.date }}" + name: "v${{ steps.version.outputs.version }}" + token: ${{ secrets.GH_TOKEN }} + tag: ${{ steps.version.outputs.version }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 5c08264..aac2af0 100644 --- a/.gitignore +++ b/.gitignore @@ -46,4 +46,14 @@ app.*.map.json # Remember to never publicly share your keystore. # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app *.keystore -*.jks \ No newline at end of file +*.jks + +# OS generated files # +###################### +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db \ No newline at end of file