标签: github-actions

GitHub Actions - 多个 cron

根据文档,我可以使用以下语法按计划运行 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 怎么办?这个的语法是什么?

github github-actions

5
推荐指数
2
解决办法
3539
查看次数

GitHub Action - 如何在多个环境上部署版本?

就我而言,有四种环境: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)

github github-actions

5
推荐指数
1
解决办法
2万
查看次数

在 GitHub Actions 中保存 GITHUB_ENV 变量

我正在尝试使用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-actions

5
推荐指数
1
解决办法
8142
查看次数

macos ${{ env.TMPDIR }} 在 github 操作中不起作用

我有一个 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)

示例: 使用 env.TMPDIR 调试解决方案 GitHub-Actions-MacOS 问题

macos github-actions

5
推荐指数
1
解决办法
4784
查看次数

如何修复 GitHub Actions 中的 golangci-lint 错误?

我收到这个错误:

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)

go docker github-actions

5
推荐指数
0
解决办法
4969
查看次数

不要触发将新分支推送到远程的操作

我已经设置了每次推送时都会触发的操作,但如果提交消息符合特定模式,则其退出步骤。此提交基本上指向新版本,并且仅发生在分支上。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 github-actions

5
推荐指数
1
解决办法
753
查看次数

是否能够通过将链接 URL 复制粘贴到 curl 来下载 Github Actions 工件?

我们正在做一个概念验证,研究 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/33720037https://api.github.com/repos/tandeday/动作-工件/动作/工件/33720037/zip

curl github-actions github-actions-artifacts

5
推荐指数
1
解决办法
2764
查看次数

如果 CI 作业中的任何检查失败,我们如何禁用 github 中拉取请求的合并

我们有一个 Jenkins CI 作业,当提出拉取请求时,我们将在其中运行作业。如果该作业在任何情况下失败,我们就不应该允许用户合并拉取请求。我们有什么办法可以使用 github actions 来做吗?

github github-actions

5
推荐指数
1
解决办法
7244
查看次数

JUnit 测试在 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)

java junit jvm github-actions

5
推荐指数
1
解决办法
4384
查看次数

通过 SSH 登录我的 ec2 实例并部署代码的 Github 操作

我有点困惑。我正在尝试使用 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 是黄金标准)。所以我会非常具体地说明我做了什么:

  1. 转到密钥对
  2. 创建新的密钥对并下载 pem 文件
  3. 将 pem 文件的整个文本复制到秘密 COBOTSSH 中
  4. 将 EC2 实例的 DNS 名称复制到 KNOWN_HOSTS 中(与变量名称相反,它只是一个 DNS 条目)
  5. 在我的 putty 终端上使用 SSH 登录到盒子,并创建一个名为 X 的用户,然后将 X 放入 USERNAME 密钥中。我认为这是错误的,因为它默认需要密码?但该错误没有任何冗长。如何使用 EC2 控制台中的密钥并仍然运行以下命令 …

ssh amazon-ec2 amazon-web-services github-actions

5
推荐指数
1
解决办法
6954
查看次数