我有一个 github 操作 yaml 文件,如下所示:
name: Test deployment
on:
pull_request:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-18.04
steps:
- name: Random name
run: date
Run Code Online (Sandbox Code Playgroud)
当我从一个分支到另一个分支提出 PR 时master,Github Action会被触发。所以,我将我的 YAML 更新为:
name: Test deployment
on:
pull_request:
types:
- closed
branches:
- master
Run Code Online (Sandbox Code Playgroud)
现在它是在我合并 PR 而不是在提升它时触发的。但是当我关闭 PR 而不合并它时它也会被触发。
我merged在文档中找不到任何类似类型的东西
即使我尝试的以下语法也无法按预期工作:
jobs:
...
if: github.event_name == 'pull_request' && github.event.action == 'closed'
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我吗?我是否可以检查 PR 是否得到至少一位审阅者的批准?(我可以启用分支保护,但想知道是否存在在 github 操作中执行此操作的任何选项)
我使用 GitHub-action 进行构建,它生成多个工件(具有不同的名称)。
有没有办法预测上次成功构建的工件的 URL?不知道 sha1,只知道工件和回购的名称?
目前在我的 GitHub 存储库中,我有以下每天发布夜间快照的工作流程,并使用当前日期作为发布名称和标签名称:
name: Nightly Snapshot
on:
schedule:
- cron: "59 23 * * *"
jobs:
build:
name: Release
runs-on: ubuntu-latest
steps:
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
- name: Checkout branch "master"
uses: actions/checkout@v2
with:
ref: 'master'
- name: Release snapshot
id: release-snapshot
uses: actions/create-release@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.date.outputs.date }}
release_name: ${{ steps.date.outputs.date }}
draft: false
prerelease: false
Run Code Online (Sandbox Code Playgroud)
GitHub 将所有以这种方式创建的快照标记为最新版本。但是,我想避免这种情况,并实现类似于Swift 快照的效果:快照只是标签;尽管它们出现在版本中,但它们的处理方式不同。
我应该如何修改我的工作流程文件来实现这一点?谢谢!
我已经使用以下方法设置了一个环境变量:
echo "::set-env name=PROJECT_TO_TEST::$(sh scripts/test.sh)"
Run Code Online (Sandbox Code Playgroud)
test.sh 只是回应“SomeString, MoreString”
我确实看到通过执行以下操作正确设置了 PROJECT_TO_TEST 变量:
echo "env.PROJECT_TO_TEST = ${{ env.PROJECT_TO_TEST }}"
Run Code Online (Sandbox Code Playgroud)
输出“env.PROJECT_TO_TEST = SomeString, MoreString”
在接下来的一个步骤中,我正在执行 if 检查以查看 PROJECT_TO_TEST 变量包含一些像这样的字符串:
- name: Conditionally Run
if: contains('${{ env.PROJECT_TO_TEST }}', 'SomeString')
run: |
echo "SomeString did exist and should run"
- name: Conditionally Run
if: contains('${{ env.PROJECT_TO_TEST }}', 'ShouldNotRun')
run: |
echo "ShouldNotRun"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,应该只打印“SomeString 确实存在并且应该运行”,但也会打印“ShouldNotRun”。
完整代码在这里:https : //github.com/gomfucius/github-actions/blob/master/.github/workflows/pullrequest.yml
说明问题的工作流程:https : //github.com/gomfucius/github-actions/runs/590320131
我是 GitHub Actions 的新手。我有以下 DockerFile
FROM openjdk:8-jdk-alpine
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用 GitHub Action Publish Docker,下面是我的操作代码
name: Publish Docker
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Publish to Registry
uses: elgohr/Publish-Docker-Github-Action@master
with:
name: myDocker/repository
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
Run Code Online (Sandbox Code Playgroud)
构建失败并出现以下错误
Step 5/6 : COPY ${JAR_FILE} app.jar
COPY failed: no source files were specified
Run Code Online (Sandbox Code Playgroud)
我假设它无法在目标文件夹下获取 jar 文件。我是否应该在 …
我一直在尝试使用 Rails 设置 GitHub 操作,但是我遇到了RAILS_MASTER_KEY(我的假设)的问题。
这是我在最后一步收到的错误消息# Build and run tests:
rails aborted!
ActiveSupport::MessageEncryptor::InvalidMessage: ActiveSupport::MessageEncryptor::InvalidMessage
/home/runner/work/my-project/my-project/config/environment.rb:5:in `<main>'
/home/runner/work/my-project/my-project/bin/rails:9:in `<top (required)>'
/home/runner/work/my-project/my-project/bin/spring:15:in `require'
/home/runner/work/my-project/my-project/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Caused by:
ArgumentError: key must be 16 bytes
Run Code Online (Sandbox Code Playgroud)
.github/workflows/main.yml:
rails aborted!
ActiveSupport::MessageEncryptor::InvalidMessage: ActiveSupport::MessageEncryptor::InvalidMessage
/home/runner/work/my-project/my-project/config/environment.rb:5:in `<main>'
/home/runner/work/my-project/my-project/bin/rails:9:in `<top (required)>'
/home/runner/work/my-project/my-project/bin/spring:15:in `require'
/home/runner/work/my-project/my-project/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Caused by:
ArgumentError: key must be 16 bytes
Run Code Online (Sandbox Code Playgroud)
我推断这与我的 RAILS_MASTER_KEY 变量有关。
我检查了存储在项目 ENV 变量中的密钥,它恰好是 32 个字节。我不确定如何最好地进行,并且我对删除密钥犹豫不决,担心我会破坏应用程序的其他部分。在我的书中,将密钥的选项设置为合法的 32 个字节会更可取——只是我不知道如何以及在哪里......
关于如何解决这个问题的任何想法?
我有一个 Django 的 GitHub 工作流程,当它迁移数据库时,它给出了错误
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
Run Code Online (Sandbox Code Playgroud)
密钥存储在.env文件中并加载
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
Run Code Online (Sandbox Code Playgroud)
这是文件树
C:.
| db.sqlite3
| manage.py
|
\---djangosite
| .env
| asgi.py
| settings.py
| urls.py
| wsgi.py
| __init__.py
|
\---__pycache__
...
Run Code Online (Sandbox Code Playgroud)
这是 manage.py,它是常规的 django,从 settings.py 加载 .env 代码
from dotenv import load_dotenv
load_dotenv()
from pathlib import Path
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)
SECRET_KEY = os.getenv("secret_key")
Run Code Online (Sandbox Code Playgroud)
当我manage.py在我的 PC 上运行时,它会加载密钥并运行服务器,但 GitHub 给出了上述错误。如何阻止此错误发生?
我有两个工作流程。一个部署在推送到掌握到测试环境。另一个在发布到生产环境时部署。它们 90% 相同,代码复制和粘贴。
有没有把重复逻辑的一部分提取出来放到自己的文件/部分/片段中这样的概念?
每次提交到存储库时,我都想在我的远程服务器上部署我的 Nuxt.js 应用程序。这是我的 deploy.yml:
name: 'Deployment'
on:
push:
branches: ['master']
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
steps:
- name: Connect to SSH
uses: appleboy/ssh-action@master
with:
host: webhostgb.com
username: root
key: ${{ secrets.PRIVATE_KEY }}
port: 22
script: |
cd whgb-new
git pull origin master
npm run build
fuser -kn tcp 3000
pm2 restart deploy.sh
Run Code Online (Sandbox Code Playgroud)
基本上 deploy.sh 运行 npm start,但我使用 pm2 创建另一个进程而不是在 GitHub 操作进程中进行部署
10 分钟后我收到此错误,即使它做得很好:
err: 4bc06ed9a5a0b2fa431a.js 4.77 KiB 14 [emitted] [immutable] pages/products/tags/_slug
err: 7bf498872cde31ceb6dd.js 13.3 KiB 7 [emitted] [immutable] pages/docs/_slug/index …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Puppeteer 测试此 Chrome 扩展程序。我的测试在本地运行良好,但在 GitHub Actions 中不起作用。我怀疑问题出在运行 Puppeteer 的 GitHub Actions 环境上,但我不太确定根本问题是什么。
我尝试了 all linux-latest、windows-latest和macos-latestforconfig.yml的runs-on选项,他们给了我不同的错误消息:
linux-latest
Failed to launch the browser process!
[2801:2801:0606/033446.894051:ERROR:browser_main_loop.cc(1468)] Unable to open X display.
Received signal 11 SEGV_MAPERR 000000000000
#0 0x5617d755b399 base::debug::CollectStackTrace()
#1 0x5617d74bc2a3 base::debug::StackTrace::StackTrace()
#2 0x5617d755af35 base::debug::(anonymous namespace)::StackDumpSignalHandler()
#3 0x7efd5b4f6890 (/lib/x86_64-linux-gnu/libpthread-2.27.so+0x1288f)
#4 0x5617d9f51f38 ChromeBrowserMainExtraPartsViewsLinux::~ChromeBrowserMainExtraPartsViewsLinux()
#5 0x5617d7103140 ChromeBrowserMainParts::~ChromeBrowserMainParts()
#6 0x5617d7102cfe ChromeBrowserMainPartsLinux::~ChromeBrowserMainPartsLinux()
#7 0x5617d57fc1bf content::BrowserMainLoop::~BrowserMainLoop()
#8 0x5617d57fc2ce content::BrowserMainLoop::~BrowserMainLoop()
#9 0x5617d5800c2b content::BrowserMainRunnerImpl::Shutdown()
#10 0x5617d5800738 content::BrowserMainRunnerImpl::~BrowserMainRunnerImpl()
#11 0x5617d57fbd30 content::BrowserMain() …Run Code Online (Sandbox Code Playgroud)