有没有那种打包各种安装好开发环境镜像的站?

一个Flutter项目有些地方想自己改下,临时搞了个虚拟机做环境,做半天这不行那不行,还不怎么能找到解决办法,本来想在Replit上解决,然后缺依赖,想去GitHub上用Actions解决,也不行,现在想能有个直接做好的安装虚拟机就完了。

自己之前搞好过一次,然后,那个虚拟机给我删了。

顺便吐槽一下Flutter的项目,漂亮归漂亮,全平台归全平台,但改个东西是真的麻烦。

:joy:
你咋自己删了

有段时间了,那时候是为了改东西搭的,然后那个项目要改的东西太多,干脆不用了,然后我寻思,这玩意好像没啥用,然后,就删了。现在。很后悔。

用 docker 啊
dev container 设计出来就是干这个的

1 个赞

有关键词嘛?我去看看。

我自己构建flutter项目安卓端的Github Action
需要注意的是为了apk签名,设置了几个secrets

name: Flutter CI Build

on: 
  workflow_dispatch:
    inputs:
      java_version:
        required: true
        default: '17'
      flutter_version:
        required: true
        default: '3.x'
      flutter_channel:
        required: true
        default: 'stable' # or: 'beta', 'dev' or 'master'
      flutter_type:
        required: true
        default: 'apk'
      flutter_build_params:
        required: false
        default: '--release --target-platform=android-arm64'
      repo:
        required: true
      ref:
        required: false
        default: ''
      submodules:
        required: false
        default: 'false'
      name_pattern:
        required: false
        default: 'build/**/release/*arm64*.apk'


jobs:
  flutter:
    name: Flutter CI Build
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
        with:
          repository: ${{ github.event.inputs.repo }}
          ref: ${{ github.event.inputs.ref }}
          fetch-depth: 1 
          
      - name: Checkout submodules
        if: ${{ github.event.inputs.submodules != 'false' }}
        run: git submodule update --init --recursive

      - name: Prepare Java
        uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: ${{ github.event.inputs.java_version }}
          java-package: jdk+fx
          cache: 'gradle'

      - name: Cache Flutter dependencies
        uses: actions/cache@v4
        with:
          path: /opt/hostedtoolcache/flutter
          key: ${{ runner.OS }}-flutter-cache-${{ github.event.inputs.flutter_version }}-${{ github.event.inputs.flutter_channel }}
          restore-keys: |
            ${{ runner.OS }}-flutter-cache-
      - uses: subosito/[email protected]
        with:
          flutter-version: ${{ github.event.inputs.flutter_version }}
          channel: ${{ github.event.inputs.flutter_channel }} # or: 'stable', 'beta', 'dev' or 'master'
      - name: Decode keystore and create jks and properties file
        if: ${{ github.event.inputs.flutter_type == 'apk' }}
        run: |
          echo "${{ secrets.SIGN_FILE_BASE64 }}" | base64 -di > android/app/keystore.jks
          echo "storeFile=keystore.jks" >> android/key.properties
          echo "keyAlias=${{ secrets.KEY_ALIAS }}" >> android/key.properties
          echo "storePassword=${{ secrets.KEYSTORE_PASSWORD }}" >> android/key.properties
          echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> android/key.properties

      - name: Build project
        run: |
          flutter config --build-dir=build/outputs
          flutter pub get
          flutter build ${{ github.event.inputs.flutter_type }} ${{ github.event.inputs.flutter_build_params }}

      - name: upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: flutter_build
          path: ${{ inputs.name_pattern }}