标签: github-actions

在 github actions 中设置多个容器

我正在尝试使用 github 操作设置我们的 CI。在尝试了几天自己做之后,我来这里寻求帮助。

实际上,我有一个使用 postgres 数据库的 Go API,我的测试直接调用该 API,因此我需要运行该 API 和数据库来进行测试。

在本地,我没有任何问题,我的 API 在我使用 Makefile 中的命令构建的 docker 容器中运行。但我无法让我的测试在 github 操作上运行。

这是我的 Makefile:

GOCMD=go
GOBUILD=$(GOCMD) build
GOCLEAN=$(GOCMD) clean
GOTEST=$(GOCMD) test
GOGET=$(GOCMD) get
BINARY_NAME=ATS-user

all: test build

build: 
    $(GOBUILD) -o $(BINARY_NAME) -v
test: 
    $(GOTEST) -v ./...

clean: 
    $(GOCLEAN)
    rm -f $(BINARY_NAME)
run:
    $(GOBUILD) -o $(BINARY_NAME) -v ./...
    ./$(BINARY_NAME)

start_db:
    sudo docker network create network_app
    sudo docker run --name postgresdb --net network_app -p5432:5432 -e POSTGRES_PASSWORD=***** -e POSTGRES_DB=userdb -d postgres

migrate_db:
    migrate -path …
Run Code Online (Sandbox Code Playgroud)

postgresql go docker github-actions

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

如何在 .Renviron 文件的 GitHub Actions 工作流程中引用 GitHub Secrets

您好,我即将完成使用 GitHub 操作添加 CI/CD 步骤来部署我拥有的 R Shiny 应用程序。我遇到的问题是 R 中有一个名为的文件.Renviron,我用它来存储在 R 脚本中访问我的 SQL 数据库的凭据。通常,我在本地部署应用程序,并且在使用 rsconnect 包时包含此文件,但现在我使用 GitHub 操作,我相信我必须在 bash 脚本步骤中自己手动创建此 .Renviron 文件。

下面是我的 github 工作流程代码现在的样子。我遇到的问题是零件Create and populate .Renviron file

# Triggered on push and pull request events
on: [push, pull_request]

# Name of the workflow => usethis::use_github_actions_badge("CI-CD")
name: CI-CD

jobs:
  CI-CD:
    runs-on: ${{ matrix.config.os }}

    name: ${{ matrix.config.os }} (${{ matrix.config.r }})

    strategy:
      # we keep a matrix for convenience, but we would typically just run …
Run Code Online (Sandbox Code Playgroud)

continuous-integration r continuous-deployment github-actions

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

GitHub Action 无法从私有 GitHub 存储库获取 pub 包

我有一个 flutter 项目,它依赖于 GitHub 上的私有存储库,例如:

dependencies:
  flutter:
    sdk: flutter

  my_package:
    git:
      url: git@github.com:username/my_package.git
      ref: main
Run Code Online (Sandbox Code Playgroud)

当我flutter pub get在本地计算机上运行时,一切正常,因为我的计算机通过 SSH 对拥有存储库的 GitHub 帐户进行身份验证,但是一旦我尝试从 GitHub Action 运行它,它就会失败并显示以下消息:

git@github.com: Permission denied (publickey)
Run Code Online (Sandbox Code Playgroud)

那么如何正确、安全地让构建机器有权获取存储库呢?

以下是 GitHub 操作工作流程:

git@github.com: Permission denied (publickey)
Run Code Online (Sandbox Code Playgroud)

github dart flutter github-actions private-repository

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

如何访问 GitHub Actions 环境机密?

很简单的问题,我不确定我错过了什么。

\n

我有一个环境秘密:

\n

在此输入图像描述

\n

在这种情况下,“生产”环境可用于所有分支。\n我只是尝试在 appsettings 替换操作中访问 MESSAGE 变量(我尝试添加和删除存储库级别 MESSAGE 但无济于事):

\n
- uses: actions/checkout@master\n- name: Variable\xe2\x80\xafSubstitution\n  uses: microsoft/variable-substitution@v1\n  with:\n    files: DummyApi/appsettings.json\n  env:\n    Message: ${{ secrets.MESSAGE }}\n
Run Code Online (Sandbox Code Playgroud)\n

这将用 repo 级别设置替换它,但不是 env 级别设置,这根本不会替换它:

\n
- uses: actions/checkout@master\n- name: Variable\xe2\x80\xafSubstitution\n  uses: microsoft/variable-substitution@v1\n  with:\n    files: DummyApi/appsettings.json\n  env:\n    Message: ${{ env.MESSAGE }}\n
Run Code Online (Sandbox Code Playgroud)\n

简单地说 - 如何访问环境中的 MESSAGE 值?我需要手动设置环境吗?谢谢。

\n

补充信息:

\n

我真正想做的是这样的:

\n
on: [push]\njobs:\n  build-and-deploy:\n    runs-on: ubuntu-latest\n    environment: contains(\'main\', $GITHUB_REF) ? production : development\n
Run Code Online (Sandbox Code Playgroud)\n

我知道最后一行不起作用,但似乎如果我设置环境,我可以看到秘密 - 我只想重用大量部署代码而不是复制/粘贴。

\n

github appsettings github-actions

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

如何将 Github Secret 作为环境变量传递给 Docker?

我正在开始使用 CI/CD 和 Docker,我想在工作流程文件中将连接字符串传递给 docker。

deploy:
    runs-on: ubuntu-latest
    needs: publish
    steps:
    - name: deploy to server
      uses: appleboy/ssh-action@master
      env: 
        CONN_STRING: ${{ secrets.CONN_STRING }}
      with:
        host: ${{ secrets.SECRET_IP }}
        username: ${{ secrets.SERVER_USERNAME }}
        key: ${{ secrets.SERVER_KEY }}
        port: 22
        script: docker stop *** && docker rm **** && docker pull **** && docker run --env CONN_STRING=$CONN_STRING -d --name ******
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我创建了一个名为“CONN_STRING”的环境,它从我的 github 秘密中获取连接字符串。之后我想通过“CONN_STRING=$CONN_STRING”将其传递到dockerscript中。然而,自从我添加了这个之后,我的泊坞窗一直崩溃。有人知道我做错了什么吗?**** 只是我的项目的名称,我想保密。

workflow github docker github-actions cicd

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

具有 fastlane 和 flutter 的 Github 工作流缓存路径

我正在尝试使用缓存优化 android 和 ios 的 CICD 部署工作流程,但缓存路径有问题。当不缓存工作流程时效果很好,但在缓存时,fastlane 操作找不到 flutter 或 pod,并且我收到类似“error: /Users/runner/work/xxx/xxx/ios/Flutter/Release.xcconfig:1: ”的错误:在搜索路径中找不到包含的文件“Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig”(在项目“Runner”的目标“Runner”中)”

name: Deploy staging

on:
  workflow_dispatch:
    inputs:
      lane:
        description: "Staging lane to use : alpha or beta"
        required: true
        default: "alpha"

jobs:
  deploy-to-ios:
    runs-on: macos-latest
    timeout-minutes: 30

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

      - name: Setup Flutter Cache
        id: cache-flutter
        uses: actions/cache@v2
        with:
          path: /Users/runner/hostedtoolcache/flutter
          key: ${{ runner.os }}-flutter
          restore-keys: |
            ${{ runner.os }}-flutter-

      - name: Setup Flutter
        uses: subosito/flutter-action@v1
        if: steps.cache-flutter.outputs.cache-hit != 'true'
        with:
          channel: …
Run Code Online (Sandbox Code Playgroud)

caching ios fastlane flutter github-actions

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

触发除主分支之外的所有分支的 GitHub Actions,其中唯一的工作流程定义文件是

我正在尝试构建一个存储库,它允许我为我正在分叉的项目的不同版本构建 Docker 映像。存储库应具有以下布局:

  • main定义工作流的分支,带有触发器,例如:
    on:
       push:
         branches-ignore:
           - main
    
    Run Code Online (Sandbox Code Playgroud) 该工作流程从任何分支构建软件(基本上是mvn clean packagedocker build并且docker push适用于软件的所有版本)
  • 许多software-1.2.3不包含任何.github/workflow文件的分支(将此文件复制到每个分支并在那里维护会很麻烦)

从我迄今为止的研究来看,GitHub Actions 似乎仅在存在工作流定义时运行。但是,我想知道是否有一种方法可以使用网络钩子或其他方法来欺骗系统执行我想要的操作。

我的下一个最佳选择可能是使用workflow_dispatch

github-actions

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

在 GHA 的 Dockerfile 中使用 ghcr

我想使用 ghcr 作为缓存来存储 docker 映像,其部分在我的项目中几乎不会改变(Ubuntu、miniconda 和一堆 Python 包),然后在 Dockerfile 中使用此映像,将项目的卷和代码添加到其中。Dockerfile 由 Github Actions 运行。如何在 Dockerfile 的 From 语句中引用 ghcr 存储的图像?

caching docker dockerfile github-actions ghcr

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

Azure 在哪里存储部署令牌,例如 ${{ Secrets.GITHUB_TOKEN }}?

我有一个 Github Action 将我的静态 Web 应用程序部署到 Azure。

在构建和部署步骤中失败并显示 deployment_token was not provided.

下面是我的工作流程 yml 文件。我已经从我的完整 Azure 静态名称发布的文件中更改了 Secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_scrubbed 。

我创建了一个名为:Azure-new-host 的 Github 环境,其中包含一个秘密 AZURE_STATIC_WEB_APPS_API_TOKEN_scrubbed 以及来自 Azure 的部署令牌。

我查看了 Github 环境 secerts 和 Azure KeyVault


on:
  push:
    branches:
      - main
  pull_request:
    types: [opened, synchronize, reopened, closed]
    branches:
      - main

jobs:
  build_and_deploy_job:
    if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
    runs-on: ubuntu-latest
    name: Build and Deploy Job
    environment:
      name:Azure-new-host
      url:https://github.com
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
      - …
Run Code Online (Sandbox Code Playgroud)

github environment-variables github-actions azure-static-web-app

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

在 GitHub Actions 工作流程中重用作业

我\xe2\x80\x99m 将管道从 Circle CI 迁移到 Github Actions,我发现有点奇怪,我只能运行作业一次而不是创建作业,然后从工作流程部分调用它,从而可以调用多次作业,而无需重复该作业中的命令/脚本。

\n

我的管道将代码推送到三个环境,然后对每个环境运行灯塔扫描。在 Circle ci 中,我有 1 项工作将代码推送到我的环境,还有 1 项工作来运行 lighthouse。然后,从我的工作流程部分,我只需调用作业 3 次,并将 env 作为参数传递。我是否遗漏了一些东西,或者没有办法在 github actions 中做到这一点?我是否只需在每个作业中写 3 次命令?

\n

github github-actions

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