标签: github-actions

GitHub 操作发布标签

在 GitHub 中创建发布后,我会触发 GitHub 操作。在此操作中,我想从发布中获取一些数据,这可能吗?例如,我想获取标签,然后使用这个标签作为NuGet包版本。有没有办法从工作中获取这些数据?

yaml release github devops github-actions

15
推荐指数
2
解决办法
1万
查看次数

在 GitHub Actions 上的构建阶段安装私有存储库

我正在使用 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)

这是有道理的,因为它是一个私人存储库。

github continuous-deployment github-actions

15
推荐指数
2
解决办法
6355
查看次数

Github 操作:Git diff master...HEAD fatal:没有合并基础

一些背景

长话短说: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/masterpull/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 …

git github-actions

15
推荐指数
1
解决办法
1万
查看次数

GitHub Actions 无法设置 Python 虚拟环境

我需要设置一个虚拟环境,并安装 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)

python github python-3.x python-venv github-actions

15
推荐指数
1
解决办法
8764
查看次数

如果存在 git 标签,请使用 GitHub Action 将标签添加到 Docker 映像

我正在使用 GitHub Actions 使用build-push-action构建 docker 映像。我想在将图像推送到 docker 注册表之前向其添加标签:

  • 每个图像都应该标记为latest
  • 如果触发构建的提交附加了 git 标签,则图像也应该使用此标签进行标记。

我有一些类似的事情:

- 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 标签的情况下添加它。有没有办法做到这一点?

github-actions

15
推荐指数
2
解决办法
3万
查看次数

Github Actions 中的“name”和“id”有什么区别

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)

有什么不同?

github-actions

15
推荐指数
1
解决办法
1万
查看次数

用于并行运行步骤的 GitHub Action 工作流程

我正在做一个项目。我需要创建一个工作流程来在 iOS 设备上运行集成测试。

场景: 我必须在某个端口运行本地服务器,同时我还运行集成测试。

询问:

  1. 我可以在 Github Actions 中实现这一目标吗?
  2. 如果是的话怎么办?

我将感谢您的帮助。

continuous-integration github-actions github-actions-runners

15
推荐指数
1
解决办法
2万
查看次数

从 GitHub Action 发布时,GITHUB_TOKEN 需要什么权限

GITHUB_TOKEN我试图限制我的存储库可以访问的操作范围。其中一个操作会在我的存储库中创建一个草稿版本——我希望它只能创建该草稿,而不能创建其他任何东西。

看看这里的可用权限: https: //docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#permissions没有专门用于发布的权限(甚至没有真正的标记) 。这是否被视为“部署”?我在这里缺少什么吗?

github-actions

15
推荐指数
2
解决办法
1万
查看次数

排除 github 操作工作流结果状态中的退出代码

我有一个工作流程,在其中一个步骤中,如果命令以退出代码 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)

github python-3.x github-actions

15
推荐指数
1
解决办法
1万
查看次数

在工作流程级别环境变量中使用数组?

您可以设置在整个工作流程中可用的环境变量,例如在这篇文章中

(来自链接帖子上的解决方案)

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

15
推荐指数
2
解决办法
1万
查看次数