根据文档,我可以使用以下语法按计划运行 CI:
on:
schedule:
# * is a special character in YAML so you have to quote this string
- cron: '*/15 * * * *'
Run Code Online (Sandbox Code Playgroud)
如果我想要两个 cron 怎么办?这个的语法是什么?
就我而言,有四种环境:Dev、QA、UAT 和 Prod,基于 Windows 的自托管运行器。一旦构建了包,就应该以 Dev\xef\x83\xa0QA\xef\x83\xa0UAT\xef\x83\xa0PROD 的方式成功地将其部署到每个环境中。下面的工作流程是为开发环境构建和部署包而编写的。现在,要在 QA、UAT 和 Prod 环境上进一步部署该版本,是否应针对 QA、UAT 和 Prod 重复相同的部署部分。是否没有像类这样的概念,可以使用参数多次调用部署版本的步骤?
\n工作流程-API
\n\n\n构建部分
\n
name: PASH-API-Build-Deployment \non: \n push:\n branches: [dev]\n paths: \n - "Pash.Web/**" \njobs:\n build:\n runs-on: dev-build\n strategy:\n matrix:\n node-version: 3.1.301\n env:\n api-project: "./Pash.Web/PASH.Api/PASH.Api.csproj"\n test-project: "./Pash.Web/PASH.Api.Test/PASH.Api.Test.csproj"\n upload-artifacts-path: "./pashdotnetcorewebapp"\n artifact-package-zip-directory-path: "_PASH-API-CI/Pash-drop"\n \n steps:\n - name: Generate build number\n id: buildnumber\n uses: einaregilsson/build-number@v3 \n with:\n token: ${{ secrets.github_token }}\n - name: Print build number - env\n run: |\n echo "::set-output name=VAR-BUILD-NUMBER::${env:BUILD_NUMBER}"\n echo …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用date一步保存变量名称。但是,在后面的步骤中,它似乎是未定义的(或空的?)。我在这里缺少什么?
jobs:
# Create release branch for the week
branch:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Format the date of next Tuesday
id: tuesday
run: echo "abbr=$(date -v+tuesday +'%y%m%d')" >> $GITHUB_ENV
- name: Create a branch with next tuesday's date
uses: peterjgrainger/action-create-branch@v2.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
branch: release/${{ steps.tuesday.outputs.abbr }}
Run Code Online (Sandbox Code Playgroud)
错误:
refs/heads/release/ is not a valid ref name.
Run Code Online (Sandbox Code Playgroud) 我有一个 github 操作尝试使用 ${{ env.TMPDIR }} 并且似乎没有扩展到 TMPDIR 环境变量。
- name: DEBUG Workaround GitHub-Actions-MacOS Issue with env.TMPDIR
run: |
echo "TMPDIR=$TMPDIR"
echo "TMPDIR using ENV.TMPDIR=${{ env.TMPDIR }}"
Run Code Online (Sandbox Code Playgroud)
这会产生:
TMPDIR=/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/
TMPDIR using ENV.TMPDIR=
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
Run actions-contrib/golangci-lint@v1
/usr/bin/docker run --name cc495678c14da19ea04d82b4276bf15086b4bc_b162c0 --label cc4956 --workdir /github/workspace --rm -e GOROOT -e INPUT_GOLANGCI_LINT_VERSION -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true …Run Code Online (Sandbox Code Playgroud) 我已经设置了每次推送时都会触发的操作,但如果提交消息不符合特定模式,则其退出步骤。此提交基本上指向新版本,并且仅发生在分支上。master
但是,当新版本发布后,从 master 分叉出一个新分支并将其推送到原点而不进行任何进一步提交时,该操作将再次触发。
有什么方法可以指定在推送新分支时不应触发该操作,而仅在新提交时触发该操作?
工作流程片段:
name: Release APK
on: push
jobs:
build:
if: "contains(github.event.head_commit.message, 'apkRelease@@')"
name: Build APK
<...trimmed rest of the yaml>
Run Code Online (Sandbox Code Playgroud)
这样,当推入带有消息“apkRelease@@ver123”的提交 Cmaster以对应于新版本时,将触发构建 APK 步骤。但是,如果我分叉一个新dev分支并将其推送到原点而不进行任何提交,则操作和步骤将再次触发。我想阻止这一点。
我们正在做一个概念验证,研究 Github Actions 来为遗留系统的给定提交生成一个工件,然后我们需要在内部进一步处理它,所以我正在研究我们现在如何相对简单地做到这一点证明这是可行的。我们对拉链包装没问题。
通过在操作中的作业页面中右键单击工件来识别此类工件的示例 URL: https://github.com/tandeday/actions-artifacts/suites/1767549169/artifacts/33720037
据我所知,有一个完整的 API,并且我已经成功地手动使用它来本地化和下载工件,使用类似于以下内容的行:
curl -O -J -L -H 'Authorization: token ...' -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/tandeday/actions-artifacts/actions/artifacts/33720037/zip
Run Code Online (Sandbox Code Playgroud)
我希望能够避免为此概念验证创建 API 客户端,而是允许用户仅从网页传递链接,但我一直无法找到一种简单的方法来做到这一点。
所以问题是,我如何以最少的编码从https://github.com/tandeday/actions-artifacts/suites/1767549169/artifacts/33720037到https://api.github.com/repos/tandeday/动作-工件/动作/工件/33720037/zip?
我们有一个 Jenkins CI 作业,当提出拉取请求时,我们将在其中运行作业。如果该作业在任何情况下失败,我们就不应该允许用户合并拉取请求。我们有什么办法可以使用 github actions 来做吗?
我正在尝试在 GitHub Actions 上运行 JUnit 测试,但其中一些失败。本地所有测试均已通过。在我的 PC 上,我使用 Ubuntu 20.04 和 OpenJDK 1.8 (275),在 CI 上使用 OpenJDK 1.8(来自标准操作)。
java -version电脑输出:
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (build 1.8.0_275-8u275-b01-0ubuntu1~20.04-b01)
OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)
Run Code Online (Sandbox Code Playgroud)
java-versionGitHub 操作的输出:
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (Zulu 8.50.0.53-CA-linux64) (build 1.8.0_275-b01)
OpenJDK 64-Bit Server VM (Zulu 8.50.0.53-CA-linux64) (build 25.275-b01, mixed mode)
Run Code Online (Sandbox Code Playgroud)
测试断言:
@Test
public void test() {
assertEquals(
17,
new CountingSheep(
new Boolean[]{
true, true, true, false,
true, true, true, true, …Run Code Online (Sandbox Code Playgroud) 我有点困惑。我正在尝试使用 github 操作通过 SSH 连接到我的 ec2 实例并进行部署。我将密钥(来自 ec2 控制台)作为秘密保存在 github 中,如下所示:
- name: Install SSH key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.COBOTSSH }}
name: id_rsa
known_hosts: ${{ secrets.KNOWN_HOSTS }}
- name: ssh
run: ssh ${{ secrets.USERNAME }}@${{ secrets.KNOWN_HOSTS }}
Run Code Online (Sandbox Code Playgroud)
不幸的是我得到:
Host key verification failed.
我已经尝试了多种 SSH github 操作解决方案,所以我认为这是用户错误(shimataro 是黄金标准)。所以我会非常具体地说明我做了什么: