【发布时间】:2021-11-06 14:24:15
【问题描述】:
我是 github 操作的新手,我对它们的工作方式有一个很好的了解,但是我在为多个分支创建版本时遇到了麻烦。是否可以在单个工作流中从多个分支创建多个版本?
我目前正在为我的主分支生成和部署版本的工作流程。我现在想为稍微相似但功能不同的第二个分支创建版本。
我的问题和我的问题是:
- github 工作流如何区分主分支和其他分支以从主分支中的 .yml 文件创建发布?我知道你可以使用
if: github.ref,但我不知道该怎么做。 - 我是否应该在第二个分支中创建一个单独的 .yml,使用单独的工作流程并创建不同的标签?
- 是否应该在我的矩阵中创建另一个仅依赖于第二个分支的条目?
以下是我的主分支中的 .yml:
name: "CI/CD"
on:
push:
branches: [ main, example ]
pull_request:
branches: [ main, example ]
env:
QT_VERSION: 5.15.2
BUILD_TYPE: Release
packageGlob: justAnExample-continuous-*.*
jobs:
main_build:
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- {
name: "Linux-amd64"
, os: ubuntu-18.04
, QT_INST_DIR: /opt
, install_ninja: "sudo apt-get install -qq ninja-build"
, install_pkgs: "sudo apt-get -qq install libgstreamer-plugins-base1.0-0"
, bcInstallPrefix: /usr
, build_justAnExample: "DESTDIR=./appdir ninja install; find ./appdir; mv default.png ./appdir/usr/share/"
, rename_package: "mv justAnExample-*.tar.xz justAnExample-continuous-linux-x86_64.tar.xz"
}
- {
name: "Windows-x64", WIN_ARCH: "x64"
, os: windows-latest
, QT_INST_DIR: "C:/", QTDIR: "C:/Qt/5.15.2/msvc2019_64", QT_ARCH: win64_msvc2019_64
, install_ninja: "choco install ninja"
, bcInstallPrefix: justAnExample-continuous
, build_justAnExample: "ninja install"
, rename_package: "mv justAnExample-*.zip justAnExample-continuous-win64.zip && mv justAnExample-*.exe justAnExample-continuous-win64-installer.exe"
}
- {
name: "Windows-x86"
, os: windows-latest, WIN_ARCH: "amd64_x86"
, QT_INST_DIR: "C:/", QTDIR: "C:/Qt/5.15.2/msvc2019", QT_ARCH: win32_msvc2019
, install_ninja: "choco install ninja"
, bcInstallPrefix: justAnExample-continuous
, build_justAnExample: "ninja install"
, rename_package: "ls -R && mv justAnExample-*.zip justAnExample-continuous-win32.zip && mv justAnExample-*.exe justAnExample-continuous-win32-installer.exe"
}
steps:
- uses: actions/checkout@v2
- name: Env Script (Windows)
uses: ilammy/msvc-dev-cmd@v1
if: runner.os == 'Windows'
with:
arch: ${{matrix.config.WIN_ARCH}}
- name: Install Ninja
run: ${{matrix.config.install_ninja}}
- name: Install Packages
if: runner.os == 'Linux'
run: ${{matrix.config.install_pkgs}}
- name: Install Qt
uses: jurplel/install-qt-action@v2.14.0
with:
dir: ${{matrix.config.QT_INST_DIR}}
arch: ${{matrix.config.QT_ARCH}}
version: ${{env.QT_VERSION}}
- name: Build justAnExample
id: main_build
run: |
cmake -S. -G Ninja -DCMAKE_INSTALL_PREFIX=${{matrix.config.bcInstallPrefix}} -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
${{matrix.config.build_justAnExample}}
- name: CPack
run: cpack
- name: Build AppImage (Linux)
if: runner.os == 'Linux'
run: |
wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage"
export VERSION=continuous
chmod a+x linuxdeployqt*.AppImage
unset QTDIR; unset QT_PLUGIN_PATH; unset LD_LIBRARY_PATH
./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -appimage -extra-plugins=iconengines,platformthemes/libqxdgdesktopportal.so
- name: Prepare Upload
shell: bash
run: ${{matrix.config.rename_package}}
- name: Upload
uses: actions/upload-artifact@v2
with:
path: ${{ github.workspace }}/${{env.packageGlob}}
release_assets:
name: Release
needs: main_Build
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- name: Download Files
uses: actions/download-artifact@v2
- name: Move Files
run: |
mv artifact/* ${{github.workspace}}
- name: Deploy Package
uses: "marvinpinto/action-automatic-releases@latest"
with:
repo_token: "${{ secrets.DEPLOYTOKEN }}"
automatic_release_tag: "continuous-main"
prerelease: false
title: "Continuous Build"
files: ${{env.packageGlob}}
【问题讨论】:
-
您可以对不同的版本使用动作继承或使用矩阵docs.github.com/en/actions/using-workflows/…
标签: github github-actions