如何在GitHub Workflows中用当前日期时间命名发布APK?
解决方法
你可以通过以下几种方式为上传的APK工件设置带当前日期时间的名称:
方法一:直接使用GitHub内置环境变量
GitHub Actions提供了GITHUB_RUN_AT内置环境变量,它包含工作流启动的UTC时间(格式为YYYY-MM-DDTHH:MM:SSZ),可直接在上传步骤中引用:
# Define workflow name name: main # This workflow is triggered on pushes to the repository. on: push: branches: - main jobs: build: # This job will run on windows virtual machine runs-on: windows-latest steps: # Setup Java environment in order to build the Android app. - uses: actions/checkout@v1 - uses: actions/setup-java@v1 with: java-version: '12.x' # Setup the flutter environment. - uses: subosito/flutter-action@v1 with: channel: 'stable' # 'dev', 'alpha', default to: 'stable' flutter-version: '3.3.7' # version of flutter # Get flutter dependencies. - run: flutter clean - run: flutter pub get # Build apk. - run: flutter build apk --release # Upload generated apk to the artifacts with timestamp name - uses: actions/upload-artifact@v1 with: name: app-release-${{ github.run_at }} path: build/app/outputs/flutter-apk/app-release.apk
方法二:自定义时间格式
如果需要更简洁的时间格式(比如YYYYMMDD-HHmmss),可以通过format函数生成自定义格式的时间变量:
# Define workflow name name: main # This workflow is triggered on pushes to the repository. on: push: branches: - main jobs: build: # This job will run on windows virtual machine runs-on: windows-latest env: # 自定义时间格式:年-月-日_时-分-秒 TIMESTAMP: ${{ format('{0:yyyy-MM-dd_HH-mm-ss}', github.run_at) }} steps: # Setup Java environment in order to build the Android app. - uses: actions/checkout@v1 - uses: actions/setup-java@v1 with: java-version: '12.x' # Setup the flutter environment. - uses: subosito/flutter-action@v1 with: channel: 'stable' # 'dev', 'alpha', default to: 'stable' flutter-version: '3.3.7' # version of flutter # Get flutter dependencies. - run: flutter clean - run: flutter pub get # Build apk. - run: flutter build apk --release # Upload generated apk to the artifacts with custom timestamp name - uses: actions/upload-artifact@v1 with: name: app-release-${{ env.TIMESTAMP }} path: build/app/outputs/flutter-apk/app-release.apk
方法三:通过PowerShell生成时间(Windows runner专属)
因为你的工作流运行在Windows虚拟机上,也可以直接用PowerShell命令生成时间变量:
# Define workflow name name: main # This workflow is triggered on pushes to the repository. on: push: branches: - main jobs: build: # This job will run on windows virtual machine runs-on: windows-latest steps: # Setup Java environment in order to build the Android app. - uses: actions/checkout@v1 - uses: actions/setup-java@v1 with: java-version: '12.x' # Setup the flutter environment. - uses: subosito/flutter-action@v1 with: channel: 'stable' # 'dev', 'alpha', default to: 'stable' flutter-version: '3.3.7' # version of flutter # Get flutter dependencies. - run: flutter clean - run: flutter pub get # Build apk. - run: flutter build apk --release # 生成自定义格式的时间变量并写入环境 - name: Set timestamp variable run: echo "TIMESTAMP=$(Get-Date -Format 'yyyyMMdd-HHmmss')" | Out-File -FilePath $env:GITHUB_ENV -Append # Upload generated apk to the artifacts with timestamp name - uses: actions/upload-artifact@v1 with: name: app-release-${{ env.TIMESTAMP }} path: build/app/outputs/flutter-apk/app-release.apk
说明
github.run_at是GitHub内置变量,直接返回工作流启动的UTC时间format函数支持的格式符和.NET DateTime格式规则一致- 通过
GITHUB_ENV写入的环境变量可在后续所有步骤中引用
内容的提问来源于stack exchange,提问作者Nehil Koshiya
相关产品推荐
相关产品推荐

