Skip to content

mariovtor/build_and_send

Repository files navigation

Build and Send

A Dart package for building artifacts, upload and sending them.

Features

  • Build APK and app bundles
  • Upload to Google Cloud Storage
  • Build iOS IPA
  • Upload IPA to TestFlight
  • Send notifications to Discord

Installation

Add build_and_send to your pubspec.yaml in the dev_dependencies section.:

dev_dependencies:
  build_and_send: any

Usage

in your project folder, same where configuration files are, run the following command in terminal:

dart run build_and_send

Options

  • -p, --platform : Platform to build. Can be either android, ios or all. Default is all.
  • -f, --flavor : Flavor to build.
  • -s, --silent : Silent mode. Won't send any notification to discord even if configured.
  • -m, --mention: Mention specific users in discord when sending notification. Provide comma separated names. If not provided, all users configured will be mentioned. see build_config.yaml, example for mentionUsers [command -m user1,user2], in .yaml file mentionUsers: user1:1234567890,user2:0987654321.
  • -n, --no-mention: Don't mention any user in discord when sending notification. If not provided, all users configured will be mentioned.
  • --no-pod-sync': If you are having some issues with ios build, you can try manually sync pod files. This flag will skip pod install step.
  • --only-upload : If you want to upload only, you can use this flag. Generaly if want to upload a previous build.
  • -v, --verbose : Verbose mode. Will print more information.
  • -h, --help : Display help information.

Configuration

Create a build_config.yaml. This file contains the configuration for the build and send process.

Example

build:
  #fvm, shorebird, default
  method: default
  android:
    #optional, if you need to pass any arguments to build command, like using a specific -t target, or shorebird configuration
    # like --flutter-version or any other stuff
    build_args: null
    #optional
    apk_path: null
    #optional
    bundle_path: null
    #if cloud not given will only build
    gcloud:
      bucket: gcloud-bucket
      app_id: app-id
  ios:
    #optional, if you need to pass any arguments to build command, like using a specific -t target, or shorebird configuration like --flutter-version or any other stuff
    build_args: 
    #if not given will only build the ipa file, will search in build/ios/ipa
    ipa_name: null
  #optional
  flavors:
    #by using a default if you call the package build function, will use the according flavor, the value must be a valid flavor name
    default_build: null
    dev:
      #fvm, shorebird, default
      method: default
      android:
        #to pass flavor flags and all stuffs, dont need to pass --flavor dev because its implicit
        build_args: -t lib/main_dev.dart
        #required  generaly flavors change build file name
        apk_name: 
        #optional
        apk_path: null
        #generaly flavors change build file name
        bundle_name:
        #optional
        bundle_path: null
        #if you want to use custom email put in build.env archive DEV_ANDROID_EMAIL, this email must to have access to this gcloud
        #if cloud not given will only build
        gcloud:
          bucket: flavor1-bucket
          app_id: flavor1-app-id

      ios:
        #to pass flavor flags and all stuffs, dont need to pass --flavor dev because its implicit
        build_args: -t lib/main_dev.dart
        #if not given will only build the ipa file, will search in build/ios/ipa
        ipa_name: null
    #optional, if given will send a message with android uploaded link
discord:
  #required
  webhook_url: YOUR_DISCORD_WEBHOOK_URL
  #optional, will tag the channel in the message
  channel_id: YOUR_DISCORD_CHANNEL_ID
  #optional
  mention_users: user1:123456789012345678,user2:987654321098765432
  #default true
  show_version: true
  #default true
  show_flavor: true

Create a build.env file in the root of your project

Remember to add the build.env file to your .gitignore to prevent sensitive information from being committed to your repository.

ACCOUNT_EMAIL=[email protected]
FLAVOR1_UPLOAD_EMAIL=[email protected]
APPLE_EMAIL=[email protected]
APPLE_APP_SPECIFIC_PASSWORD=your_app_specific_password
#remove if you dont want to use discord
DISCORD_SENDER_ID=000000000000000

IOS Configuration

[email protected] is the email that will be used to deploy the app to TestFlight. IOS_APP_SPECIFIC_PASSWORD=your_app_specific_password is the app specific password that will be used to deploy the app to TestFlight. Can be set in https://appleid.apple.com/, "Specific App Passwords" section.

Contributing

Any suggestions, issues, pull requests are welcomed.

License

MIT

Credits

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages