我想在多个环境上运行 GitHub Actions,比如说在 Windows 和 Linux 上。我设法使用 Travis CI 做到这一点,但我找不到有关如何使用 GitHub Actions 做到这一点的信息。
有人尝试过吗?
这是我的nodejs.yml。
name: Node CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.x]
steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: npm install
run: |
npm ci
- name: prettier format check
run: |
npm run prettier-check
- name: lint format check
run: |
npm run lint-check
- name: build, and test
run: …Run Code Online (Sandbox Code Playgroud) 我正在 GitHub 中创建一个工作流,它创建并使用一个 docker 图像。因此,我使用此 docker 映像的全局环境变量启动了我的工作流文件,该环境变量对我的工作流中的所有作业都可见:
name: continuous integration
on:
push:
branches:
- '**'
env:
IMAGE: docker.pkg.github.com/${{ github.repository }}/jactor-persistence:${{ github.sha }}
Run Code Online (Sandbox Code Playgroud)
我想${{ github.sha }}用head commit的short sha替换,和下面命令的结果一样git rev-parse --short HEAD
这可能吗?
我想按计划手动触发 GitHub 操作,但出现以下代码并出现错误
name: Update data
on:
workflow_dispatch
schedule:
- cron: "0 5 */30 * *"
Run Code Online (Sandbox Code Playgroud)
我正在寻找如何正确执行此操作的解决方案,并且有两种选择。
我看过其他答案,但似乎都不起作用。我想我只是想用 Github Actions 做一些非常简单的事情。只需让 access_key 可用于我的 github 操作,而不将其放入我的 github 存储库中。所以我看到我们可以创建应该action secrets传递给 github 操作的内容。我也明白我们不能只记录安全密钥,所以我希望在尝试记录时改为记录密钥。我一生都无法弄清楚为什么秘密不存在,但它们是空的。即使我在脚本中使用它们,它们似乎也没有任何价值。这是我相关的工作流程******
name: CI
on:
push:
branches:
- master
env:
AWS_S3_BUCKET: ${{ secrets.AWS_PRODUCTION_BUCKET_NAME }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ${{ secrets.AWS_REGION }}
jobs:
deploy:
runs-on: ubuntu-latest
env:
CI: true
strategy:
matrix:
node-version: [14.x]
steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
publish_dir: ./build
- name: Test Env
run: |
echo …Run Code Online (Sandbox Code Playgroud) 检查 Github 操作上的环境变量是否为空作为步骤条件的最好方法是什么?我尝试过这种简单的方法,但似乎不起作用。
例如:
name: SimpleWorkflow
on:
push:
env:
MULTI_LINE_ARG: |
ARG1: value
jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Fetching Local Repository
uses: actions/checkout@master
- name: run step if multiline not null
if: ${{env.MULTI_LINE_ARG}} != ""
run: echo multiline not null
Run Code Online (Sandbox Code Playgroud)
无论我如何尝试,我都无法正确检查 env 是否为空。
当拉取请求的基础分支推送了新代码时,是否可以触发 Github Actions 工作流程?
举例说明:拉取请求分支是feature1,基础是development,那么当PR打开后开发分支用新代码更新时,是否可以触发feature1分支PR上的工作流程?
我想了解 Github Checks API,以便我可以使用它们来检索数据。在以下 Github 文档https://docs.github.com/en/rest/guides/getting-started-with-the-checks-api上,我能够得出检查运行与更改的 sha 相关联,并且在每个创建分支检查套件上的提交。检查 API 有助于获取所有这些信息。但我希望更清楚地了解其中三个的差异。谁能用简单的例子和术语解释这三个术语?
手动运行 github 操作时,我可以选择针对哪个分支运行它。对于某些行动来说,这似乎是一个坏主意。特别是按照以下方式进行的操作DeployToProduction- 我只希望它针对分支运行main。
有什么方法可以限制它只运行main- 同时仍然手动触发操作?
我的手动触发操作的示例可能如下所示:
---
name: DeployToStaging
on:
workflow_dispatch:
jobs:
...
Run Code Online (Sandbox Code Playgroud) 在设置 GitHub 操作来构建和部署应用程序时,我遇到了以下问题。
我想在以下条件下部署我的网络应用程序。然而,wheneverdeploy-api和deploy-syncskipdeploy-web也会被跳过。我认为我的 if 条件会捕获这种情况并仍然运行,deploy-web但事实并非如此。感觉就像我错过了一些明显但无法识别的东西。
deploy-web:
name: Deploy Web
runs-on: ubuntu-latest
needs: [build-and-publish-web, deploy-api, deploy-sync]
if: |
needs.build-and-publish-web.result == 'success' &&
(needs.deploy-api.result == 'success' || needs.deploy-api.result == 'skipped') &&
(needs.deploy-sync.result == 'success' || needs.deploy-sync.result == 'skipped')
Run Code Online (Sandbox Code Playgroud) 我正在尝试运行 GitHub 操作以在临时服务器上的 AWS 上进行数据库迁移。
name: db migration for stg.
on:
push:
branches:
- staging
paths:
- api/db/migrate/**
jobs:
migration:
name: DB Migration
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
role-to-assume: ${{ secrets.AWS_ASSUME_ROLE_ARN_STG }}
role-duration-seconds: 1200
aws-region: ap-northeast-1
- uses: ruby/setup-ruby@v1
with:
ruby-version: '2.7.2'
- name: ssh configure
env:
SSH_SECRET_KEY: ${{ secrets.SSH_SECRET_KEY }}
run: |
mkdir -p ~/.ssh && touch ~/.ssh/config
echo 'host i-* mi-*' …Run Code Online (Sandbox Code Playgroud) github-actions ×10
github ×2
docker ×1
git ×1
github-api ×1
pull-request ×1
workflow ×1
yaml ×1