Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/radj307/conv-utils
Browse files Browse the repository at this point in the history
  • Loading branch information
radj307 committed Feb 15, 2022
2 parents c5a8987 + ecbe591 commit bb1c3ba
Showing 1 changed file with 154 additions and 0 deletions.
154 changes: 154 additions & 0 deletions .github/workflows/GenerateRelease.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
name: Generate Release

on:
push:
tags: '*.*.*'
workflow_dispatch:
inputs:
name:
description: 'Release Name'
required: false
default: ''
type: string
tag: # Target tag to make a release for
description: 'Release Tag ()'
required: false
default: ''
type: string
is-draft: # Input that selects whether to make a draft release or a public release
description: 'Make Draft Release'
required: false
default: 'true'
type: boolean
is-prerelease: # Input that selects whether to make a pre-release or normal release
description: 'Make Pre-Release'
required: false
default: 'false'
type: boolean
autogenerate:
description: 'Autogenerate Release Notes From Commits'
required: false
default: 'false'
type: boolean
body:
description: 'Release Body Paragraph'
required: false
default: ''

env:
# [PROJECT_NAME]
# Currently this is used for the following scenarios:
# - Executable Name
# - Build Subdirectory Name
# - Archive Name Prefix
PROJECT_NAME: 'conv2'
BUILD_TYPE: Release

jobs:
create-binaries:
runs-on: ${{matrix.os}}
strategy:
matrix:
os: [ ubuntu-latest, windows-2022, macos-latest ]
fail-fast: true

steps:
# Check out the repository
- uses: actions/checkout@v2
with:
submodules: recursive
fetch-depth: 0


# Set up platform dependencies
# Ninja
- uses: seanmiddleditch/gha-setup-ninja@master
# MSVC (Windows)
- if: ${{ runner.os == 'Windows' }}
uses: ilammy/msvc-dev-cmd@v1
# gcc-10 g++-10 zip unzip (Linux)
- if: ${{ runner.os == 'Linux' }}
run: sudo apt-get update && sudo apt-get install gcc-10 g++-10 zip unzip -y


# Configure CMake Cache
# Windows
- name: Configure CMake (Windows)
if: ${{ runner.os == 'Windows' }}
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -G Ninja
# Linux/macOS
- name: Configure CMake (Linux/macOS)
if: ${{ runner.os != 'Windows' }}
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -G Ninja
env:
CC: gcc-10
CXX: g++-10

# Build Binary
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}

# Create Packaged Release Archive
# Windows
- name: Create Archive (Windows)
if: ${{ runner.os == 'Windows' }}
run: |
cd "${{github.workspace}}/build/${{env.PROJECT_NAME}}"
Compress-Archive "${{env.PROJECT_NAME}}.exe" "${{env.PROJECT_NAME}}-$(.\${{env.PROJECT_NAME}} -vq)-Windows.zip"
shell: powershell
# Linux / macOS
- name: Create Archive (Linux/macOS)
if: ${{ runner.os != 'Windows' }}
run: |
cd "${{github.workspace}}/build/${{env.PROJECT_NAME}}"
zip -T9 "${{env.PROJECT_NAME}}-$(./${{env.PROJECT_NAME}} -vq)-${{runner.os}}.zip" "${{env.PROJECT_NAME}}"
shell: bash

# Upload Artifact
- name: Upload Artifact
uses: actions/upload-artifact@v2
with:
name: latest-${{runner.os}}
path: '${{github.workspace}}/build/${{env.PROJECT_NAME}}/*.zip'
#:create-binaries

create-release:
needs: create-binaries
runs-on: ubuntu-latest
strategy:
max-parallel: 1

steps:
# Download Artifacts
- name: 'Download Build Artifacts'
uses: actions/download-artifact@v2

# Retrieve the latest git tag if this was triggered by a tag
- name: 'Get Release Tag'
id: get_version
run: |
if [ "${{github.event.inputs.tag}}" == "" ]; then TAG="${GITHUB_REF/refs\/tags\//}"; else TAG="${{github.event.inputs.tag}}" ; fi
echo ::set-output name=VERSION::$TAG
echo ::set-output name=NAME::"Release $TAG"
# Stage downloaded build artifacts for deployment
- name: 'Stage Archives'
run: |
cd ${{github.workspace}}
if mv ./latest-*/* ./ ; then ls -lAgh ; else ls -lAghR ; fi
shell: bash

# Upload Release
- name: 'Create Release'
#if: ${{ github.event_name == 'workflow_dispatch' }}
uses: softprops/action-gh-release@v1
with:
draft: ${{ github.event.inputs.is-draft || true }}
prerelease: ${{ github.event.inputs.is-prerelease || false }}
tag_name: ${{ steps.get_version.outputs.VERSION }}
name: ${{ steps.get_version.outputs.NAME }}
generate_release_notes: ${{ github.event.inputs.autogenerate || true }}
body: ${{ github.event.inputs.body || '' }}
fail_on_unmatched_files: true
files: ${{github.workspace}}/*.zip
#:create-release

0 comments on commit bb1c3ba

Please sign in to comment.