也许是一个有点宽泛的问题,但我认为这对于任何使用 github 的 python 包的维护者来说都是相关的,并且可以显着减少他们的工作量,所以希望权力能够让它成立。
本质上,在我看来:
所以我的问题是:
我可以想到涉及中间 s3 存储桶的各种解决方案,但对于 pypi 和/或 github 操作在这方面的工作方式,我可能犯了很大的错误,因此我正在浏览一个非常简单的问题。
我的容器有一个多阶段(两个阶段)docker 构建,让我们命名它cont,我希望通过 GitHub Actions 实现自动化。构建过程的第一阶段/docker-image很少改变,并且构建需要很长时间;让我们称之为cont-build。我想通过不在cont-build每次构建整个项目时都进行构建来减少构建持续时间。
cont-build在本地运行该构建时,我可以通过本地 docker 实例轻松获取该映像。我很难将这种简单的可用性转移到 GitHub Actions。
我检查了 Docker 和 GitHub 文档,但无法找到实现此目的的方法。在本地机器上是如此简单,所以我认为在 GitHub-Actions 上不会那么难......
为了保持cont-build图像,似乎有不同的方法
对我来说,第二个似乎更直接、更简单。所以我的方法是发布cont-build到 DockerHub 并cont-build在每次我想要构建cont.
我尝试使用uses: Docker://${{ secrets.DOCKERHUB_USERNAME }}/cont-build,但不知道将其放置在哪里。
在哪里/如何提取下面工作流程中“构建和推送”cont-build所需的映像?Dockerfile-cont另外,如果我的方法不好,那么多阶段构建的一般方法是怎样的,其中构建的一个阶段不会/很少改变,特别是考虑到 GitHub 缓存可能会在一段时间后被删除这一事实?
我意识到我可以使用类似FROM mydockerID/cont-build:latestin的东西Dockerfile-cont,但这似乎不是利用整个 GitHub-Workflow 环境的解决方案。这也意味着我必须以明文形式输入我的 docker-ID,而不是使用 GitHub-Secret。
name: CI for cont
on: workflow_dispatch
jobs:
docker:
runs-on: ubuntu-latest
steps:
- …Run Code Online (Sandbox Code Playgroud) github docker dockerhub docker-multi-stage-build github-actions
我已经设置了一个 Github 操作来在失败时发送一封电子邮件(用于集成测试),并且我想发送另一封电子邮件来通知它已恢复;为此,我需要知道上一次运行是否失败但当前运行是否成功。
这是失败的代码:
(...)
- name: Send mail if failed
if: ${{ failure() }}
uses: juanformoso/action-send-mail@1
with:
(...)
Run Code Online (Sandbox Code Playgroud)
有办法实现我需要的吗?就像是${{ if success_but_previous_failed() }}?
编辑:我的意思是在工作流程“运行”之间,这是我想要检测的情况:
最后一次运行应该发送“测试已恢复”邮件
要pytest在 GitHub Actions 中运行,我必须传递一些secretsPython 运行环境。例如,
- name: Test env vars for python
run: python -c 'import os;print(os.environ)'
env:
TEST_ENV: 'hello world'
TEST_SECRET: ${{ secrets.MY_TOKEN }}
Run Code Online (Sandbox Code Playgroud)
但是,输出如下:
environ({
'TEST_ENV': 'hello world',
'TEST_SECRET':'',
...})
Run Code Online (Sandbox Code Playgroud)
由于GitHub 的修订,它似乎不起作用。
根据 @raspiduino 的回答,我对导入环境变量的两个选项进行了更多探索。
name: python
on: push
jobs:
test_env:
runs-on: ubuntu-latest
steps:
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Test env vars for python
run: python -c 'import os;print(os.environ)'
env:
ENV_SECRET: ${{ secrets.ENV_SECRET }}
REPO_SECRET: ${{ …Run Code Online (Sandbox Code Playgroud) 试图减轻来自 github 的大量 LFS 拉取。产生费用。
所以很高兴看到 github actions 支持缓存来自 LFS 的大 blob。
这是在 actions/checkout 模块存储库中发布的问题#165上发布的示例
- name: Checkout code
uses: actions/checkout@v2
- name: Create LFS file list
run: git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id
- name: Restore LFS cache
uses: actions/cache@v2
id: lfs-cache
with:
path: .git/lfs
key: ${{ runner.os }}-lfs-${{ hashFiles('.lfs-assets-id') }}-v1
- name: Git LFS Pull
run: git lfs pull
- name: run compile and package
run: python CompileAndPackage.py
Run Code Online (Sandbox Code Playgroud)
我当前的流程如下,我声明支持 …
我是第一次使用Github Actions 。我正在使用Vue-CLI并且我想创建一个作业来检查我的文件push并中断构建过程(如果有)ESLint'errors.
这是我package.json的脚本:
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
},
Run Code Online (Sandbox Code Playgroud)
这是我的.github/workflows/main.yml文件:
name: Lint files on push
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install modules
run: npm install
- name: Run ESLint
run: npm run lint
Run Code Online (Sandbox Code Playgroud)
我使用这个模板作为灵感。正如您在下面的屏幕截图中看到的那样。该作业已成功完成,但它不会破坏构建或修复 linting。我究竟做错了什么?
javascript continuous-integration github eslint github-actions
我想对不同的构建类型使用 github 操作矩阵,但我对支持该矩阵的一种情况不感兴趣。如何阻止此案例运行,但仍能成功标记构建。
在这种特殊情况下,我想构建 Windows 和 Ubuntu、32 位和 64 位,但我对在 Ubuntu 上支持 32 位不感兴趣。所以我的矩阵是:
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest]
platform: ['x64', 'x86']
Run Code Online (Sandbox Code Playgroud)
我当前的解决方案是通过添加 if 表达式来停止每个操作的运行:
- name: Build Native
if: ${{ ! (matrix.os == 'ubuntu-18.04' && matrix.platform == 'x86') }}
Run Code Online (Sandbox Code Playgroud)
虽然这工作正常,但我觉得应该有一种更优雅的方法来解决这个问题。谁能帮我让我的 yaml 脚本更漂亮吗?
对于 python 应用程序,我设置了一个 GitHub 操作,该操作在每个要掌握的拉取请求上运行 pytest(和其他工具)。
当工作流程失败时,我在拉取请求页面的“检查”选项卡中看到它,但即使 GitHub 操作失败,我也可以合并我的分支:
在我的存储库中,设置 -> 分支,我创建了一个符合我的需要的新保护规则,但我无法指定任何状态检查。
我想要做的就是使用我的工作流程来允许(或禁止)根据工作流程的输出合并拉取请求。
有任何想法吗?
这些显示 GitHub操作结果的 GitHub 工作流程徽章在 GitHub README.md 等中显示良好,或者在具有连接到 GitHub 的会话的浏览器中粘贴为 URL 时显示良好。
但是,当使用相同的 URL(或从隐身浏览器实例)从 Confluence Cloud 访问时,GtHub 返回未找到 404,这并不奇怪。
GitHub 是否有一项设置,例如 Azure one Azure Pipelines 状态徽章未在 Markdown 中显示以使徽章公开?到目前为止我还没有找到。
(在 Jenkins 上,此选项称为“为匿名用户授予 ViewStatus 权限”。)
聚苯乙烯
今天早上又谷歌了一下,发现:
但第二个链接中的解决方案对我不起作用。
continuous-integration github salesforce confluence github-actions
有没有办法获取 GitHub 操作工作流程的总构建时间?我在 GitHub API 和 GraphQL 中没有找到与此相关的任何内容。
github-actions ×10
github ×7
python ×2
confluence ×1
docker ×1
dockerhub ×1
eslint ×1
git ×1
javascript ×1
pull-request ×1
pypi ×1
python-wheel ×1
salesforce ×1
workflow ×1
yaml ×1