我正在尝试使用 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 运行时,如下所示,我必须手动取消工作流程,因为它在浏览器步骤中挂起。 …
我试图执行以下操作:
echo ${{secrets.key}} > myfile
但不幸的是,这不起作用,因为当我检查时,我的文件将是空的。如何将 github Secret 的内容保存到文件中?
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,但我只是展示它有用时的原理。
我想在 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)
无论如何要修复它吗?我对其他方式持开放态度。
我想触发部署构建的工作流程。我想确定以下几点:
CI工作流程已完成developsrc/**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
我有一个布尔环境变量 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 操作设置我们的 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) 您好,我即将完成使用 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
我有一个 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) 很简单的问题,我不确定我错过了什么。
\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 }}\nRun 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 }}\nRun Code Online (Sandbox Code Playgroud)\n简单地说 - 如何访问环境中的 MESSAGE 值?我需要手动设置环境吗?谢谢。
\n补充信息:
\n我真正想做的是这样的:
\non: [push]\njobs:\n build-and-deploy:\n runs-on: ubuntu-latest\n environment: contains(\'main\', $GITHUB_REF) ? production : development\nRun Code Online (Sandbox Code Playgroud)\n我知道最后一行不起作用,但似乎如果我设置环境,我可以看到秘密 - 我只想重用大量部署代码而不是复制/粘贴。
\ngithub-actions ×10
github ×4
r ×2
appsettings ×1
cicd ×1
dart ×1
docker ×1
flutter ×1
go ×1
httr ×1
oauth-2.0 ×1
postgresql ×1
ssh ×1
yaml ×1