在 Gitlabci 中,仅当文件或目录被修改时才可以触发特定作业。
是否可以使用 Github actions 做同样的事情?
GitHub 操作是否支持嵌套模板?例如,以下是 Azure Pipeline yaml 的示例,它调用另一个 yaml 文件:
- job: BuildFunctions
steps:
- ${{ each func in parameters.functionApps }}:
- template: yaml/build-functionapps.yml
parameters:
Run Code Online (Sandbox Code Playgroud)
是否可以在 GitHub 操作中从另一个 yaml 文件调用 yaml 文件?
我有一个 Node.js 项目的 GitHub 工作流文件:
name: NodeJS CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [10.x]
steps:
- uses: actions/checkout@v2
- name: Using Node version ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
- run: npm run build --if-present
- run: npm test
- name: Upload code coverage
run: bash <(curl -s https://codecov.io/bash) -t $CODECOV_TOKEN
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
Run Code Online (Sandbox Code Playgroud)
项目结构如下:
.
??? package-lock.json
??? package.json
??? src
? ??? api
? …Run Code Online (Sandbox Code Playgroud) 我刚刚了解了 GitHub Actions,我认为它非常棒。
一开始让我印象深刻的一件事是,当我设置自托管运行器时,GitHub 要求我在我的本地机器上运行一堆命令,这显然是在私有网络中,它没有暴露在互联网上(入站- 意味着 www 无法访问它)。
但是,在安装了 GitHub 要求我安装的内容后,似乎已成功设置了一个 webhook,并且每次推送/合并到我的 master(在 GitHub 操作文件中设置)时,我计算机上的工作人员都知道并开始提取最新的版本并开始安装依赖项和其他 CI/CD 内容。
现在我很好奇的是,当我的虚拟机在私有网络中时,GitHub 实际上是如何与我的虚拟机对话的?
我从来都不是一个网络人,所以我不太确定为什么这是可能的。但它很迷人。
我们正在使用 Github Actions 进行 CI 设置。当我们尝试安装mini_racer依赖于libv8gem 的 gem时,我们的 Gem 安装操作突然停止工作。但是当操作尝试为这个 gem 安装和构建扩展时,它在那里失败。
以下是配置:
jobs:
spec:
runs-on: ubuntu-latest
services:
postgresql:
image: circleci/postgres:11.5-alpine-ram
ports: ["5432:5432"]
env:
POSTGRES_USER:
POSTGRES_DB:
POSTGRES_PASSWORD:
steps:
- uses: actions/checkout@v1
- name: Bundler/Gems Cache
uses: actions/cache@v2
with:
path: vendor/bundle
key: ${{ runner.os }}-bundle-v1-${{ hashFiles('Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-bundle-v1-
- name: Read nvm version
id: nvmrc
run: echo ::set-output "name=NODEVERSION::$(cat .nvmrc)"
- uses: ruby/setup-ruby@v1
- uses: actions/setup-node@v1
with:
node-version: "${{ steps.nvmrc.outputs.NODEVERSION }}"
- name: …Run Code Online (Sandbox Code Playgroud) 我使用 GitHub Actions 工作流已经有一段时间了:
name: Laravel
on: [push]
jobs:
laravel-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Copy .env
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
- name: Install Dependencies
run: |
rm -rf vendor
composer install
- name: Generate key
run: php artisan key:generate
- name: Link Storage
run: php artisan storage:link
- name: Create Database
run: |
mkdir -p database
touch database/database.sqlite
- name: Execute tests (Unit and Feature tests) via PHPUnit
env:
DB_CONNECTION: sqlite
DB_DATABASE: database/database.sqlite …Run Code Online (Sandbox Code Playgroud) 我想针对 C 和 C++ 项目的三个编译器版本进行构建:gcc、gcc-8 和 clang(对于 C 编译器),对于 C++ 编译器,它们应该分别使用 g++、g++-8 和 clang++。
总共3个配置。我不想使用所有 C 和 C++ 编译器版本的产品进行构建,即。没有 gcc/g++-8 等。
如何指定具有这三种配置的矩阵,每种配置都设置两个变量?
目前我正在使用它(请注意,指定了 2 个操作系统,因此总共有 6 个配置):
strategy:
matrix:
os: [ubuntu-16.04, ubuntu-latest]
cpp_compiler: [g++, g++-8, clang++]
include:
- c_compiler: gcc
- cpp_ompiler: g++-8
c_compiler: gcc-8
- cpp_compiler: clang++
c_compiler: clang
Run Code Online (Sandbox Code Playgroud)
本质上就是把C++编译器( cpp_compiler)作为主版本,然后include用hacky的方式c_compiler根据cpp_compiler版本来设置,但一定有更好的...
有没有办法使用 Windows 运行程序将 .zip 文件的内容提取为 Github Action 的一部分?
我似乎找不到重命名文件、解压缩/压缩等内容的参考。
我定义GENERATOR_PLATFORM为一个空的环境变量,然后我想将它设置为我的 Windows 版本。但是,变量永远不会被设置:
env:
GENERATOR_PLATFORM:
steps:
- name: windows-dependencies
if: startsWith(matrix.os, 'windows')
run: |
$generator= "-DCMAKE_GENERATOR_PLATFORM=x64"
echo "Generator: ${generator}"
echo "GENERATOR_PLATFORM=$generator" >> $GITHUB_ENV
- name: Configure CMake
shell: bash
working-directory: ${{github.workspace}}/build
run: cmake $GITHUB_WORKSPACE $GENERATOR_PLATFORM
Run Code Online (Sandbox Code Playgroud) 我有两个 GitHub 操作应该一个接一个地运行,第一个install 1是安装和运行服务器(例如,服务器在端口 3000 上运行),这可行,但是安装 1 未完成(服务器已启动,您没有得到“停止”信号是可以的)但我只需要install 2 在服务器启动时继续下一步,我应该如何解决这个问题?
简而言之,当您运行某个进程并且您需要在一段时间后运行其他进程时
- name: install 1
shell: bash
run: |
make install
make run
- name: install 2
shell: bash
run: |
kubectl apply -f ./config/samples/test.yaml
Run Code Online (Sandbox Code Playgroud)
我使用 kubebuilder 来生成项目包括makefile...
https://github.com/kubernetes-sigs/kubebuilder
github-actions ×10
github ×3
bundler ×1
laravel ×1
libv8 ×1
mocha.js ×1
node-modules ×1
node.js ×1
powershell ×1
ruby ×1
unzip ×1
v8 ×1