本人github
在GitHub Actions中构建和上传应用通常包括以下几个步骤:
-
配置工作流:
- 在你的GitHub仓库中创建一个
.github/workflows
目录。 - 在该目录中创建一个新的YAML文件,例如
build-and-upload.yml
。
- 在你的GitHub仓库中创建一个
-
设置构建环境:
- 在YAML文件中,定义一个或多个工作,并为每个工作指定一个运行环境。
name: Build and Upload App
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
- 检出代码:
- 使用
actions/checkout
动作来检出你的仓库代码。
- 使用
steps:
- name: Checkout code
uses: actions/checkout@v2
- 设置构建系统:
- 根据你的应用程序,设置必要的构建系统和依赖项。
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- 构建应用:
- 运行构建命令来构建你的应用。
- name: Build with Gradle
run: ./gradlew build
- 上传构建的应用:
- 上传构建的应用程序到GitHub Releases或其他平台。
- name: Create Release
id: create_release
uses: actions/create-release@v1
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
- name: Upload APK
uses: actions/upload-release-asset@v1
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: app/build/outputs/apk/release/app-release.apk
asset_name: app-release.apk
asset_content_type: application/vnd.android.package-archive
之后再次触发action的时候如何在同一个release下增加文件?
在 GitHub Actions 中,如果想要在同一个 release 下增加文件,你可能需要做一些额外的工作。默认情况下,actions/create-release@v1
和 actions/upload-release-asset@v1
是为了创建新的 release 和上传新资产(assets)到新的 release 中。
如果想要在同一个 release 下增加文件,你可能需要:
-
获取已有 release 的信息:你需要知道你想要更新的 release 的 ID 或 tag。你可以使用 GitHub API 来获取你的仓库的 release 列表,并找到你想要更新的那一个。
-
上传新的资产(assets):一旦你有了 release 的 ID 或 tag,你可以使用
actions/upload-release-asset@v1
或 GitHub API 来上传新的资产到那个 release。
这可能会涉及到编写一些自定义的脚本或使用一些额外的 Actions。这是一个简单的例子,展示了如何在已有的 release 下添加新的资产:
name: Add Asset to Existing Release
on:
push:
branches:
- main
jobs:
add-asset:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build with Gradle
run: ./gradlew build
- name: Get Release
id: get_release
run: |
RELEASE_ID=$(curl --silent "https://api.github.com/repos/$GITHUB_REPOSITORY/releases/tags/v1.0" \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
| jq '.id')
echo "::set-output name=release_id::$RELEASE_ID"
- name: Upload APK
uses: actions/upload-release-asset@v1
with:
upload_url: https://uploads.github.com/repos/$GITHUB_REPOSITORY/releases/${{ steps.get_release.outputs.release_id }}/assets
asset_path: app/build/outputs/apk/release/app-release.apk
asset_name: app-release.apk
asset_content_type: application/vnd.android.package-archive
在这个例子中:
-
Get Release 步骤使用
curl
和jq
来调用 GitHub API 并获取 release 的 ID。请注意,你需要替换v1.0
为你的 release tag。 -
Upload APK 步骤使用
actions/upload-release-asset@v1
,但是upload_url
是基于前一步中获得的 release ID 构建的,而不是来自actions/create-release@v1
的输出。
确保你的仓库和 GitHub token 配置正确,并且你有正确的权限和设置来执行这些操作。