标签: github-actions

将存储库环境变量传递给 Github 操作中的可重用工作流程

我在存储库中定义了一些环境变量DEV/QA/PROD,并设置了一组变量,即 a、b、c,我想将它们传递给可重新启动的工作流程。如何实现这一目标?

我已尝试如下,但在调用的工作流程中无法访问变量值。

根据 GitHub Actions 文档:

要在多个工作流中重用变量,请在组织、存储库或环境级别设置它们,并使用 vars 上下文引用它们。有关详细信息,请参阅“变量”和“上下文”。

但它似乎不起作用。

jobs:
  call-workflow-passing-data:
    uses: octo-org/example-repo/.github/workflows/reusable-workflow.yml@main
    with:
      config-path: .github/labeler.yml
      deploy-a: ${{ vars.a}}
      deploy-b: ${{ vars.b }}
    secrets:
      envPAT: ${{ secrets.envPAT }}
Run Code Online (Sandbox Code Playgroud)

在目标工作流程中,当我使用它时${{ inputs.deploy-a }},它没有给出任何价值。

任何帮助,将不胜感激。

github-actions

3
推荐指数
1
解决办法
1757
查看次数

推送到 git 包失败并显示有效的 GITHUB_TOKEN

充分研究了有关将包推送到 Git 的 github 文档。我正在使用的讲师的代码中满足了文档中的所有要点。

寻找错别字等。

这是课程 YAML,它与讲师版本完全比较:

name: Push to GitHub Packages

on:
  push:
  workflow_dispatch:

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Setup .NET
      uses: actions/setup-dotnet@v1
      with:
        dotnet-version: 5.0.x
    - name: Restore dependencies
      run: dotnet restore
    - name: Build
      run: dotnet build --configuration Release --no-restore 

    - name: Pack
      run: dotnet pack --configuration Release --no-build --output .
      
    - name: Push
      run: |
        dotnet nuget add source --username *** --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/***/index.json"
        dotnet …
Run Code Online (Sandbox Code Playgroud)

github nuget github-actions github-package-registry github-packages

3
推荐指数
1
解决办法
447
查看次数

在 GitHub Actions 上使用arm64

我似乎无法得到这个问题的直接答案。

我想使用 GitHub Actions 在运行于 arm64 上的 macOS 上自动执行安装脚本。

今天这可能吗?

是否有替代 M1/M2 芯片的采用 arm64 架构的运行程序?

github github-actions

3
推荐指数
1
解决办法
4395
查看次数

如何使用Github Actions签出最新提交?

我创建了一个新的Rust项目,并决定,我将给Github Actions一个尝试在每个请求请求上运行自动化构建和测试的方法:

name: Rust
on: [pull_request]
Run Code Online (Sandbox Code Playgroud)

我花了一段时间注意到默认情况下,Github Actions根本签出我的代码,而GITHUB_WORKSPACE只是空的。因此,我尝试手动克隆存储库。做这样的事情:

name: Rust
on: [pull_request]
Run Code Online (Sandbox Code Playgroud)

但这只是检查默认分支上的内容。因此,我调查了检查$GITHUB_SHA结果是否是我的存储库未知的。对于$GITHUB_REF空的情况也是如此。

在这一点上,我对所做的事情一无所知。我最初的假设是,实际上配置为运行的作业on: [pull request]应具有该代码,但无法检出并准备该代码。

我还调查了提供的Checkout操作

此操作将您的存储库签出到$GITHUB_WORKSPACE,以便您的工作流可以访问存储库的内容。

默认情况下,这等效于运行git fetchgit checkout $GITHUB_SHA,因此您将始终以触发该工作流程的版本获得您的回购内容。请参阅此处以了解$GITHUB_SHA各种事件的含义。

但是正如我之前所说,$GITHUB_WORKSPACE完全是空的,a git fetch只会告诉您没有git存储库。

这是一个示例失败

On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
fatal: reference is not a tree: d76745134ae45905e4a0ab8d27c92f1e2544bdc1
##[error]Process …
Run Code Online (Sandbox Code Playgroud)

git continuous-integration github git-checkout github-actions

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

npm 启动后 Github 操作不起作用

我有一个非常简单的配置,以便在 Nextjs 应用程序中使用 Github Actions 使用 Cypress 运行 e2e 测试。当它到达npm start命令时,尽管它似乎可以工作,因为它给出了正确的输出: > Ready on http://localhost:3000,但该步骤保持挂起状态,而不会前进到下一步。

对于如何解决这个问题,有任何的建议吗?

遵循 github 操作配置 ( .github/workflows/nodejs.yml):

name: Node CI

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [8.x, 10.x, 12.x]

    steps:
    - uses: actions/checkout@v1
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - name: npm install, build, and test
      run: |
        npm ci
        npm run build --if-present
        npm start
        npx wait-on http://localhost:3000
      env:
        CI: …
Run Code Online (Sandbox Code Playgroud)

continuous-integration node.js next.js cypress github-actions

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

当我们想用 github 动作执行 ansible 命令时如何管理 ssh 密钥文件

我有一个 github 存储库、一个 docker 存储库和一个 Amazon ec2 实例。我正在尝试使用这些工具创建 CI/CD 管道。这个想法是在 github 存储库主分支发生推送时将 docker 容器部署到 ec2 实例。我已经使用 github 操作来构建代码、构建 docker 镜像并将 docker 镜像推送到 docker hub。现在我想将最新的镜像从 docker hub 拉到远程 ec2 实例并运行它。为此,我试图从 github 操作执行 ansible 命令。但我需要将 .pem 文件指定为 ansible 命令的参数。我试图将 .pem 文件保存在 github secretes 中,但没有用。我真的很困惑如何进行这个。这是我的 github 工作流文件

name: helloworld_cicd
on: 
  push:
    branches: 
      - master
jobs:

  build:
    name: Build
    runs-on: ubuntu-latest
    steps:

    - name: Check out code into the Go module directory
      uses: actions/checkout@v1

    - name: Go Build
      run: go build

    - name: Docker …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 ansible docker github-actions

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

如何设置使用 pipenv 运行 pytest 的 GitHub 操作?

我有一个使用pipenv运行pytest的 Python 项目。我想创建一个GitHub 操作,每次提交拉取请求时都会运行 pytest。

我试过使用python-app.yml starter 工作流。

name: Python application

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1
    - name: Set up Python 3.8
      uses: actions/setup-python@v1
      with:
        python-version: 3.8
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt
    - name: Lint with flake8
      run: |
        pip install flake8
        # stop the build if there are Python syntax errors or undefined names
        flake8 . …
Run Code Online (Sandbox Code Playgroud)

python github pytest pipenv github-actions

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

无法安装 python 包并在 GitHub Action 中使用它

我有一个带有简单 GitHub Actions 工作流程的GitHub Repo

name: CI

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1
    - name: Run a one-line script
      run: echo Hello, world!
    - name: Run a multi-line script
      run: |
        echo Add other actions to build,
        echo test, and deploy your project.
        pip install twine
        twine --help
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它安装了麻线,但无法运行它,说找不到命令:

...
Successfully installed Pygments-2.5.2 bleach-3.1.0 certifi-2019.11.28 chardet-3.0.4 docutils-0.15.2 idna-2.8 pkginfo-1.5.0.1 readme-renderer-24.0 requests-2.22.0 requests-toolbelt-0.9.1 setuptools-42.0.2 six-1.13.0 tqdm-4.40.0 twine-1.15.0 urllib3-1.25.7 webencodings-0.5.1
/home/runner/work/_temp/1643cb1d-8b12-4aa8-8e1d-bd5bba60fd5b.sh: line 4: twine: …
Run Code Online (Sandbox Code Playgroud)

python pip github-actions

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

在 GitHub Actions 上通过 SSH 自连接

我找不到在 GH Actions 上使用正在运行的 SSH 服务器的方法。当我尝试127.0.0.1通过 ssh连接时,有一个服务器并响应,但不知何故忽略了.ssh(或无论如何)中的配置文件。

这是我使用的脚本(一般设置似乎不会影响结果):

ssh-keygen -t ed25519 -f ~/.ssh/whatever -N ''
cat > ~/.ssh/config <<EOF
Host host.example
    User $USER
    HostName 127.0.0.1
    IdentityFile ~/.ssh/whatever
EOF
echo -n 'from="127.0.0.1" ' | cat - ~/.ssh/whatever.pub > ~/.ssh/authorized_keys
ssh -o 'StrictHostKeyChecking no' host.example id
Run Code Online (Sandbox Code Playgroud)

我对结果不满意,因为我无法在本地重现日志(我拥有的每台机器都表现正常,即允许执行命令)。

Generating public/private ed25519 key pair.
Created directory '/home/runner/.ssh'.
Your identification has been saved in /home/runner/.ssh/whatever.
Your public key has been saved in /home/runner/.ssh/whatever.pub.
The key fingerprint is:
SHA256:2ZCprVg5rZXp0IguQlCanUVTlCX7IFt2TPTnimdk0gM runner@fv-az60
The key's …
Run Code Online (Sandbox Code Playgroud)

ssh github-actions

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

在 GitHub 操作中使用本地 Dockerfile?

我想设置一个 GitHub Action 来构建我的项目并在本地运行测试。因为我用.devcontainer我有一个Dockerfile.devcontainer/Dockerfile提供一切我需要建立我的项目。

现在我想写一个 GitHub Action 来在每次推送时构建项目。在本地我会这样做:

docker build -t local - < .devcontainer/Dockerfile
docker run -it -v $(pwd):/srv -w/srv local make test
Run Code Online (Sandbox Code Playgroud)

GitHub 操作看起来很麻烦,但我最终写了这个:

on: push
jobs:
  build:
    name: build
    runs-on: ubuntu-latest
    steps:
      - name: check out repository
        uses: actions/checkout@v2
      - name: build project
        container:
          image: ".devcontainer/Dockerfile"
          volumes:
            - .:/srv
        run: make test
Run Code Online (Sandbox Code Playgroud)

不幸的是它不喜欢container关键字。

有什么线索吗?

docker github-actions

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