标签: github-actions

GitHub Actions 上 Windows 环境中的测试容器:“无法找到有效的 Docker 环境。请查看日志并检查配置”

我们在spring-boot-admin项目中大量使用testcontainers-java。由于我们还希望能够在 Windows 上运行 Maven 构建,因此我们使用矩阵策略构建(如本答案中假设的那样)向 GitHub Actions Pipeline 添加了一个环境,如下所示:windows-latest

name: build

on:
  push:

jobs:
  build:
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]

    runs-on: ${{ matrix.os }}
    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 -B install --no-transfer-progress
Run Code Online (Sandbox Code Playgroud)

现在我们的 Testcontainers JUnit 测试用例失败(请参阅完整的构建日志):

[INFO] Running de.codecentric.boot.admin.server.eventstore.HazelcastEventStoreWithClientConfigTest
Error:  Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.877 s <<< …
Run Code Online (Sandbox Code Playgroud)

java windows maven testcontainers github-actions

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

在 bash 中检查 git 中的任何更改时 if-then-else 条件的预期行为与在 github actions 工作流程中编写时相反

如果您在没有更改的情况下有提交语句,那么它将返回退出代码 1,这将导致 GitHub 工作流失败。

作为解决方法,我尝试修改此SO 帖子以及此答案中的解决方案,该答案基本上是使用 -

git diff-index --quiet HEAD
Run Code Online (Sandbox Code Playgroud)

在我当地的 bash 上,它按预期工作。当我运行时echo "$?",输出 1 或 0 符合我的预期。

基于该文档和有关在 GitHub 工作流程中设置环境变量的文档,我的工作流程文件中有以下内容 -

git diff-index --quiet HEAD
Run Code Online (Sandbox Code Playgroud)

但是,每当有要提交或跟踪的更改时,环境变量changes_exist就会发生变化false,反之亦然。

这与我的期望恰恰相反。

作为一种解决方法,直到我弄清楚这一点,我使用以下在工作人员中完美运行的方法 -

git diff-index --quiet HEAD || git commit -m "updating datasets"
Run Code Online (Sandbox Code Playgroud)

知道为什么上面的方法有效,而使用的if - then - else行为与它应该的相反吗?

git github github-actions

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

使用 github 工作流程部署到 kubernetes 集群

我已经使用 .AWS 在 AWS 上设置了一个 kubernetes 集群kops

我正在尝试使用 github 操作自动化部署。

name: Build and Deploy

on:
  push:
    branches:
      - develop

jobs:
  build_docker_image:
    - uses: actions/checkout@v2
    - name: Build the tagged Docker image
      run: docker build --target dev -t org/customer-service-backend:la
  push_docker_image_to_github-packages:
    - uses: docker/build-push-action@v2
      with:
        username: ${{ github.actor }}
        password: ${{ secrets.GITHUB_TOKEN }}
        registry: docker.pkg.github.com
        repository: org/customer-service-backend:latest
        tag_with_ref: true
  deploy_to_kubernetes_cluster:
    ... what to do here?
Run Code Online (Sandbox Code Playgroud)

我能够构建图像并推送到 gihub 包。

我已经deployment.yml在存储库的根目录中创建了。

如何部署到kubernetes集群?

另外,我用 标记图像latest。可以吗还是我需要用于GITHUB_REF标记?

更新

我能够配置所有的东西。我只需要 …

github docker kubernetes github-actions

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

如何通过 Github Actions 和 Monorepo 使用子文件夹?

它有一个 monorepo,其中包含两个子文件夹,它们是:

文件夹

每个都有各自的项目和包。我正在尝试访问某个子文件夹以执行其各自的操作,但当我运行命令来使用 lint 进行测试时,它给出了错误,即:

error Couldn't find a package.json file in "/github/workspace"
Run Code Online (Sandbox Code Playgroud)

它可能不应该访问前端子文件夹。我需要它来运行该子文件夹中的所有命令,我该怎么做?

我的.YML

name: PIPELINE OF TESTS

on:
  push:
    branches: [frontend-develop, backend-develop]
  pull_request_target:
    types: [opened, edited, closed]
    branches: [main]

jobs:
  test-frontend:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./frontend
    strategy:
      matrix:
        node-version: [14.x]
        architecture: [x64]
    steps:
      - name: CHECK-OUT GIT REPOSITORY
        uses: actions/checkout@v2

      - name: USE NODEJS ${{ matrix.node-version }} - ${{ matrix.architecture }}
        uses: actions/setup-node@v2

      - name: INSTALL PROJECT DEPENDENCIES (YARN)
        uses: borales/actions-yarn@v2.0.0
        with:
          cmd: install

      - …
Run Code Online (Sandbox Code Playgroud)

github-actions

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

在 CircleCI 工作流程或作业后触发 Github 操作

我想设置 github 操作,以便对 docker 映像执行安全扫描。然而,我想要扫描的图像的构建和推送是由 CircleCI 完成的。因此,在执行安全扫描之前,我需要确保图像已正确构建并推送到我的存储库上。

我知道存在一个触发 CircleCI 作业的操作,但是有没有办法从 Circle CI 触发我的 Github 操作的执行?

感谢您的回答或您可以提供的任何解决方法:)

continuous-integration continuous-deployment docker circleci github-actions

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

使用 SSH 远程进行 Git 推送错误:加载密钥“/path/to/file_id_rsa”:格式无效

我尝试使用git push来自 GitHub CI 操作的 SSH 远程操作并收到错误:Load key "/tmp/341b5794-f0a2-4534-90dd-f791510ec77a_id_rsa": invalid format

密钥位于存储库秘密中。我得到它的信息ssh-keygen -l -v -f key_id_rsa,它的输出等于我本地机器上的输出。在我的机器上我可以用这个键进行推送

GIT_SSH_COMMAND='ssh -v -o StrictHostKeyChecking=accept-new -i /tmp/341b5794-f0a2-4534-90dd-f791510ec77a_id_rsa'
Run Code Online (Sandbox Code Playgroud)

Thewe就是/tmp/341b5794-f0a2-4534-90dd-f791510ec77a_id_rsa.pub文件

完整的输出ssh -v内部git push

+ git push dest-push-remote gh-pages
OpenSSH_8.2p1 Ubuntu-4ubuntu0.2, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to github.com [140.82.112.4] port 22.
debug1: Connection …
Run Code Online (Sandbox Code Playgroud)

git ssh github github-actions

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

我是否需要 Docker 才能在 GitHub 操作上运行 Redis

我对 GitHub actions 和 Redis 还很陌生。我正在 GitHub 操作上运行此 CI(代码如下)

name: sanity check
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
jobs:
  tests:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        redis-version: [6]
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: "14"
      - uses: supercharge/redis-github-action@1.2.0 # sets up Redis
        with:
          redis-version: ${{ matrix.redis-version }}
      - run: node -v
      - run: yarn -v
      # - run: redis-cli ping
      - run: yarn install
      - run: yarn test --detectOpenHandles

Run Code Online (Sandbox Code Playgroud)

这样我就可以使用 Redis 执行集成测试,但是这个 CI 不会退出(我正在使用 Jest 运行测试) …

redis docker github-actions

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

如何在 GitHub 操作中存储和使用 SSL/TLS 证书进行身份验证?

问题的简短版本是:如何正确存储和使用 SSL/TLS 第三方证书以在 GitHub 操作中使用第三方服务进行身份验证?

长篇故事和设置如下:

  1. 我有一个 Kafka 代理作为云服务,使用 SSL/TLS 进行身份验证。服务器给我:
  • CA证书:ca.pem
  • 访问证书:service.cert
  • 访问密钥:service.key
  1. 带有虚拟环境 pipelinenv 的消费者和生产者的 Python 项目如果工作正常的话,所有这些都会被提供给 Kafka 生产者/消费者,并使用我运行 Ubuntu 的 PC 上的这些文件进行授权。

但是,当我尝试对 GitHub 操作执行类似的技巧时,它不会给我 SSL 错误。这就是我所做的:

  1. 将所有文件的内容复制到各自的 github Secret 中。(我已经尝试了很多方法来避免特殊符号问题,但结果总是相同的)

  2. 当消费者或生产者启动时,它需要所有这 3 个文件的路径,而不是它们的内容。因此,我从密钥创建证书文件,如下所示:

       pipenv run mkdir ${{ github.workspace }}/certs
       pipenv run printf "%s" $(echo ${{ secrets.CA }}) > ${{ github.workspace }}/certs/ca.pem
    
       pipenv run printf "%s" $(echo ${{ secrets.SERVICE_CERT }}) > ${{ github.workspace }}/certs/service.cert
    
       pipenv run printf "%s" $(echo ${{ secrets.SERVICE_KEY }}) > ${{ github.workspace }}/certs/service.key …
    Run Code Online (Sandbox Code Playgroud)

ssl apache-kafka tls1.2 pipenv github-actions

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

为 Firebase 托管设置 Github 操作时找不到 package.json 文件

当初始化 firebase 托管的 github 操作时,我指定了以下内容:

设置工作流程以在每次部署之前运行构建脚本?是 每次部署之前应运行什么脚本?纱线运行构建。

这个工作流程给了我错误

Run yarn run build
yarn run v1.22.10
error Couldn't find a package.json file in "/home/runner/work/SpaceBar/SpaceBar"
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Error: Process completed with exit code 1.
Run Code Online (Sandbox Code Playgroud)

我的项目目录中有一个 package.json 文件。为什么说找不到呢?

firebase-hosting-merge.yml 位于名为 spacebar 的目录中,其中包含另一个名为 spacebar 的目录,其中包含 package.json 文件。是否有办法 cd 到该文件的子目录中

name: Deploy to Firebase Hosting on merge
'on':
  push:
    branches:
      - main
jobs:
  build_and_deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - run: yarn run build
      - uses: FirebaseExtended/action-hosting-deploy@v0
Run Code Online (Sandbox Code Playgroud)

firebase firebase-hosting github-actions

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

Github 在运行操作时返回空字符串作为秘密

当我做

${{ secrets.MY_SECRET }}
Run Code Online (Sandbox Code Playgroud)

它返回空字符串,

我是提交更改的人,它是我的存储库,因此应该不存在有关秘密授权的问题,并且也克隆了它而不是分叉,

这就是我的行动工作的样子

build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        
      - name: Setup Node.js environment
        uses: actions/setup-node@v2.1.5

      - name: Download Modules
        run: npm ci
      - name: Test
        env:
          TEST_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          TEST_SECRET: ${{ secrets.TEST_SECRET }}
        run: |
          echo ${#TEST_GITHUB_TOKEN}
          echo ${#TEST_SECRET}

      - name: React Build 
        run:  npm run build
        env:
          CI: true
          REACT_APP_FIREBASE_API_KEY: ${{ secrets.REACT_APP_FIREBASE_API_KEY }}
          REACT_APP_PIXABAY_API_KEY: ${{ secrets.REACT_APP_PIXABAY_API_KEY }}
          REACT_APP_TEST: 'TESTING'

      - name: Upload a Build Artifact
        uses: actions/upload-artifact@v2.2.3
        with:
          name: docs
          path: './build' …
Run Code Online (Sandbox Code Playgroud)

yaml github github-actions github-secret

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