标签: github-actions

停止 GitHub Actions 中已运行的工作流/作业

我已经使用 GitHub Actions 设置了 CI。我的一个工作流程是由push事件触发的,但它(或该工作流程的作业)不应同时在多个实例上运行。

是否可以创建一个停止其他工作流程(或作业或不允许工作流程/作业并行运行)的作业?

我宁愿取消“旧”工作,而不是需要完成“新”工作,直到“旧”工作完成。

理想情况下,我还想在最后运行一个作业来完成“旧”作业。(〜保存未完成的状态)。这可以(但不一定)与“新”作业并行运行。

[注意] 我想取消另一个工作流程中的作业,或者取消另一个工作流程,而不是同一工作流程中的另一个作业。

continuous-integration github github-actions

8
推荐指数
1
解决办法
9124
查看次数

GitHub Actions Docker 构建和推送复制失败:意外状态:413 请求实体太大

我一直在尝试通过 GitHub Actions 构建和推送我的 Docker 映像,并将它们推送到我的 Docker 注册表。

为此,我一直在使用以下工作流程文件:

name: Docker publish

on:
  push:
    branches: [ develop ]

  workflow_dispatch:

jobs:

  build:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1

      - name: Login to registry
        uses: docker/login-action@v1
        with:
          registry: https://registry.domain.com
          username: ${{ secrets.REGISTRY_USERNAME }}
          password: ${{ secrets.REGISTRY_PASSWORD }}

      - name: Build and push web
        id: docker_build_web
        uses: docker/build-push-action@v2
        with:
          push: true
          context: ./web
          tags: registry.domain.com/web:latest

      - name: Build …
Run Code Online (Sandbox Code Playgroud)

github docker github-actions

8
推荐指数
1
解决办法
1087
查看次数

如何在github工作流程中创建文件夹?

我正在尝试在 github 工作流程中将一个文件夹的内容复制到另一个文件夹中。我知道工作流程可以创建新的文件夹和文件,因为在 React 项目上调用构建会创建项目中不存在的构建,但它会在使用 mkdir 的后续运行命令中引发错误。

\n

错误:\nmkdir: cannot create directory \xe2\x80\x98myNewFolder\xe2\x80\x99: No such file or directory

\n

我的问题是如何实现

\n
> mkdir myNewFolder && cp -R myOldFolder myNewFolder\n
Run Code Online (Sandbox Code Playgroud)\n

或者

\n
> cp -R myOldFolder myNewFolder\n
Run Code Online (Sandbox Code Playgroud)\n

当 repo/workflow 工作目录中不存在 myNewFolder 时工作?

\n

编辑(请求的工作流程文件)

\n
name: Test Server Build and Deploy (CD)\n\non:\n  push:\n    branches:\n        - cd_branch\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    env: \n        MY_APP_ENV_VARIABLE:  ${{ secrets.ENV_VARIABLE}}\n\nsteps:\n        - uses: actions/checkout@v2\n        - uses: actions/setup-node@v2\n          with:\n              node-version: \'14.15.4\'\n        - run: npm cache clean …
Run Code Online (Sandbox Code Playgroud)

linux github github-actions building-github-actions

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

SPM 缓存在 github 操作上不起作用,有什么想法吗?

我正在尝试使用缓存操作在 GitHub Actions 上缓存 SPM 包,我遵循以下示例:

  - uses: actions/cache@v2
  with:
    path: Myproject.xcworkspace/xcshareddata/swiftpm/Package.resolved
    key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
    restore-keys: |
      ${{ runner.os }}-spm-
Run Code Online (Sandbox Code Playgroud)

我觉得当你使用 Xcode 添加 SPM 包时不可能使用缓存

有人成功地将缓存添加到您的项目中,甚至通过 Xcode 管理 SPM 吗?或者我的 .yml 文件可能有问题,但不幸的是我无法使其工作。

github swift swift-package-manager github-actions

8
推荐指数
1
解决办法
2786
查看次数

如何使用 GitHub Actions 克隆多个私有存储库?

我一直在网上搜索大量关于如何在运行 GitHub 操作脚本时克隆多个私有存储库的信息。此外,由于我希望克隆的存储库是在存储库本身内的文本文件中编写的,因此这对我来说使事情变得更加复杂。我的意思是,GitHub 在这里解释了如何执行此操作: https: //github.com/actions/checkout#checkout-multiple-repos-private但它假设您知道要克隆的内容,以便您可以在 yml 中列出所有存储库文件。此外,他们假设您只有一两个存储库。如果你有 100 个存储库怎么办...我宁愿使用脚本...那么该怎么做呢?任何想法?

bash yaml github-actions

8
推荐指数
1
解决办法
8406
查看次数

GitHub Actions 使用从 shell 设置的变量

目标:

在 GitHub Actions 中,从 shell 动态定义我的提交消息:

      - name: Commit changes
        uses: EndBug/add-and-commit@v7
        with:
          message: "added on $(date -I)"
Run Code Online (Sandbox Code Playgroud)

但是,似乎我必须定义一个环境变量然后使用它。我正在关注如何在 GitHub Actions 中使用 bash 表达式设置环境变量?和其他类似的帮助文件,但仍然无法告诉如何使用我之前定义的环境变量。这是我尝试过但失败的:

      - name: Checkout repo
        uses: actions/checkout@v2
      - run: |
          touch sample.js
          echo "today=$(date -I)" >> $GITHUB_ENV

      - name: Commit changes
        uses: EndBug/add-and-commit@v7
        with:
          message: "added on ${today}"
Run Code Online (Sandbox Code Playgroud)

如何让它发挥作用?

shell environment-variables github-actions

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

Self-Hosted Github Runner:在作业中启动一个后台服务器进程并让它在作业结束后运行

我正在尝试执行以下操作:

  • 在自托管运行器中,运行服务器进程。使用curl 调用它。该进程在执行下一个“另一个作业”期间监视某些内容
  • 运行“另一项作业”(不在自托管运行器上)
  • 在自托管运行器中,再次调用curl来收集统计信息。

jobs我的 Github Actions 工作流程中有以下内容:

start-process:  # THIS JOB IS SUPPOSED TO START A SERVER IN BACKGROUND
    name: Start
    needs: start-runner # previous job starts the runner
    runs-on: ${{ needs.start-runner.outputs.label }} # run the job on the newly created runner
    steps:
      - uses: actions/checkout@v2
      - name: npm install
        working-directory: ./monitor
        run: npm install
      - name: npm start
        run: nohup npm start & # this starts the server in background
        working-directory: ./monitor
      - run: curl http://localhost:8080/start …
Run Code Online (Sandbox Code Playgroud)

github github-actions

8
推荐指数
1
解决办法
5642
查看次数

在 GitHub Actions 中构建基于 Qt/cmake 的项目

我在我的项目中使用 Qt 5.12.11。由于我想在linux和win上都使用该软件,所以我选择了gcc编译器(我使用MSYS2,所以gcc是10.3.0)。本地构建对于 linux 和 win 都可以,但是通过 GitHub Actions 构建无法找到 qt(无论我是否设置 CMAKE_PREFIX_PATH 或 Qt5_DIR)。

所以这就是我被困了一段时间的地方。有没有人遇到过这样的问题或者对此有什么想法?

github 操作看起来像

name: Build

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

env:
  BUILD_TYPE: Release

jobs:
  build:
    runs-on: windows-latest
    defaults:
        run:
            shell: msys2 {0}

    steps:
      - uses: msys2/setup-msys2@v2
        with:
            install: mingw-w64-x86_64-toolchain
            msystem: mingw64
            release: false

      - name: Install Qt
        uses: jurplel/install-qt-action@v2
        with:
          version: '5.12.11'
          host: 'windows'
          target: 'desktop'
          arch: 'win64_mingw73'
          dir: '${{github.workspace}}/qt/'
          install-deps: 'true'

      - name: List files in Qt
        run: find …
Run Code Online (Sandbox Code Playgroud)

c++ qt cmake msys2 github-actions

8
推荐指数
1
解决办法
3090
查看次数

是否可以在github操作workflow_dispatch中提供多行输入?

我有一个工作流程,我需要为工作流程提供多行输入。像下面这样:

name: Test
on:
  workflow_dispatch:
    inputs:
      change-log:
        description: 'Changelog'
        required: true
Run Code Online (Sandbox Code Playgroud)

这里我的更改日志是多行的,当我使用输入时,它无法正确输入。有没有办法将多行输入正确传递给 GitHub 操作?

workflow github github-actions

8
推荐指数
1
解决办法
4881
查看次数

使用 Gradle 将快照发布到 GitHub 包

我很难将 0.0.1-SNAPSHOT 版本的 Java 库发布到 GitHub Packages。该库是一个 Gradle 项目。看起来,当版本不在 GitHub 上时,它会成功创建,但此后,它永远不会被更新/覆盖,发布新快照版本的唯一方法是物理删除现有版本。我的build.gradle

plugins {
    id 'java'
    id 'maven-publish'
}

version = '0.0.1-SNAPSHOT'

publishing {
    publications {
        maven(MavenPublication) {
            from components.java
        }
    }
    repositories {
        maven {
            url = "https://maven.pkg.github.com/myOrg/myRepo"
            credentials {
                username = "myUsername"
                password = "myPassword"
            }

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时gradle publish(无论是本地还是通过 GitHub 操作),日志都干净整洁

> Task :compileJava UP-TO-DATE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE
> Task :jar UP-TO-DATE
> Task :javadoc UP-TO-DATE
> Task …
Run Code Online (Sandbox Code Playgroud)

gradle maven maven-publish github-actions github-package-registry

8
推荐指数
0
解决办法
1873
查看次数