标签: github-actions

在多个环境中运行 GitHub Action

我想在多个环境上运行 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)

continuous-integration github github-actions

17
推荐指数
1
解决办法
6016
查看次数

如何获得github工作流程的短sha?

我正在 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

这可能吗?

git docker github-actions

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

按计划手动触发 GitHub 操作

我想按计划手动触发 GitHub 操作,但出现以下代码并出现错误

name: Update data

on: 
   workflow_dispatch
   schedule:
     - cron: "0 5 */30 * *"
Run Code Online (Sandbox Code Playgroud)

我正在寻找如何正确执行此操作的解决方案,并且有两种选择。

workflow yaml github-actions

17
推荐指数
1
解决办法
4543
查看次数

github 操作未收到机密

我看过其他答案,但似乎都不起作用。我想我只是想用 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-actions

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

检查环境变量是否为空

检查 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

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

当拉取请求基础分支更新时如何重新运行 Github Actions 工作流程

当拉取请求的基础分支推送了新代码时,是否可以触发 Github Actions 工作流程?

举例说明:拉取请求分支是feature1,基础是development,那么当PR打开后开发分支用新代码更新时,是否可以触发feature1分支PR上的工作流程?

github pull-request github-actions

17
推荐指数
1
解决办法
3698
查看次数

Github 检查 API、检查运行、检查套件

我想了解 Github Checks API,以便我可以使用它们来检索数据。在以下 Github 文档https://docs.github.com/en/rest/guides/getting-started-with-the-checks-api上,我能够得出检查运行与更改的 sha 相关联,并且在每个创建分支检查套件上的提交。检查 API 有助于获取所有这些信息。但我希望更清楚地了解其中三个的差异。谁能用简单的例子和​​术语解释这三个术语?

github-api github-actions

17
推荐指数
1
解决办法
4382
查看次数

有没有办法限制操作可以在哪个分支上运行?

手动运行 github 操作时,我可以选择针对哪个分支运行它。对于某些行动来说,这似乎是一个坏主意。特别是按照以下方式进行的操作DeployToProduction- 我只希望它针对分支运行main

有什么方法可以限制它只运行main- 同时仍然手动触发操作?

我的手动触发操作的示例可能如下所示:

---
name: DeployToStaging
on:
  workflow_dispatch:
jobs: 
  ...
Run Code Online (Sandbox Code Playgroud)

github-actions

17
推荐指数
2
解决办法
9259
查看次数

跳过上一个作业时 Github 操作作业会触发

在设置 GitHub 操作来构建和部署应用程序时,我遇到了以下问题。

我想在以下条件下部署我的网络应用程序。然而,wheneverdeploy-apideploy-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-actions

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

无权对资源执行:sts:TagSession:***

我正在尝试运行 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)

amazon-web-services github-actions

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