标签: github-actions

Github Actions 中的手动工作流触发器

我正在为项目存储库设置 Github Actions。

工作流程包括以下步骤:

  • 构建 docker 镜像
  • 将镜像推送到容器注册表
  • 推出 Kubernetes 部署。

但是,我有两种不同的 Kubernetes 部署:一种用于开发,一种用于生产。因此,我还有两个 Github Action 工作流。

每次推送提交时都会触发用于开发的 Github Action 工作流:

on:
  push:
    branches:
    - master
Run Code Online (Sandbox Code Playgroud)

但我不希望在我的生产工作流程中出现这种情况。我需要一个手动触发器,比如发送到生产按钮。我在文档中没有看到任何与此接近的内容。


有没有办法在 Github Actions 中手动触发工作流?

我如何在 Github Actions、Docker 或 Kubernetes 上拆分我的开发和生产工作流以实现我想要的?

continuous-integration docker kubernetes github-actions

27
推荐指数
6
解决办法
1万
查看次数

GitHub:拒绝:permission_denied:write_package

我目前正在尝试运行 docker GitHub Action,它会构建 docker 映像并将其推送到 GitHub Packages,但我收到了一个我从未见过的错误。由于某种原因,它无法推送 docker 映像,因为write_permission被拒绝,但我有一个令牌允许我写入,所以我不明白问题是什么。

这是我的操作文件:

name: Docker Image CI

on:
  workflow_dispatch:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 16
      uses: actions/setup-java@v1
      with:
        java-version: 16
    - name: Build with Maven
      run: mvn -f ACS/pom.xml clean install dependency:copy-dependencies
    - name: Login to GitHub Package Registry
      run: echo ${{ secrets.GITHUB_TOKEN }} | docker login docker.pkg.github.com -u ${{ github.repository }} …
Run Code Online (Sandbox Code Playgroud)

github docker github-actions

27
推荐指数
3
解决办法
2万
查看次数

如何在 GitHub Action 中推送到受保护的主分支?

这是我的 github 操作工作流程。

\n
name: Release\n\non:\n  push:\n    branches:\n      - main\n\njobs:\n  release:\n    name: Release\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v2\n        with:\n          persist-credentials: false\n      - name: Setup java\n        uses: actions/setup-java@v1\n        with:\n          java-version: 11\n      - name: Setup node\n        uses: actions/setup-node@v1\n        with:\n          node-version: "14.x"\n          cache: npm\n      - name: Install dependencies\n        run: npm ci\n      - name: Build package\n        run: npm run build --if-present\n      - name: Semantic release\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}\n          HUSKY: 0\n        run: chmod +x script/prepare-release.sh && …
Run Code Online (Sandbox Code Playgroud)

github github-actions

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

使用 github 操作拒绝资源的权限 artifactregistry.repositories.uploadArtifacts

我正在尝试将 docker 容器推送到 GCP 上的 ArtifactRegistry,但我在步骤中遇到错误Push Docker Image to Artifact Registry

拒绝:资源“projects/PROJECT_ID/locations/asia-south1/repositories/images”的权限“artifactregistry.repositories.uploadArtifacts”被拒绝(或者可能不存在)错误:进程已完成,退出代码为1。

name: Build image and push to Artifact Registry of GCP
on: 
  push:
    branches: 
      - master
 
jobs:
  build-push-artifact:
    name : Build and push Artifact Registry
    runs-on: ubuntu-latest

    steps:
    - name: Checkout
      uses: actions/checkout@v2

    - id: 'auth'
      uses: 'google-github-actions/auth@v1'
      with:
        credentials_json: '${{ secrets.ACCOUNT_KEY }}'

    - name: 'Set up Cloud SDK'
      uses: 'google-github-actions/setup-gcloud@v1'

    - name: 'Use gcloud CLI'
      run: 'gcloud info'

    - name: build Docker Image
      run: docker build -t …
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform github-actions google-artifact-registry

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

如何在GitHub操作中缓存步骤?

假设我有一个包含2个步骤的GitHub动作工作流程。

  1. 下载并编译我的应用程序的依赖项。
  2. 编译并测试我的应用程序

我的依存关系很少更改,并且可以安全地缓存已编译的依存关系,直到我下次更改指定其版本的锁文件为止。

是否可以保存第一步的结果,以便将来的工作流可以跳过该步骤?

github github-actions

26
推荐指数
2
解决办法
4044
查看次数

GitHub 操作无效工作流文件错误

我开始使用 GitHub Actions,我能够为 Elixir 设置 CI 管道,操作构建和测试没有任何问题。我还想使用 heroku 操作部署应用程序,所以我继续添加了 GitHub 中可用的应用程序,但在这样做之后,我收到以下错误:

无效的工作流文件每一步都必须定义一个使用或运行密钥

这是我的工作流程在添加 heroku 操作之前的样子:

name: Elixir CI

on: push

jobs:
  build:

    runs-on: ubuntu-latest

    container:
      image: elixir:1.9.1-slim

    steps:
    - uses: actions/checkout@v1
    - name: Install Dependencies
      run: |
        mix local.rebar --force
        mix local.hex --force
        mix deps.get

  test:

    runs-on: ubuntu-latest

    services:
      db:
        image: postgres:11
        ports: ['5432:5432']
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5

    steps:
      - uses: actions/checkout@v1.0.0
      - uses: actions/setup-elixir@v1.0.0
        with:
          otp-version: 22.x
          elixir-version: 1.9.x
      - run: mix deps.get …
Run Code Online (Sandbox Code Playgroud)

github github-actions

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

Getting current branch and commit hash in GitHub action

I want to build a docker image using a GitHub action, migrating from TeamCity.

In the build script, I want to tag the image with a combination of branch and commit, e.g. master.ad959de. Testing that locally, I get that information like this:

git_branch=`git symbolic-ref --short HEAD`
git_hash=`git rev-parse --short HEAD`
docker_version=${git_branch}.${git_hash}
Run Code Online (Sandbox Code Playgroud)

This is the relevant part of the GitHub action:

name: CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1

    - name: Create docker image
      run: ./docker-build.sh …
Run Code Online (Sandbox Code Playgroud)

git github github-actions

26
推荐指数
4
解决办法
3万
查看次数

清除 GitHub 操作中的缓存

我正在开发 R 包并使用 GitHub Action (GHA) 作为持续集成 (CI) 提供程序。我使用actions/cache. 现在我想清除所有缓存。我怎样才能做到这一点?


我使用的 GHA 工作流程的一部分:
on: push

name: R-CMD-check

jobs:
  R-CMD-check:
    runs-on: ${{ matrix.config.os }}

    name: ${{ matrix.config.os }} (${{ matrix.config.r }})

    strategy:
      fail-fast: false
      matrix:
        config:
          # - {os: windows-latest, r: 'devel'}
          - {os: macOS-latest,   r: 'release'}

    env:
      R_REMOTES_NO_ERRORS_FROM_WARNINGS: true
      RSPM: ${{ matrix.config.rspm }}
      GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}

    steps:
      - uses: actions/checkout@v2

      - uses: r-lib/actions/setup-r@master

      - name: Query dependencies
        run: |
          repos <- c("https://r-hyperspec.github.io/hySpc.pkgs/", getOption("repos"))
          saveRDS("remotes::dev_package_deps(dependencies = TRUE)", ".github/depends.Rds", …
Run Code Online (Sandbox Code Playgroud)

caching github-actions

26
推荐指数
5
解决办法
1万
查看次数

如何在不合并到 master/main 分支的情况下测试 github 工作流程

我正在创建一个新的 git 工作流程。就像任何其他代码一样,我想单独测试它,而不必先将其合并到 master 中。

如果工作流程 yaml 中某些内容不起作用,我必须进行一些更正,这也会有所帮助。

这是我正在寻找的机制:

  1. 主分支有 .github 文件夹,其中包含所有工作流程
  2. 我创建一个分支并将工作流程添加到 .github 文件夹
  3. 现在我应该能够(在 Github 上的某个地方)看到我的分支正在运行的工作流程
  4. 当我知道工作流程运行良好时,我将我的分支合并到 master 中
  5. 现在在 github 的“操作”选项卡下,新的工作流程将反映出来

有没有办法做到这一点?

github github-actions

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

Github Actions 中的repository_dispatch 和workflow_dispatch 有什么区别?

请用一些现实世界的例子解释这两个事件触发器之间的区别。

github github-actions

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