如果我main.workflow在本地更改我的文件,而不是在master分支中,提交并推送更改,我会从push命令中收到此错误:
> git diff
diff --git a/.github/main.workflow b/.github/main.workflow
index 135d8ea..0a13a28 100644
--- a/.github/main.workflow
+++ b/.github/main.workflow
@@ -6,7 +6,7 @@ workflow "Build and Test in PR" {
]
}
-action ".NET Core CLI" {
+action ".NET Core CLI" {
uses = "./.github/net-core/"
args = "test"
}
> git push
! [remote rejected] my-branch -> my-branch (refusing to allow an integration to create or update .github/main.workflow)
error: failed to push some refs to 'https://github.com/my-user-name/my-repo.git'
Run Code Online (Sandbox Code Playgroud) 我正在编写一个 GitHub 操作并希望指示成功、警告(中性)和失败。它看起来像这样:
name: status
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: run checks
continue-on-error: true
run: ./check.sh
Run Code Online (Sandbox Code Playgroud)
我通过一些旧文档发现退出代码 78 给出了该步骤的中立状态。但是我如何让整个工作处于中立状态?
更新:经过测试,我发现退出代码 78 不影响步骤的状态。
我有一个工作流,通过使用来自someuser以下方面的外部操作来 FTPs 文件:
- name: ftp deploy
uses: someuser/ftp-action@master
with:
config: ${{ secrets.FTP_CONFIG }}
Run Code Online (Sandbox Code Playgroud)
这是安全问题吗?例如可以someuser更改ftp-action@master为访问我的secrets.FTP_CONFIG? 我应该将他们的操作复制/粘贴到我的工作流程中吗?
GitHub 操作允许使用分支和标签过滤器,但它们似乎不能一起工作。
例如,此工作流在推送到 master或带有标签的推送上运行。
name: npm Publish
on:
push:
branches:
- master
tags:
- v*
Run Code Online (Sandbox Code Playgroud)
我想设置一个发布工作流,该工作流在标记推送到 master 上运行,而不仅仅是一个或另一个。如何才能做到这一点?
在每个 CI 解决方案中,都可以暂停管道并等待手动批准才能继续(Jenkins、CircleCI、GitlabCI)。
如何使用 Github Actions 做到这一点?
今天刚开始学习 CI/CD。不知道今天之前的 docker 是什么。我能够通过我的 Unity 项目获得在 CircleCI 上工作的 CD。所有运行命令都发生在 docker 容器内。
version: 2.1
executors:
unity:
docker:
# https://hub.docker.com/r/gableroux/unity3d/tags
- image: gableroux/unity3d:2018.2.21f1
jobs:
build-test:
executor: unity
steps:
- checkout
# Install zip
- run: apt-get update
- run: apt-get install zip -y
# Decrypt the license file
- run: openssl aes-256-cbc -d -in .circleci/Unity_v2018.x.ulf.enc -k ${UNITY_LICENSE_DECRYPT_KEY} >> .circleci/Unity_v2018.x.ulf
# Activate unity
- run: /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -logFile -manualLicenseFile .circleci/Unity_v2018.x.ulf || exit 0
# Build Windows and OSX
- run: …Run Code Online (Sandbox Code Playgroud) 我正在为我的 CI 创建一个 GitHub Actions 工作流程,我意识到我在重复一些信息。例如,runs-on作业的 定义为ubuntu-18.04and mac-10.14,或strategy/matrix.
我想将这些版本信息集中在 YAML 文件中的某个位置,并且能够引用这些信息而不是多次复制该值。这样我就不会重复自己 (DRY) 并且我可以轻松地在一个位置更改版本值并防止不一致。
不幸的是,我这样做有困难。我虽然可以用于此的方式是env在 YAML 顶部使用全局环境变量并在其他地方引用它。例如,我想替换如下内容:
on: [push, pull_request]
name: CI
jobs:
build:
name: Build
runs-on: ubuntu-18.04
strategy:
matrix:
toolchain:
- 1.2.3
steps:
- run: ./build.sh 1.2.3
package:
name: Package
runs-on: ubuntu-18.04
steps:
- run: ./package.sh 1.2.3
[...]
Run Code Online (Sandbox Code Playgroud)
和:
on: [push, pull_request]
name: CI
env:
UBUNTU_VERSION: 18.04
TOOLCHAIN_VERSION: 1.2.3
jobs:
build:
name: Build
runs-on: ubuntu-${{ env.UBUNTU_VERSION }}
strategy:
matrix:
toolchain:
- …Run Code Online (Sandbox Code Playgroud) 我想针对不能作为 GA runners 的发行版运行测试。就我而言,容器很好。
我如何用容器描述构建矩阵?
一个自托管运行器一次只能运行一个作业,当没有可用运行器空闲时,后续作业将排队等待,直到有可用运行器空闲。
我可以通过在具有多个 CPU 的同一台机器上运行多个自托管运行器来实现并行性吗?
在GitHub Actions - Getting Started - Usage Limits我发现:
您可以在您的帐户中运行的并发作业数取决于您的 GitHub 计划,如下表所示。如果超过,任何其他作业都会排队。自托管运行器没有并发限制。
但我不确定如何在多核机器的上下文中理解这一点。
continuous-integration github multiprocessing devops github-actions
我正在尝试在私人存储库(svg 图像)中获取徽章的状态,我是从未经身份验证的位置执行此操作,并且收到了预期的 404 错误消息。
有谁知道我应该如何将 access_token 信息添加到 GET 方法中才能实际获取其状态?
从 URL 调用徽章,如:
https://github.com/xx/yy/workflows/zz/badge.svg?event=push&access_token=hhhh
Run Code Online (Sandbox Code Playgroud)
返回 404。
此外,在请求的标头中设置令牌:
headers: {'Authorization': 'token hhhh', ... }
Run Code Online (Sandbox Code Playgroud)
返回 404。
谢谢!