我正在为项目存储库设置 Github Actions。
工作流程包括以下步骤:
但是,我有两种不同的 Kubernetes 部署:一种用于开发,一种用于生产。因此,我还有两个 Github Action 工作流。
每次推送提交时都会触发用于开发的 Github Action 工作流:
on:
push:
branches:
- master
Run Code Online (Sandbox Code Playgroud)
但我不希望在我的生产工作流程中出现这种情况。我需要一个手动触发器,比如发送到生产按钮。我在文档中没有看到任何与此接近的内容。
有没有办法在 Github Actions 中手动触发工作流?
我如何在 Github Actions、Docker 或 Kubernetes 上拆分我的开发和生产工作流以实现我想要的?
我目前正在尝试运行 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 操作工作流程。
\nname: 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) 我正在尝试将 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
假设我有一个包含2个步骤的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) 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) 我正在开发 R 包并使用 GitHub Action (GHA) 作为持续集成 (CI) 提供程序。我使用actions/cache. 现在我想清除所有缓存。我怎样才能做到这一点?
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) 我正在创建一个新的 git 工作流程。就像任何其他代码一样,我想单独测试它,而不必先将其合并到 master 中。
如果工作流程 yaml 中某些内容不起作用,我必须进行一些更正,这也会有所帮助。
这是我正在寻找的机制:
有没有办法做到这一点?
请用一些现实世界的例子解释这两个事件触发器之间的区别。