标签: github-actions

关于拉取请求和主分支的 Github 操作

Github 操作仍处于测试阶段并且很新,但我希望有人可以提供帮助。我认为可以在主分支和拉取请求上运行 github 操作,如下所示:

on:
  pull_request
  push:
    branches: master
Run Code Online (Sandbox Code Playgroud)

但这不起作用,并引发错误

yaml:第 4 行:此上下文中不允许映射值

. 相反,我只能让它像这样工作:

on: [pull_request, push]
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?谢谢。

github github-actions

11
推荐指数
1
解决办法
1226
查看次数

在多个存储库上重用 Github Actions 自托管运行器

我有一个自托管 Github Actions 运行器在我的服务器上运行,用于我的 1 个存储库。但是现在我想将同一个跑步者用于其他回购。

有没有一种方法可以将相同的 Github Actions 运行器重用于其他存储库,而无需创建新的运行器?

github ubuntu-server github-actions

11
推荐指数
3
解决办法
2546
查看次数

为通过 GitHub 操作执行的单元测试运行本地主机服务器

我有以下 GitHub 工作流程来构建我的项目

name: build

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: set up JDK 1.8
      uses: actions/setup-java@v1
      with:
        java-version: 1.8
    - name: Build with Maven
      run: mvn clean compile test
Run Code Online (Sandbox Code Playgroud)

构建工作得很好。但是,项目 JUnit 测试要求 localhost 服务器正在侦听端口 4444 ...并且我收到以下错误:

连接被拒绝:localhost/127.0.0.1:4444

服务器在每个 JUnit 测试之前启动,并且是测试套件的一部分。

如何告诉 docker 容器此端口上允许网络连接?或者默认情况下是否有任何开放端口?

workflow yaml github github-actions

11
推荐指数
1
解决办法
2215
查看次数

如何在多个存储库中使用 GitHub Actions 并部署到 GitHub Pages?

有没有办法设置 Github Actions 来运行多个npm run builds?我想使用多个存储库并将它们设置为主站点上的不同网页。

想象一下,我有 3 个存储库:Main、Angular App 和 React App。

Main repo 将包含我的登陆站点。Angular App 和 React App 将是两个不同的站点。

foobar.github.io(主存储库),我会去foobar.github.io/angular导航到我的 Angular 应用程序。foobar.github.io/react将是一个反应应用程序。

每个应用程序将位于 3 个不同的存储库中。有没有办法让我推送到我的 Angular 应用程序,GitHub Actions 会自动执行ng build --prod --base-href='angular', 并更新该页面甚至为所有存储库运行构建并部署它?

要在本地执行此操作,我必须在每个存储库上执行构建命令,然后将每个prod文件夹拖到我的存储库中,然后将其向上推,在我看来,这会变得非常低效。

github github-pages github-actions

11
推荐指数
2
解决办法
5325
查看次数

动态检索 GitHub 操作密钥

我正在尝试在运行时使用 GitHub Actions 动态拉回 GitHub 机密:

假设我有两个 GitHub Secrets:

  1. SECRET_ORANGES : "这是一个橙色的秘密"
  2. SECRET_APPLES : "这是苹果的秘密"

在我的 GitHub Action 中,我有另一个 env 变量,它在分支之间会有所不同

env:
  FRUIT_NAME: APPLES
Run Code Online (Sandbox Code Playgroud)

本质上,我想找到一种方法来进行某种变量替换以获得正确的秘密。因此,在我的一项儿童工作中,我想做以下事情:

env:
  FRUIT_SECRET: {{ 'SECRET_' + env.FRUIT_NAME }}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法但没有运气:

secrets['SECRET_$FRUIT_NAME'] }}
Run Code Online (Sandbox Code Playgroud)

我什至尝试了一种没有串联的更简单的方法,只是为了尝试让它工作

secrets['$FRUIT_NAME'] }}
Run Code Online (Sandbox Code Playgroud)

{{ secrets.$FRUIT_NAME }}

Run Code Online (Sandbox Code Playgroud)

以上都没有奏效。

如果我没有很好地解释这一点,请道歉。我试图让我的例子尽可能简单。

任何人都知道如何实现这一目标?

或者,我想做的是在每个分支的基础上存储秘密

例如:

customer1代码分支中: SECRET_CREDENTIAL="abc123"

customer2代码分支中: SECRET_CREDENTIAL="def456"

然后我可以SECRET_CREDENTIAL根据我所在的分支访问正确的值。

谢谢!

更新:我越来越接近我想要实现的目标:

name: Test

env:
  CUSTOMER: CUSTOMER1

jobs:
  build:
    runs-on: ubuntu-latest
    env:
      AWS_ACCESS_KEY_ID: ${{ env.CUSTOMER }}_AWS_ACCESS_KEY_ID
    steps:
    - uses: actions/checkout@v2
    - run: …
Run Code Online (Sandbox Code Playgroud)

github github-actions

11
推荐指数
4
解决办法
4242
查看次数

在 Github 操作工作流程中根据拉取请求获取基本分支 SHA

在拉取请求的 GitHub 操作中,我需要在“当前主控”的上下文中运行一些代码,然后在 PR 分支的上下文中重新运行相同的代码。

我可以检查将拉取请求与其 PR 所针对的基础进行比较。我如何找到基础分支的 SHA(例如,如果 PR 与主分支相反,则当前主分支)?

jobs:
  job_on_base:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          ref: "${{ github.base_ref }}"
      - run: |
          # Seems like I can get it here with $(git log -1 --format="%H")
          echo "My current SHA is ... ?"

  job_on_pr:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          ref: "${{ github.ref }}"
      - run: |
          echo "My current SHA is $GITHUB_SHA"
          echo "The BASE SHA is ?"
Run Code Online (Sandbox Code Playgroud)

github github-actions

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

如何在 github 操作期间使用 git 命令?

在自托管运行器上的拉取请求期间,尝试仅自动应用黑色和 isort 到某些 python 代码上通过 github 操作更改的文件,然后提交到 PR。但会出现一些错误,例如Not a git repository某些步骤。这是我的工作流程文件:

name: Autolint

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  run-linters:
    name: Run linters
    runs-on: self-hosted
    container:
      image: edlut/azion:monster-action-base
      options: --privileged

    steps:
    - name: Install git 
      run: |
        apt-get install -y git
        git --version
        echo "Path is ... $PATH"
        PATH=$PATH:$(which git)
        echo "Path is ... $PATH"

    - uses: actions/checkout@v2

    - name: Debug - Check if .git folder exists
      run: |
        ls -lah

    - name: Install Python dependencies
      run: pip3 …
Run Code Online (Sandbox Code Playgroud)

python git github github-actions

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

从 github 运行 tox 时出现“ERROR: py37: InterpreterNotFound: python3.7”

我在 GitHub 上有一个带有 tox.ini 文件的项目:

[tox]
envlist = py3

[testenv]
deps = -rrequirements.txt
commands =
    pytest --doctest-modules
Run Code Online (Sandbox Code Playgroud)

效果很好。但是当我用“py37”替换“py3”时,它失败并出现错误:

ERROR:  py37: InterpreterNotFound: python3.7
Run Code Online (Sandbox Code Playgroud)

据我所知,tox应该支持Python 3.7。这是 github 上的 tox 特有的问题吗?

github tox python-3.7 github-actions

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

如何在推送到另一个分支时触发 Github Actions 工作流程?

当我将一些代码推送到 时master,会运行一个工作流程文件。该文件构建工件并将代码推送到另一个分支production

另一个工作流文件如下所示,设置为在任何推送发生时运行production

name: Deploy

on:
  push:
    branches:
      - production

jobs:

# Do something

  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@master

Run Code Online (Sandbox Code Playgroud)

但这个工作流程文件永远不会运行。我希望当工作流文件监听 master 上的推送事件完成后,该文件应该像前一个文件将代码推送到production分支一样运行。我如何确保这种情况发生?

git workflow continuous-deployment github-actions

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

未定义 Jest 模块

我正在编写我的第一个包,我只是将它转换为与 TypeScript 兼容,但这在某种程度上影响了我的 GitHub 工作流程。当我在本地使用 Jest 运行我的测试时,它们工作得很好。当我的测试在 GitHub 上运行时,它成功了10.x,但没有12.x14.x,给我以下错误:

(node:2397) ExperimentalWarning: The ESM module loader is experimental.
ReferenceError: module is not defined
    at file:///home/runner/work/enhancedMathJS/enhancedMathJS/jest.config.js:1:1
    at ModuleJob.run (internal/modules/esm/module_job.js:146:37)
    at async Loader.import (internal/modules/esm/loader.js:182:24)
    at async readConfigFileAndSetRootDir (/home/runner/work/enhancedMathJS/enhancedMathJS/node_modules/jest-config/build/readConfigFileAndSetRootDir.js:126:32)
    at async readConfig (/home/runner/work/enhancedMathJS/enhancedMathJS/node_modules/jest-config/build/index.js:217:18)
    at async readConfigs (/home/runner/work/enhancedMathJS/enhancedMathJS/node_modules/jest-config/build/index.js:406:26)
    at async runCLI (/home/runner/work/enhancedMathJS/enhancedMathJS/node_modules/@jest/core/build/cli/index.js:230:59)
    at async Object.run (/home/runner/work/enhancedMathJS/enhancedMathJS/node_modules/jest/node_modules/jest-cli/build/cli/index.js:163:37)
npm ERR! Test failed.  See above for more details.
enhancedmath@2.0.0 test /home/runner/work/enhancedMathJS/enhancedMathJS
jest
Run Code Online (Sandbox Code Playgroud)

文件jest.config.js

module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node',
  testMatch: …
Run Code Online (Sandbox Code Playgroud)

node.js jestjs github-actions

11
推荐指数
3
解决办法
3796
查看次数