标签: github-actions

GitHub Actions - 为 Docker 容器安装卷

我一直在 GitHub Actions 中快速了解 Docker 的使用情况,并且不断运行如下代码:

docker run --rm -t \
            -v "/home/runner":"/home/runner" \
            -v "/home/runner/work/_temp/_github_home":"/github/home" \
            -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" \
            -v "${{ github.workspace }}":"/github/workspace" \
            ...
Run Code Online (Sandbox Code Playgroud)

我很好奇安装所有这些卷的动机是什么。我得到了/github/workspace一个,可以访问 Docker 容器内的所有存储库文件,但是这些文件有什么用呢?

  • /home/runner
  • /home/runner/work/_temp/_github_home
  • /home/runner/work/_temp/_github_workflow

“你说什么,你在哪里看到的?”

然而,我找不到任何有关您为什么要这样做的文档。

docker github-actions

6
推荐指数
0
解决办法
2492
查看次数

如何增加 github 操作 Postgres 中的 max_connection

我想max_connections在github上增加Postgres服务的action。官方文档没有提及如何操作。有一些巧妙的技巧吗?

我尝试了这个 SO 答案,它似乎在 github 操作环境中不起作用。

postgresql github-actions

6
推荐指数
1
解决办法
434
查看次数

在 GitHub Actions 工作流程中,如何确定当前存储库所在的组织?

我正在尝试使用类似于以下的结构来组织我的工作流程工件(在自托管运行器上):

c:\github\artifacts\{org}\{repo}\{runid}
Run Code Online (Sandbox Code Playgroud)

我们企业中的不同组织可以拥有同名的存储库,因此我希望能够按组织名称进行组织。

到目前为止我有这个:

c:\github\artifacts\{org}\{${{ github.event.repository.name }}\${{ github.run_id }}\
Run Code Online (Sandbox Code Playgroud)

如何确定组织名称?

github-actions github-actions-self-hosted-runners

6
推荐指数
1
解决办法
7147
查看次数

在 Github 操作中,在表达式中是否有办法确定推送/提交到的路径/目录?

在单个 Github 操作脚本中,我希望区分 2 个不同路径/目录上的提交。下面的脚本本质上是我想要做的。我不确定的是如何确定表达式中承诺的路径。现在我有github.event.path但这可能是错误的。

on:
  push:
    branches: [ master ]
    paths: 
      - 'Path1/**'
      - 'Path2/**'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: do something when Path1 directory has a commit
        if: github.event.path == 'Path1/**'
        run: <do something>
      - name: do something when Path2 directory has a commit
        if: github.event.path == 'Path2/**'
        run: <do something else>
Run Code Online (Sandbox Code Playgroud)

github-actions

6
推荐指数
2
解决办法
6900
查看次数

我可以为 Windows 运行程序上的 GitHub 操作步骤指定用户帐户吗?

我正在 Windows 运行器上使用 GitHub 操作步骤。我尝试运行的可执行文件的要求之一是它不能以管理员身份运行。

有什么方法可以创建并成为 Windows 运行者上操作使用的默认管理员帐户的不同用户吗?

windows psexec runas github-api github-actions

6
推荐指数
2
解决办法
2196
查看次数

Github Action 中的 Codesign 提示输入 keychian 密码

我想使用 Github Action 来归档我的 swift 项目。

这是 Github Action yaml:

name: macos_deploy

on:
  push:
    # tags: [ release* ]


jobs:
  macos_deploy:
    runs-on: self-hosted

    steps:
      - name: "Checkout Project"
        uses: actions/checkout@v2

      - name: "Import Certificate: Development"
        uses: devbotsxyz/import-signing-certificate@v1
        with:
          certificate-data: ${{ secrets.SIGNING_CERTIFICATE_P12_DATA }}
          certificate-passphrase: ${{ secrets.SIGNING_CERTIFICATE_PASSWORD }}
          keychain-password: ${{ secrets.KEYCHAIN_PASSWORD }}

      - name: "Build & Archive"
        uses: devbotsxyz/xcode-archive@v1
Run Code Online (Sandbox Code Playgroud)

当我在 Github 托管的运行器上运行它时,它将挂在此处:

    /usr/bin/codesign --force --sign XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -o runtime --preserve-metadata\=identifier,entitlements,flags --generate-entitlement-der /Users/runner/Library/Developer/Xcode/DerivedData/XXXXX-gfxcztatpmvmaqcfrbtnfpexcjrn/Build/Intermediates.noindex/ArchiveIntermediates/XXXXX/InstallationBuildProductsLocation/Applications/XXXXX.app/Contents/Frameworks/Sparkle.framework/Versions/B
/Users/runner/Library/Developer/Xcode/DerivedData/XXXXX-gfxcztatpmvmaqcfrbtnfpexcjrn/Build/Intermediates.noindex/ArchiveIntermediates/XXXXX/InstallationBuildProductsLocation/Applications/XXXXX.app/Contents/Frameworks/Sparkle.framework/Versions/B: replacing existing signature
Run Code Online (Sandbox Code Playgroud)

所以我尝试设置一个自托管运行器来调试。

现在我发现它需要我提供钥匙串的密码。

在此输入图像描述

如何避免这个对话框?我想我已经在这一步提供了密码Import Certificate: Development。 …

macos keychain github-actions

6
推荐指数
0
解决办法
622
查看次数

将 docker 映像推送到 ECR 时,Github 操作失败

我指的是官方github指南来设置自动部署到ECS https://docs.github.com/en/actions/deployment/deploying-to-your-cloud-provider/deploying-to-amazon-elastic-容器服务

我的deploy.yaml工作流程看起来与上面链接中的工作流程相同,只是替换了正确的环境变量

我已完成所需的所有步骤,并已在 AWS 上启动并运行所有必要的基础设施。但是当工作流程被触发时,它总是无法将 docker 镜像推送到 ECR。重试几次后,退出

EOF
Error: Process completed with exit code 1.
Run Code Online (Sandbox Code Playgroud)

从我在 github 操作上看到的输出,我相信登录 ecr 步骤成功,并且还可以确认它正在推送到正确的 ECR 存储库,但由于某种原因推送失败。

我已经将图像推送到本地存储库并且它可以工作,所以我认为 AWS 方面没有任何问题。

amazon-web-services docker amazon-ecr github-actions

6
推荐指数
2
解决办法
8323
查看次数

GitHub Action:如何从表达式求值中获取值并将其分配给环境变量

环境表达式通常直接赋值,如下例所示

  - name: set up env var
    env:
      TAG: v1.2.3
    run: echo $TAG
Run Code Online (Sandbox Code Playgroud)

但是如何从 shell 脚本评估中获取值呢?例如,在我的终端中,我可以通过以下方式获取当前标签git describe --exact-match --tags $(git log -n1 --pretty='%h')

但是当我尝试将此脚本放入环境中时,如下所示

  - name: set up env var
    env:
      TAG: $(git describe --exact-match --tags $(git log -n1 --pretty='%h'))
    run: echo $TAG 
Run Code Online (Sandbox Code Playgroud)

打印出的 echo$(git describe --exact-match --tags $(git log -n1 --pretty='%h'))意味着它不被计算而是被视为字符串。

如何获取 的值git describe --exact-match --tags $(git log -n1 --pretty='%h')并将其分配给环境变量TAG

github-actions

6
推荐指数
1
解决办法
8848
查看次数

排除路径的 Github 工作流程不起作用

我无法让 Github 工作流功能排除正常工作的路径,并且在堆栈溢出上找不到类似的问题。最相似的情况是Github 工作流程不会在推送基于路径的过滤时触发,但它对我没有帮助。

我的 PR 工作流程如下:

name: Build For PRs

on:
  pull_request:
    types: [opened, synchronize, ready_for_review]
    paths:
      - 'src/**'
      - '!src/abc/**'
      - '!src/def/**'
      - '!src/ghi/**'
      - '!src/docker-compose*.yml'
      - '!**.md'
Run Code Online (Sandbox Code Playgroud)

我希望它在“src”下的任何文件发生更改时在 PR 上运行,除非负过滤器之一匹配。

即使更改 .md 文件也会触发此 WF。我怎样才能实现上面的逻辑呢?

continuous-integration github github-actions

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

Github 操作权限被拒绝(公钥)

我在尝试启动 Github 操作工作流程时陷入困境。Flutter项目有一个自定义包的依赖。我在 Github 存储库中有这个自定义包。这是我在 pubspec.yaml 中设置此依赖项的方式:

xxxx_package:
git:
  url: git@github.com:USER_NAME/xxxx_package.git
  ref: develop
Run Code Online (Sandbox Code Playgroud)

如果我启动flutter pub get命令,它就会成功结束,我可以毫无问题地构建和执行应用程序。

但是当我向 Github 发送推送并启动工作流程时,该过程结束时出现以下错误:

Running "flutter pub get" in Project-Flutter...            
Git error. Command: `git clone --mirror git@github.com:xxx/xxxx_package.git /home/runner/.pub-cache/git/cache/xxxx_package-123456789`
stdout: 
stderr: Cloning into bare repository '/home/runner/.pub-cache/git/cache/xxxx_package-123456789'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Run Code Online (Sandbox Code Playgroud)

这是我的操作工作流程文件:

name: Check merge

on:
  push:
    branches: [ main, develop ]

  pull_request:
    branches: [main, develop]
    

  workflow_dispatch:

jobs:
  build:
    name: flutter environment
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2 …
Run Code Online (Sandbox Code Playgroud)

flutter github-actions

6
推荐指数
1
解决办法
6879
查看次数