我刚刚开始探索 Github 操作,但是我发现自己在多个地方放置了一个命令。
我有一个composer.json不在根目录中的 PHP 项目,我的结构如下所示:
my-project:
readme.md
app:
composer.json
Run Code Online (Sandbox Code Playgroud)
显然还有更多内容并且有一个原因,但我composer.json位于一个名为“app”的子目录中。因此,在我的工作流程中,我每次都必须 cd 进入该文件夹才能运行命令:
name: CI
on: [push]
jobs:
phpunit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Setup Symfony
run: |
cd app
cp .env.dev .env
- name: Install Composer Dependencies
run: |
cd app
composer install --prefer-dist
- name: Run Tests
run: |
cd app
php bin/phpunit
Run Code Online (Sandbox Code Playgroud)
如何cd app在每个阶段删除?
我有一个非常长的 Github 操作命令:
name: build
on: [push]
jobs:
build:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- name: Install Prerequisites
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends "a very very long list of prerequisites"
Run Code Online (Sandbox Code Playgroud)
我可以知道是否可以将长命令分成多行以提高可读性?我试过分隔符 '\' 但它不起作用。提前致谢。
此工件中有超过 10,000 个文件,请考虑在上传之前创建存档以提高上传性能。
我的一些 Github Actions 工作流最近开始在安装 Chromedriver 时返回此错误:
Get:1 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
Get:2 http://deb.debian.org/debian buster InRelease [122 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB]
Reading package lists...
E: Repository 'http://security.debian.org/debian-security buster/updates InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
E: Repository 'http://deb.debian.org/debian buster InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
E: Repository 'http://deb.debian.org/debian buster-updates InRelease' changed its 'Suite' value from 'stable-updates' to 'oldstable-updates'
Error: Process completed with exit code 100.
Run Code Online (Sandbox Code Playgroud)
这是我的步骤实现:
Get:1 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB] …Run Code Online (Sandbox Code Playgroud) shell debian selenium-chromedriver debian-buster github-actions
使用GitHub Actionsactions/checkout@v2时,和之间有什么区别actions/checkout@v3?有什么理由使用 v2 而不是 v3 吗?
在一个中运行多个命令的正确方法是什么action?
我想将 python 脚本作为action. 在运行此脚本之前,我需要安装requirements.txt.
Dockerfile其中的命令创建一个RUN pip install -r requirements.txt。python:3图像,并在运行pip install -r requirements.txtin 中entrypoint.sh的参数之前运行文件args中的main.workflow。pip install和python myscript.py作为args我想运行一个存在于我的存储库中的脚本,然后比较 2 个文件(它的输出和一个已经存在的文件)。
这是一个包含两个命令的过程,而在第一个示例中,该pip install命令可以被视为构建命令而不是测试命令。
我可以为另一个命令创建另一个 Docker,其中将包含前一个 Docker 的输出吗?
我正在寻找有关命令 in Dockerfile、inentrypoint或 in位置的指南args。
通常,我的管道需要 15 分钟才能执行。
最近,由于一些奇怪的原因,一些管道需要 45 分钟到 6 小时才能发生故障。
我的问题是:是否可以在 Github Action 的管道上设置默认超时限制(例如,30 分钟后自动取消)?
出于(主要)教学原因,我正在尝试在 GitHub 操作中运行此工作流程:
name: "We Perl"
on:
issues:
types: [opened, edited, milestoned]
jobs:
seasonal_greetings:
runs-on: windows-latest
steps:
- name: Maybe greet
id: maybe-greet
env:
HEY: "Hey you!"
GREETING: "Merry Xmas to you too!"
BODY: ${{ github.event.issue.body }}
run: |
$output=(perl -e 'print ($ENV{BODY} =~ /Merry/)?$ENV{GREETING}:$ENV{HEY};')
Write-Output "::set-output name=GREET::$output"
produce_comment:
name: Respond to issue
runs-on: ubuntu-latest
steps:
- name: Dump job context
env:
JOB_CONTEXT: ${{ jobs.maybe-greet.steps.id }}
run: echo "$JOB_CONTEXT"
Run Code Online (Sandbox Code Playgroud)
我需要两个不同的作业,因为它们使用不同的上下文(操作系统),但是我需要将第一个作业中的步骤输出到第二个作业。我正在尝试使用此处jobs找到的几种上下文组合,但似乎没有任何方法可以做到这一点。显然,只是一个 YAML 变量的名称,它实际上没有上下文,上下文只包含成功或失败。任何的想法?jobsjob
我想为我的 GitHub 操作输入参数创建一个下拉列表。这应该有助于从下拉列表中选择一个值,就像选项如何选择分支一样。
我似乎无法找到如何在文档中的任何位置获取测试工作流程的 URL。我有一个运行测试的简单作业,如果失败,它需要将失败作业的 URL 发布到另一个 Web 服务。
我原以为它会出现在默认环境变量中,但显然不是。
谢谢,
github-actions ×10
github ×3
yaml ×2
azure ×1
debian ×1
docker ×1
dockerfile ×1
github-api ×1
node.js ×1
perl ×1
shell ×1