GitHub Actions で Flutter Android Release Build する
workflow.yml
Section titled “workflow.yml”ほんと単純で keystore を用意して,いわゆる local.properties を作成して build しているだけですね. flavor も考えるとつらいですが自分のケースの場合は — dart-define=<foo=bar> で済むケースがほとんどです.
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-java@v1 with: java-version: '12.x' - uses: subosito/flutter-action@v1 with: channel: 'stable' - run: echo "${{secrets.ANDROID_RELEASE_BASE64_KEY}}" | base64 -d > ./keystore.jks - run: echo "keyAlias=keystore" >> android/key.properties - run: echo "keyPassword=${{secrets.ANDROID_RELEASE_KEY_PASSWORD}}" >> android/key.properties - run: echo "storeFile=`pwd`/keystore.jks" >> android/key.properties - run: echo "storePassword=${{secrets.ANDROID_RELEASE_STORE_PASSWORD}}" >> android/key.properties - name: build apk run: flutter build apk --build-number ${GITHUB_RUN_NUMBER} - name: deploygate run: | curl \ -H "Authorization: token ${{secrets.DEPLOYGATE_API_KEY}}" \ -F "file=@build/app/outputs/flutter-apk/app-release.apk" \ "https://deploygate.com/api/users/{username}/apps"android/app/build.gradle
Section titled “android/app/build.gradle”上で作成した key.properties を読むようにします.
def keystoreProperties = new Properties()def keystorePropertiesFile = rootProject.file('key.properties')if (keystorePropertiesFile.exists()) { keystoreProperties.load(newFileInputStream(keystorePropertiesFile))}signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] }}