标签: github-actions

GitHub Actions 中针对 Oauth 令牌的 Web 浏览器身份验证

我正在尝试使用 GitHub Actions 通过 R 脚本使用 OAuth 2.0 令牌查询 GitHub API。当我运行代码时,它在我的本地计算机上运行良好,其中弹出一个浏览器窗口,指示“等待浏览器中的身份验证...”,我可以手动关闭该窗口。通过 GitHub Actions 运行时,工作流程会挂在“等待浏览器中的身份验证...”处,因为它位于远程计算机上。

我正在使用带有 httr 库的自定义 R 脚本。API 凭据作为我尝试查询的存储库的机密存储。

library(httr)

gh_key <- Sys.getenv('GH_KEY')
gh_secret <- Sys.getenv('GH_SECRET')

# setup app credentials
myapp <- oauth_app(appname = "data-in-r",
                   key = gh_key,
                   secret = gh_secret)

# get oauth credentials
github_token <- oauth2.0_token(oauth_endpoints('github'), app = myapp, cache = F)

# use api
gtoken <- config(token = github_token)

# get list of remote files in data folder
req <- GET("https://api.github.com/repos/tbep-tech/piney-point/contents/data", gtoken)
Run Code Online (Sandbox Code Playgroud)

当脚本通过 GitHub Actions 运行时,如下所示,我必须手动取消工作流程,因为它在浏览器步骤中挂起。 …

r oauth-2.0 httr github-actions

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

如何在 github 操作中将 github 机密内容保存在文件中

我试图执行以下操作:

echo ${{secrets.key}} > myfile

但不幸的是,这不起作用,因为当我检查时,我的文件将是空的。如何将 github Secret 的内容保存到文件中?

github github-actions

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

GitHub Action 相互构建环境变量

GitHub Action中,如何依次构建环境变量:

name: workflow-level-custom-environment-variables

on: [push]
# Here the environment variable is declared in workflow level
env:
    PART1: var1
    PART2: ${PART1}var2
    PUBLICENV: ${PART2} Available for all jobs in this workflow
Run Code Online (Sandbox Code Playgroud)

这可能非常有用,例如,这是来自以下的真实示例Dockerfile

ARG JMETER_VERSION="5.4.2"
ENV JMETER_HOME /opt/apache-jmeter-${JMETER_VERSION}
Run Code Online (Sandbox Code Playgroud)

我知道Dockerfile这不是 GitHub Action,但我只是展示它有用时的原理。

environment-variables github-actions

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

CICD 中的端口转发(Github Actions)

我想在 Github Actions 中运行数据库迁移。数据库位于堡垒后面。

我的解决方案是通过堡垒将 Postgres 端口 5432 转发到数据库主机。

我尝试了下面的脚本,但似乎不起作用。

mkdir ~/.ssh
ssh-keyscan -H <bastion_ip>  >> ~/.ssh/known_hosts
echo "${{secrets.BASTION_SSH_KEY}}" >> key
chmod 600 ./key
ssh -T -i ./key -L 5432:<db_host_url>:5432 user@<bastion_ip> &
make migrate
rm ./key
Run Code Online (Sandbox Code Playgroud)

make migrate针对 运行迁移localhost:5432

当我运行管道时出现以下错误

Error:  AssertionError [ERR_ASSERTION]: ifError got unwanted exception: connect ECONNREFUSED 127.0.0.1:5432
Run Code Online (Sandbox Code Playgroud)

无论如何要修复它吗?我对其他方式持开放态度。

ssh portforwarding github-actions cicd

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

如何在 Github Action 中将路径和分支过滤器与工作流程运行事件一起使用?

我想触发部署构建的工作流程。我想确定以下几点:

  1. CI工作流程已完成
  2. 分支是develop
  3. 有一些变化src/**
on:
  workflow_run:
    workflows: ['CI']
    branches: [develop]
    paths: ['src/**']
    types:
      - completed
Run Code Online (Sandbox Code Playgroud)

貌似不支持上面的方法,还有其他方法吗?

continuous-integration yaml github continuous-deployment github-actions

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

Github 操作中的 boolean env var

我有一个布尔环境变量 TAG_EVENT,并且我在其中一个步骤中将其更新为 false(我也打印它并且看到它为 false),但由于某种原因,尽管 TAG_EVENT 为 false,但最后一步并未执行。我很感谢这方面的帮助,

on:
 workflow_dispatch:

 env:
 TAG_EVENT: ${{ true }}

 jobs:
   push_images:
   name: Push images
   runs-on: ubuntu-latest
   if: ${{ github.event_name != 'pull_request' }}
   steps:
   - id: version
     name: Infer version
     run: |
        version="${GITHUB_REF#refs/tags/v}"
        echo $version
        if  [[ $version == refs/* ]] ;
         then
           echo 'TAG_EVENT=false' >> $GITHUB_ENV
           branch="${GITHUB_REF#refs/heads/}"
           version=$branch

       fi
       echo ::set-output name=version::$version
   - name: Publish latest image tag for release
     if: github.event_name != 'pull_request' && TAG_EVENT == false
     run: |
       echo "printme!!!"
Run Code Online (Sandbox Code Playgroud)

github-actions

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

在 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
查看次数