CofbroTeam / Doraemon

⭐ ⭐ ⭐不止签到!更有一键同步作业功能!⭐ ⭐ ⭐ UI友好的安卓-Android移动端学习通签到助手,支持普通签到,扫码签到,图片签到,二维码签到,定位签到,签到码签到,手势签到,作业提醒:push通知,短信通知!!
661 stars 125 forks source link

更丰富的Workflow #57

Closed SummonHIM closed 7 months ago

SummonHIM commented 7 months ago

运行

当分支为main时,将编译 debug apk 当分支为任意tag时,将编译 release apk。并将tag名称设为版本号。最后使用 softprops/action-gh-release@v1 推送到 Release 中

一些小问题

  1. softprops/action-gh-release@v1 可能没有权限创建 Release。那就需要给build上可写入内容权限。现在要不要就不知道了。我之前要,但是刚刚试过是不用的
    jobs:
    build:
    permissions:
      contents: write
  2. 签名 将Base64后的签名放在仓库 Settings -> Secrets and variables -> Actions -> Secrets 里面,然后 workflow 这样读取
    
    - name: Prepare signing key
    run: |
    echo '${{ secrets.SIGNING_KEY }}' | base64 -d > signingkey.jks

最后删掉掉

cofbro commented 7 months ago

您好,感谢您的Commit。建议您将main分支改为生成release包,其余生成debug包。除此之外,请将您提到的签名部分代码也写入yml中。

SummonHIM commented 7 months ago

好的,请问下release(softprops/action-gh-release@v1)是否也要在main分支情况下推送至新 release 草稿

cofbro commented 7 months ago

好的,请问下release(softprops/action-gh-release@v1)是否也要在main分支情况下推送至新 release 草稿

是的,GitHub Release页设置为草稿

SummonHIM commented 7 months ago

好的,请问下release(softprops/action-gh-release@v1)是否也要在main分支情况下推送至新 release 草稿

是的,GitHub Release页设置为草稿

大执行了 debug 上的判断 if: github.ref != 'refs/heads/main' || !startsWith(github.ref, 'refs/tags/') 老是不能跳过。奇奇怪怪的

Secrets 里面要4个隐藏变量:ALIASKEY_PASSWORDKEY_STORE_PASSWORDSIGNING_KEY。 SIGNING_KEY是Base64之后的Key文件

cofbro commented 7 months ago
- name: Prepare signing key
  run: |
    echo '${{ secrets.SIGNING_KEY }}' | base64 -d > signingkey.jks

- name: Set up JDK
  uses: actions/setup-java@v2
  with:
    java-version: '17'

- name: Build and sign release APK
  run: |
    chmod +x ./gradlew
    ./gradlew assembleRelease \
      -Pandroid.injected.signing.store.file=signingkey.jks \
      -Pandroid.injected.signing.store.password=${{ secrets.KEYSTORE_PASSWORD }} \
      -Pandroid.injected.signing.key.alias=${{ secrets.KEY_ALIAS }} \
      -Pandroid.injected.signing.key.password=${{ secrets.KEY_PASSWORD }}

- name: Upload release APK
  uses: actions/upload-artifact@v2
  with:
    name: app-release
    path: app/build/outputs/apk/release/*.apk

- name: Create GitHub Release
  id: create_release
  uses: actions/create-release@v1
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  with:
    tag_name: v1.0.0  # 版本号
    release_name: Release v1.0.0  # 版本号
    body: |
      Release notes for v1.0.0  # 发布说明
    draft: false
    prerelease: false

- name: Upload release APK to Release
  uses: actions/upload-release-asset@v1
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  with:
    upload_url: ${{ steps.create_release.outputs.upload_url }}
    asset_path: app/build/outputs/apk/release/*.apk
    asset_name: app-release.apk  # APK 文件名
    asset_content_type: application/vnd.android.package-archive

任务 actions/checkout@v2 看起来不能正常运行,可以参考一下这个。

cofbro commented 7 months ago

您可以尝试先在自己的仓库打包发布,如果发布成功我们将会通过您的pr。

SummonHIM commented 7 months ago

您可以尝试先在自己的仓库打包发布,如果发布成功我们将会通过您的pr。

仓库里面是正常的,我看了下出问题是在替换versionName那里 pr的分支名叫57/merge,这个'/'字符打乱了整个替换

      - name: Setup version code
        run: |
          sed -i 's/\(versionCode\s*\)[0-9]\+/\1${{ github.run_number }}/' app/build.gradle
          sed -i 's/\(versionName\s*"\)[^"]*"/\1${{ github.ref_name }}"/' app/build.gradle

或者干脆就不要这个了?直接手动设置versionName

SummonHIM commented 7 months ago

您可以尝试先在自己的仓库打包发布,如果发布成功我们将会通过您的pr。

actions/upload-release-asset@v1 这个很早之前就已经被弃用了

cofbro commented 7 months ago

您可以尝试先在自己的仓库打包发布,如果发布成功我们将会通过您的pr。

仓库里面是正常的,我看了下出问题是在替换versionName那里 pr的分支名叫57/merge,这个'/'字符打乱了整个替换

      - name: Setup version code
        run: |
          sed -i 's/\(versionCode\s*\)[0-9]\+/\1${{ github.run_number }}/' app/build.gradle
          sed -i 's/\(versionName\s*"\)[^"]*"/\1${{ github.ref_name }}"/' app/build.gradle

或者干脆就不要这个了?直接手动设置versionName

先删掉吧

SummonHIM commented 7 months ago

您可以尝试先在自己的仓库打包发布,如果发布成功我们将会通过您的pr。

仓库里面是正常的,我看了下出问题是在替换versionName那里 pr的分支名叫57/merge,这个'/'字符打乱了整个替换

      - name: Setup version code
        run: |
          sed -i 's/\(versionCode\s*\)[0-9]\+/\1${{ github.run_number }}/' app/build.gradle
          sed -i 's/\(versionName\s*"\)[^"]*"/\1${{ github.ref_name }}"/' app/build.gradle

或者干脆就不要这个了?直接手动设置versionName

先删掉吧

删了

SummonHIM commented 7 months ago

测试Release