在 GitHub 中创建发布后,我会触发 GitHub 操作。在此操作中,我想从发布中获取一些数据,这可能吗?例如,我想获取标签,然后使用这个标签作为NuGet包版本。有没有办法从工作中获取这些数据?
我正在使用 GitHub Actions 部署到 Azure。在这个项目中,我使用我们自己的私有存储库,该存储库托管在 GitHub 上。这些存储库将在构建期间安装,它们的链接存储在 中requirements.txt,例如:
git+ssh://git@github.com/org-name/package-name.git
Run Code Online (Sandbox Code Playgroud)
在本地,安装需求没有问题,因为我可以通过 SSH 访问这些私有存储库。但是我如何在 GitHub 操作中构建期间访问这些内容。
我收到错误:
Collecting git+ssh://****@github.com/org-name/package-name.git (from -r requirements.txt (line 1))
Cloning ssh://****@github.com/org-nam/package-name.git to /tmp/pip-req-build-9nud9608
ERROR: Command errored out with exit status 128: git clone -q 'ssh://****@github.com/org-name/package-name.git' /tmp/pip-req-build-9nud9608 Check the logs for full command output.
Error: Process completed with exit code 1.
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为它是一个私人存储库。
长话短说:jest --changedSince=master当我打开一个新的拉取请求时,我正在尝试运行。jest ChangedSince 标志git diff master...HEAD在后台运行。这导致了一个我似乎无法理解的错误。
为了调试这个,我有一个Github Action与以下内容非常相似的步骤:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: |
git fetch --no-tags --depth=1 origin master
git checkout -t origin/master
git checkout pull/1/merge
git diff master...HEAD
Run Code Online (Sandbox Code Playgroud)
这会导致以下错误(这与 Jest 返回的错误相同):
fatal: refs/remotes/origin/master...HEAD: no merge base
Run Code Online (Sandbox Code Playgroud)
当我在本地运行它时,问题不会发生(想象一下)。我确实意识到这里最大的问题很可能是该actions/checkout@2操作没有获取整个存储库。这就是我添加git fetch&git checkout -t origin/master和pull/1/merge命令的原因。
我确实尝试运行git branch -a调试是否按预期工作,结果如下:
* (HEAD detached at pull/1/merge)
master
remotes/origin/master
remotes/pull/1/merge
Run Code Online (Sandbox Code Playgroud)
运行所需的所有参考git diff master...HEAD …
我需要设置一个虚拟环境,并安装 Flask 应用程序的要求。
然而,这里出现错误:
sudo apt install python3-venv
sudo python3.8 -m venv venv
Run Code Online (Sandbox Code Playgroud)
这是.yml我的 GitHub Actions 的文件。
name: TEST
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Setup system group
run: |
if [ ! $( getent group uni ) ]; then sudo addgroup --system uni; fi
- name: Setup system user
run: |
if [[ $(getent passwd uni) = "" ]]; then sudo adduser --no-create-home --force-badname --disabled-login …Run Code Online (Sandbox Code Playgroud) 我正在使用 GitHub Actions 使用build-push-action构建 docker 映像。我想在将图像推送到 docker 注册表之前向其添加标签:
latest我有一些类似的事情:
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
context: .
push: true
tags:
- user/image:latest
Run Code Online (Sandbox Code Playgroud)
总是添加更多标签很容易,但我只想在有 git 标签的情况下添加它。有没有办法做到这一点?
在Google 应用程序引擎部署的 github 操作中,在 github 操作中引用了 id:
- id: Deploy
uses: google-github-actions/deploy-appengine@main
with:
credentials: ${{ secrets.GCP_SA_KEY }}
Run Code Online (Sandbox Code Playgroud)
但Github Actions 示例并不引用 id,而是将名称引用为 id:
每个作业必须有一个与该作业关联的 id。键 job_id 是一个字符串,其值是作业配置数据的映射。您必须将 <job_id> 替换为作业对象唯一的字符串。<job_id> 必须以字母或 _ 开头,并且仅包含字母数字字符、- 或 _。
jobs:
my_first_job:
name: My first job
my_second_job:
name: My second job
Run Code Online (Sandbox Code Playgroud)
有什么不同?
我正在做一个项目。我需要创建一个工作流程来在 iOS 设备上运行集成测试。
场景: 我必须在某个端口运行本地服务器,同时我还运行集成测试。
询问:
我将感谢您的帮助。
continuous-integration github-actions github-actions-runners
GITHUB_TOKEN我试图限制我的存储库可以访问的操作范围。其中一个操作会在我的存储库中创建一个草稿版本——我希望它只能创建该草稿,而不能创建其他任何东西。
看看这里的可用权限: https: //docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#permissions没有专门用于发布的权限(甚至没有真正的标记) 。这是否被视为“部署”?我在这里缺少什么吗?
我有一个工作流程,在其中一个步骤中,如果命令以退出代码 1(失败)结束,我想运行下一个命令/作业(修复导致上一个命令失败的问题),但我不希望这样退出代码 1 影响工作流结果状态。
在这种情况下,如果我的退出代码为 1,即使我解决了问题,结果状态也将为failure,但我希望结果状态为success如果第二个命令解决了问题。
这可能吗?
这是我的workflow.yml:
\
name: autoblack
on: [pull_request, push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Set up Python 3.8
uses: actions/setup-python@v2.2.2
with:
python-version: 3.8
- name: Install Black
run: pip3 install git+git://github.com/psf/black
- name: Run black --check .
run: black --check .
reformat:
runs-on: ubuntu-latest
needs: [build]
if: always() && (needs.build.result == 'failure')
steps:
- uses: actions/checkout@v2.3.4
- name: Set up Python 3.8
uses: actions/setup-python@v2.2.2
with:
python-version: 3.8 …Run Code Online (Sandbox Code Playgroud) 您可以设置在整个工作流程中可用的环境变量,例如在这篇文章中。
(来自链接帖子上的解决方案)
name: Git Pull Request Workflow
on:
workflow_dispatch:
pull_request:
branches:
- master
env:
one: 1
two: zwei
three: tres
jobs:
first-job:
runs-on: ubuntu-latest
steps:
- run: |
echo "${{ env.one }}"
echo "${{ env.two }}"
echo "${{ env.three }}"
Run Code Online (Sandbox Code Playgroud)
我有一个使用矩阵策略的工作流程,如果我更改它,我必须在每个作业中更新它。我尝试将其设为全局变量,如下所示:
name: Model Multipliers
on:
push:
branches:
- main
env:
FRUIT: ["Apple", "Pear", "Banana", "Orange"]
jobs:
ssql-get:
runs-on: ubuntu-latest
strategy:
matrix:
FRUIT: ${{ env.FRUIT }}
name: Get data
steps:
- name: Checkout cum-rev repo
Run Code Online (Sandbox Code Playgroud)
但这给出了错误:
工作流程无效。.github/workflows/main.yml(行:12,列:9):不需要序列 .github/workflows/main.yml(行:19,列:15):无法识别的命名值:'env'。位于表达式内的位置 1:env.FRUIT …
github-actions ×10
github ×4
python-3.x ×2
devops ×1
git ×1
python ×1
python-venv ×1
release ×1
yaml ×1