我已经使用 GitHub Actions 设置了 CI。我的一个工作流程是由push事件触发的,但它(或该工作流程的作业)不应同时在多个实例上运行。
是否可以创建一个停止其他工作流程(或作业或不允许工作流程/作业并行运行)的作业?
我宁愿取消“旧”工作,而不是需要完成“新”工作,直到“旧”工作完成。
理想情况下,我还想在最后运行一个作业来完成“旧”作业。(〜保存未完成的状态)。这可以(但不一定)与“新”作业并行运行。
[注意] 我想取消另一个工作流程中的作业,或者取消另一个工作流程,而不是同一工作流程中的另一个作业。
我一直在尝试通过 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 工作流程中将一个文件夹的内容复制到另一个文件夹中。我知道工作流程可以创建新的文件夹和文件,因为在 React 项目上调用构建会创建项目中不存在的构建,但它会在使用 mkdir 的后续运行命令中引发错误。
\n错误:\nmkdir: cannot create directory \xe2\x80\x98myNewFolder\xe2\x80\x99: No such file or directory
我的问题是如何实现
\n> mkdir myNewFolder && cp -R myOldFolder myNewFolder\nRun Code Online (Sandbox Code Playgroud)\n或者
\n> cp -R myOldFolder myNewFolder\nRun Code Online (Sandbox Code Playgroud)\n当 repo/workflow 工作目录中不存在 myNewFolder 时工作?
\n编辑(请求的工作流程文件)
\nname: 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) 我正在尝试使用缓存操作在 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 操作脚本时克隆多个私有存储库的信息。此外,由于我希望克隆的存储库是在存储库本身内的文本文件中编写的,因此这对我来说使事情变得更加复杂。我的意思是,GitHub 在这里解释了如何执行此操作: https: //github.com/actions/checkout#checkout-multiple-repos-private但它假设您知道要克隆的内容,以便您可以在 yml 中列出所有存储库文件。此外,他们假设您只有一两个存储库。如果你有 100 个存储库怎么办...我宁愿使用脚本...那么该怎么做呢?任何想法?
目标:
在 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)
如何让它发挥作用?
我正在尝试执行以下操作:
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) 我在我的项目中使用 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) 我有一个工作流程,我需要为工作流程提供多行输入。像下面这样:
name: Test
on:
workflow_dispatch:
inputs:
change-log:
description: 'Changelog'
required: true
Run Code Online (Sandbox Code Playgroud)
这里我的更改日志是多行的,当我使用输入时,它无法正确输入。有没有办法将多行输入正确传递给 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