我正在尝试使用github actons创建一个简单的工作流,因此当我将其推送到我的master分支时,它将在macOS-latest
中构建代码并在OS 12.4, iPhone 11 Pro Max
上进行测试。
由于它是非常新的,教程还不完整,有人可以帮我吗?
这是我现在拥有的:
name: StyleOn_Workflow
on: [push]
jobs:
build:
runs-on: macOS-latest
strategy:
matrix:
destination: ['platform=iOS Simulator,OS=12.4,name=iPhone 11 Pro Max']
steps:
- uses: actions/checkout@master
- name: Build
run: swift build -v
test:
name: Test
runs-on: macOS-latest
strategy:
matrix:
destination: ['platform=iOS Simulator,OS=12.4,name=iPhone 11 Pro Max']
steps:
- name: Checkout
uses: actions/checkout@master
- name: Run tests
run: swift test -v
此外,由于我没有将应用程序部署到应用商店中,我该如何进行部署阶段?也许将其合并到主分支?我需要分三个阶段进行构建,测试和部署
这是我得到的错误:
答案 0 :(得分:0)
我希望这会有所帮助。首先,这里仅执行一个作业,这是您的“构建”作业。
您必须使用runs-on
下的策略一次来设置jobs:
参数。
接下来,您设置步骤,分别用于“构建”和“测试”:
steps:
- uses: actions/checkout@master
- name: Build
run: swift build -v
- name: Test
run: swift test -v
通过这种方式,您可以按照想要的顺序执行两个步骤:构建,下一个测试。
对于部署,您可以执行另一个步骤,或者执行带有参数need
的作业。
您还提供了一个示例,以使本文更好地解释如何编写工作流(也可以使用服务):How to create Github Actions to run tests with Docker services。
否则,您的清单error: root manifest not found
出错。您检查了吗?
答案 1 :(得分:0)
根据您的问题,我认为您应该使用xcodebuild
命令行工具,而不要使用swift build
和swift test
。
据我所见,您应该使用以下命令进行构建:
set -o pipefail && xcodebuild clean -scheme $SCHEME -destination $DESTINATION -derivedDataPath $DERIVED_DATA_PATH build-for-testing
并将其用于测试:
set -o pipefail && xcodebuild test-without-building -xctestrun $(find . -type f -name "*.xctestrun") -destination "platform=iOS Simulator,name=$DEVICE" -derivedDataPath $DERIVED_DATA_PATH -enableCodeCoverage YES
请注意,在作业之间,您应该上传和下载.xctestrun
文件。
您可以找到详细的示例here。