我已经使用 GitHub Actions 设置了 CI。我的一个工作流程是由push事件触发的,但它(或该工作流程的作业)不应同时在多个实例上运行。
是否可以创建一个停止其他工作流程(或作业或不允许工作流程/作业并行运行)的作业?
我宁愿取消“旧”工作,而不是需要完成“新”工作,直到“旧”工作完成。
理想情况下,我还想在最后运行一个作业来完成“旧”作业。(〜保存未完成的状态)。这可以(但不一定)与“新”作业并行运行。
[注意] 我想取消另一个工作流程中的作业,或者取消另一个工作流程,而不是同一工作流程中的另一个作业。
我想使用 github actions 来测试sbt-native-packager docker 集成,它从 Dockerfile 构建 docker 镜像。
问题是 github actions 似乎使用旧的或自定义的 docker 版本。3.0.8被检测为版本。查看失败的集成测试运行,其中指出
[1]检测到的Docker版本DockerVersion(3,0,8,None)与DockerPermissionStrategy.MultiStage不兼容
我想使用最新的 docker 版本 19.x,它允许我们测试所有功能。理想情况下,我能够为不同的测试场景设置不同的 docker 版本,但如果有的话那就太好了。
更新
docker version
Client:
Version: 3.0.8
API version: 1.40
Go version: go1.12.10
Git commit: 2355349d
Built: Wed Oct 23 17:47:59 2019
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 3.0.8
API version: 1.40 (minimum version 1.12)
Go version: go1.12.10
Git commit: adfac69
Built: Wed Oct 23 17:54:47 2019 …Run Code Online (Sandbox Code Playgroud) 我有一个 Angular 应用程序,需要使用 GitHub Actions 将其部署到 Elastic Beanstalk。我遵循此指南按应用程序部署到 ELB。
我收到一个错误:
未给出文件名,部署现有版本 1
- [错误] 部署失败:类型错误 [ERR_INVALID_ARG_TYPE]:“数据”参数必须是字符串、缓冲区、TypedArray 或 DataView 类型之一。接收类型未定义
- [错误]节点运行失败,退出代码为 2
下面是我的main.yml文件
name: CI
on:
push:
branches:
- dry-run-actions
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [10.x]
steps:
- uses: actions/checkout@v1
# I'm removing the intermediate steps to make this code look shorter and these steps are running correctly.
# In these steps I'm "Caching node_module", "npm install" and "npm run build"
- name: Cache node modules …Run Code Online (Sandbox Code Playgroud) 我正在尝试为一个小型 Web 项目测试 Github Actions。我在存储库中有两个项目,我只想为 Web 客户端创建一个部署脚本。
存储库如下所示:
root
|
|-src
| |-API
| |
| |-WebClient
|
|-docs
Run Code Online (Sandbox Code Playgroud)
我想在 WebClient 目录中运行脚本。当我尝试 cd 进入 ./src/webclient 时,出现错误no such file or directory
root
|
|-src
| |-API
| |
| |-WebClient
|
|-docs
Run Code Online (Sandbox Code Playgroud)
“打开 Web 客户端目录”步骤的输出:
total 28
drwxr-xr-x 5 runner docker 4096 Oct 17 18:05 .
drwxr-xr-x 3 runner docker 4096 Oct 17 18:05 ..
drwxr-xr-x 8 runner docker 4096 Oct 17 18:05 .git
drwxr-xr-x 3 runner docker 4096 Oct …Run Code Online (Sandbox Code Playgroud) 我正在通过此 GitHub Action部署 Firebase Cloud Function 。当我使用服务帐户从我自己的机器部署时,它工作正常。使用相同的服务帐户运行操作时,我遇到了以下错误。
最终错误:
错误:错误获取存储源:通用::未知:重试预算用尽(3次尝试):获取gcs源:从gcs解包源:源提取容器以非零状态退出:9
之前的日志:
未找到中央目录结尾签名。该文件不是一个 zipfile,或者它构成了一个多部分存档的磁盘。在后一种情况下,将在此存档的最后一个磁盘上找到中央目录和 zipfile 注释。解压缩:在 /tmp/source-archive.zip 或 /tmp/source-archive.zip.zip 之一中找不到 zipfile 目录,并且找不到 /tmp/source-archive.zip.ZIP,句号。
这是我的操作 yml:
name: Deploy
on:
pull_request:
branches:
- master
jobs:
integration-test:
name: Run tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: checkout repo and set up Node.js v12.x
uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Install dependencies
run: cd ./functions/ && npm install
- id: deploy
name: Deploy my_function to Cloud Functions
uses: google-github-actions/deploy-cloud-functions@v0.1.2
with:
name: …Run Code Online (Sandbox Code Playgroud) github firebase google-cloud-platform google-cloud-functions github-actions
假设我有 2 个分支,一个功能分支和一个开发分支。
功能分支上通常没有 SLA,这意味着我可以整天将损坏的代码推送到它,并且不应触发 CI 构建。
然后我打开一个 PR 进行开发。我在 pull_request: created 上触发 CI 构建操作。假设这个构建失败了。默认情况下我无法合并 PR,这是正确的。
现在我想将编辑推送到功能分支以更新 PR。我希望这些推送触发 CI 构建(因为我们现在正在一个开放的 PR 中工作)。在这些 push-CI 通过之前,我不想让 PR 继续/合并。
我如何在 GitHub Actions 中做到这一点?我试过了,on pull_request: edited但这对我不起作用。
我正在寻找功能等价物:
on:
push:
if: inside_open_pr
Run Code Online (Sandbox Code Playgroud) 我正在使用GitHub Actions来触发我的dockerfile的构建,它将容器上传到GitHub Container Registry。在最后一步中,我通过SSH连接到我的远程DigitalOcean Droplet 并执行脚本以从 GHCR拉取和安装新映像。这个工作流程对我很有用,因为我只在项目中构建了一个容器。现在我正在使用docker compose,因为除了 API 之外我还需要 NGINX。我想保持在一个容器单滴,因为该项目目前对资源的要求不高。
在单个 VM 上使用 Github Actions 和 Docker Compose 自动部署到 DigitalOcean 的正确方法是什么?
我目前已知的选项是:
如果您知道更多选择,这可能更清洁或更高效,请告诉我!
不幸的是,我找到了一个docker-compose with Github Actions for CI 问题以供参考。
单个容器的 GitHub 操作
name: Github Container …Run Code Online (Sandbox Code Playgroud) 我是一些 Julia GitHub 存储库的维护者,这些存储库通过 cron 使用 GitHub Actions 进行夜间 CI 运行。其中一些软件包几个月都没有得到维护,但在生态系统中使用,我想让它们保持活跃。GitHub 的当前政策是在 60 天内没有发生存储库活动时禁用这些操作。
我想知道是否有定义什么存储库活动是为了防止操作被禁用。这是评论一个问题那么简单吗?还是需要将提交推送到主分支?
其次,有没有人找到保持存储库活跃的好解决方案?我正在考虑创建一个每 59 天运行一次的 Lambda 函数,并执行某种形式的存储库活动以保持活动状态。我只找到了这个HackerNews帖子,它提出了这个问题,但是没有评论:
默认情况下,在公共存储库的分支和连续 60 天没有活动的公共存储库中,计划工作流将被禁用。我们对 GitHub Actions 的使用政策进行了两项更改。这些变化将使 GitHub Actions 能够随着我们从 GitHub 社区看到的令人难以置信的采用而扩展。这是一个快速概述:
从今天开始,默认情况下将在公共存储库的新分支中禁用计划工作流。
在连续 60 天没有活动的公共存储库中,计划工作流将被禁用。
我有一个 Github 存储库,在本地安装了commitlint 和 husky,并希望在验证拉取请求时设置一个在每次推送提交时运行 commitlint 的工作流。在主分支上,较旧的提交不遵循传统的提交规则。
我根据此评论创建了一个单独的分支
https://github.com/conventional-changelog/commitlint/issues/586#issuecomment-657226800
我从这个工作流程开始
name: Run commitlint on pull request
on: pull_request
jobs:
run-commitlint-on-pull-request:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup Node
uses: actions/setup-node@v2
with:
node-version: 14.x
- name: Install dependencies
run: npm install
- name: Validate all commits from PR
run: npx commitlint --from HEAD~${{ github.event.pull_request.commits }} --to HEAD --verbose
Run Code Online (Sandbox Code Playgroud)
我按照传统的提交规则又做了两次提交并开始了拉取请求
我想到的第一个解决方案是重新设置所有内容并重命名每个提交以遵循规则,但这需要付出巨大的努力。
我不确定我是否必须在这里改进这条线
npx commitlint --from HEAD~${{ github.event.pull_request.commits }} …
我有一个flutter web应用程序,为了访问数据库,我在secrets.dart文件中硬编码了一个APIKey ,这工作得很好。我已将此文件添加到.gitignore以防止它推送到版本控制。但是当涉及到使用 GitHub 操作部署应用程序时,脚本失败,因为它没有检测到机密文件。
我确实从 Github上查看了关于Encrypted secrets的文档,它基本上允许存储机密。但似乎这些机密只能在 yml 文件中访问。
我想知道如何在我的应用程序中使用这个秘密,以便我的脚本成功运行并部署应用程序。这是我的文件夹结构
lib/
services/
database.dart /// this file uses the APIkey from secrets.dart
secrets.dart /// contains the APIkey
Run Code Online (Sandbox Code Playgroud)
我能想到的解决这个问题的一种方法是使用.env文件,但我不太熟悉如何通过 CI 脚本在 .env 文件中添加密钥。我相信这也能解决我的问题。
这是我的 CI 脚本
# This file was auto-generated by the Firebase CLI
# https://github.com/firebase/firebase-tools
name: Deploy to Firebase Hosting on merge
"on":
push:
branches:
- master
jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: "12.x" …Run Code Online (Sandbox Code Playgroud) github-actions ×10
github ×6
docker ×2
firebase ×1
flutter ×1
git ×1
github-api ×1
pull-request ×1
push ×1
secret-key ×1
web ×1