Sim*_*son 7 continuous-integration yaml github github-actions
背景
我正在编写一个 Github 操作来上传每个创建的新标签上的构建工件。事实证明,这样做相当困难。
但是,我想将不同的变体作为单独的文件上传到 github 的发布页面,但无法弄清楚如何为此使用通配符,并转而使用硬编码文件名复制此部分。用硬编码的文件名复制代码很容易出错,而且未来也不是很安全。
我想这个问题可能归结为 yml 的工作原理: 用某种循环或通配符可以缩短这个时间吗?
这是我最终得到的长代码:
name: Android Release
on:
push:
tags:
- 'CUST*'
jobs:
create:
name: Create Release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@master
apk:
name: Generate APK
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- name: set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build debug APK
run: bash ./gradlew assembleDebug --stacktrace
- name: PackRelease
run: |
zip CustSignalDebug_universal.zip --junk-paths app/build/outputs/apk/play/debug/*universal*.apk
zip CustSignalDebug_arm64_v8a.zip --junk-paths app/build/outputs/apk/play/debug/*arm64-v8a*.apk
zip CustSignalDebug_armeabi_v7a.zip --junk-paths app/build/outputs/apk/play/debug/*armeabi-v7a*.apk
zip CustSignalDebug_x86.zip --junk-paths app/build/outputs/apk/play/debug/*x86*.apk
zip CustSignalDebugAll_APK.zip --junk-paths app/build/outputs/apk/play/debug/*.apk
- name: Upload APK univeral
uses: actions/upload-artifact@v1
with:
name: CustSignalDebug_universal.zip
path: CustSignalDebug_universal.zip
- name: Upload APK arm64
uses: actions/upload-artifact@v1
with:
name: CustSignalDebug_arm64_v8a.zip
path: CustSignalDebug_arm64_v8a.zip
- name: Upload APK arm64 v8a
uses: actions/upload-artifact@v1
with:
name: CustSignalDebug_armeabi_v7a.zip
path: CustSignalDebug_armeabi_v7a.zip
- name: Upload APK x86
uses: actions/upload-artifact@v1
with:
name: CustSignalDebug_x86.zip
path: CustSignalDebug_x86.zip
- name: Upload APK
uses: actions/upload-artifact@v1
with:
name: CustSignalDebugAll_APK.zip
path: CustSignalDebugAll_APK.zip
- name: Create Release
id: create_release
uses: actions/create-release@v1.0.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: true
- name: Upload Release Asset All
id: upload-release-asset0
uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
asset_path: CustSignalDebugAll_APK.zip
asset_name: CustSignalDebugAll_APK.zip
asset_content_type: application/zip
- name: Upload Release Asset universal
id: upload-release-asset1
uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
asset_path: CustSignalDebug_universal.zip
asset_name: CustSignalDebug_universal.zip
asset_content_type: application/zip
- name: Upload Release Asset arm7
id: upload-release-asset2
uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
asset_path: CustSignalDebug_armeabi_v7a.zip
asset_name: CustSignalDebug_armeabi_v7a.zip
asset_content_type: application/zip
- name: Upload Release Asset Arm64
id: upload-release-asset3
uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
asset_path: CustSignalDebug_arm64_v8a.zip
asset_name: CustSignalDebug_arm64_v8a.zip
asset_content_type: application/zip
- name: Upload Release Asset x86
id: upload-release-asset4
uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
asset_path: CustSignalDebug_x86.zip
asset_name: CustSignalDebug_x86.zip
asset_content_type: application/zip
Run Code Online (Sandbox Code Playgroud)
Github 操作同时支持通配符和循环。下面的示例是从文档中复制的。
通配符示例
'**/migrate-*.sql'
存储库中任意位置具有前缀 migrate- 和后缀 .sql 的文件。
火柴:
循环示例(矩阵)
该步骤运行 3 次,每个node变量值各运行一次:
strategy:
matrix:
node: [6, 8, 10]
steps:
# Configures the node version used on GitHub-hosted runners
- uses: actions/setup-node@v1
with:
# The Node.js version to configure
node-version: ${{ matrix.node }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1992 次 |
| 最近记录: |