我有大约 10 个单独的微服务,它们主要是用于各种数据处理作业的云功能,它们都位于一个 github 存储库中。
目标是在推送到分支时触发将这些服务有选择地部署到 Google Cloud Functions - 当单个功能已更新时。
我必须避免单个服务更新导致部署所有云功能的情况。
我当前的存储库结构:
/repo
--/service_A
----/function
----/notebook
--/service_B
----/function
----/notebook
Run Code Online (Sandbox Code Playgroud)
附带说明一下,使用 Github Actions VS Google Cloud Build 进行此类自动化的优缺点是什么?
continuous-integration github continuous-deployment google-cloud-build github-actions
我有这个运行测试的 GitHub 操作文件,但现在我正在其中集成松弛通知。我想获取该Run tests步骤的输出并将其作为消息发送到 slack 步骤
- name: Run tests
run: |
mix compile --warnings-as-errors
mix format --check-formatted
mix ecto.create
mix ecto.migrate
mix test
env:
MIX_ENV: test
PGHOST: localhost
PGUSER: postgres
- name: Slack Notification
uses: rtCamp/action-slack-notify@master
env:
SLACK_MESSAGE: Run tests output
SLACK_TITLE: CI Test Suite
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
Run Code Online (Sandbox Code Playgroud)
任何帮助都感激不尽。谢谢
在 github 操作中,我有一个 if,但如果我处于 else 情况下,我仍然需要运行其他东西。有没有一种干净的方法来做到这一点,或者我是否必须在 false 的相同条件下执行另一个步骤?
- if: contains(['SNAPSHOT'],env.BUILD_VERSION)
name:IF
run: echo ":)"
- if: false == contains(['SNAPSHOT'], env.BUILD_VERSION)
name: Else
run: echo ":("
Run Code Online (Sandbox Code Playgroud) github-actions 中有一个“if”可用。
有什么办法可以使用循环吗?(对于、foreach、同时、...)
就像是
- foreach val in ['val1', 'val2']
Run Code Online (Sandbox Code Playgroud) 我正在使用 GitHub Actions 来构建我的 TypeScript 项目。每次运行操作时,我都会等待 3 分钟以安装所有依赖项。
有没有办法缓存纱线依赖项,所以构建时间会更快?
我试过这个:
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- uses: actions/cache@v1
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install yarn
run: npm install -g yarn
- name: Install project dependencies
run: yarn
Run Code Online (Sandbox Code Playgroud)
但构建时间仍然相同。
我已将 Github 操作设置为在创建草稿拉取请求时跳过,但当拉取请求准备好供审核时不会触发它。当我起草 PR 从草稿更改为准备审查时,有什么方法可以运行该操作吗?
pull_request:
types: ['opened', 'edited', 'reopened', 'synchronize', 'ready_for_review']
jobs:
build:
if: github.event.pull_request.draft == 'false'
runs-on: ubuntu-latest
Run Code Online (Sandbox Code Playgroud) 我确实需要它作为一个环境变量,这是专门针对复合操作的。
在复合操作中,我尝试了许多不同的设置环境变量的方法。我发现做到这一点的唯一方法是在env步骤本身内部使用:
runs:
using: "composite"
steps:
- name: "A step"
env:
BRANCH_REF: "${{ github.ref }}"
run: echo "The branch is $BRANCH_REF"
shell: bash
Run Code Online (Sandbox Code Playgroud)
不幸的是,我需要动态设置这个变量。在常规操作中,我会做类似的事情:
env:
FOO: "${{ secrets.FOO }}"
#...
- run: echo "FOO=${{ github.event.inputs.foo }}" >> $GITHUB_ENV
if: ${{ github.event.inputs.foo != '' }}
Run Code Online (Sandbox Code Playgroud)
因为我做不到,所以我尝试了很多其他方法,但都不起作用。这是我最近的尝试,但也不起作用:
- name: "A step"
run: |
if ${{ github.event.inputs.foo != '' }}
then
echo "Set from manual input: ${{ github.event.inputs.foo }}"
echo "FOO=${{ github.event.inputs.foo }}" >> $GITHUB_ENV
else
echo "Use FOO …Run Code Online (Sandbox Code Playgroud) 我正在尝试配置一个 github 工作流,我已经设法在推送事件上配置它。但是,如果我需要它在一段时间过去后继续运行怎么办?
我从文档中了解到,它可以使用时间表来实现。
name: Release Management
on:
schedule:
- cron: "*/5 * * * *"
Run Code Online (Sandbox Code Playgroud)
如何指定操作将在哪个分支上运行?
我的最终目标是自动化发布。
我有一个操作(一个yaml文件)用于将 docker 映像部署到 Google Cloud Run。
我想接收通知构建和推送结果的 Slack 或电子邮件消息。
构建操作完成后如何触发消息操作?
是否有可能获得构建操作的结果?
所以我正在构建一个动作,为一个将进入 Netlify 的项目进行构建。在操作中,我可以传递部署消息。在该部署消息中,我想传入触发构建的提交的提交消息。我正在查看文档,但找不到这是否可行。谢谢
github-actions ×10
github ×5
composite ×1
elixir ×1
git ×1
pull-request ×1
typescript ×1
workflow ×1
yarnpkg ×1