👷 Re-enable automatic release job #407
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ========================================================================= | |
# Ceedling - Test-Centered Build System for C | |
# ThrowTheSwitch.org | |
# Copyright (c) 2010-24 Mike Karlesky, Mark VanderVoord, & Greg Williams | |
# SPDX-License-Identifier: MIT | |
# ========================================================================= | |
--- | |
# Continuous Integration Workflow: Test case suite run + validation build check | |
name: CI | |
# Controls when the action will run. | |
# Triggers the workflow on push or pull request events but only for the master branch | |
on: | |
push: | |
branches: | |
- 'master' | |
- 'test/**' | |
- 'dev/**' | |
pull_request: | |
branches: [ master ] | |
workflow_dispatch: | |
jobs: | |
# Job: Linux unit test suite | |
unit-tests-linux: | |
name: "Linux Unit Test Suite" | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ['3.0', '3.1', '3.2'] | |
steps: | |
# Use a cache for our tools to speed up testing | |
- uses: actions/cache@v4 | |
with: | |
path: vendor/bundle | |
key: bundle-use-ruby-${{ matrix.os }}-${{ matrix.ruby-version }}-${{ hashFiles('**/Gemfile.lock') }} | |
restore-keys: | | |
bundle-use-ruby-${{ matrix.os }}-${{ matrix.ruby-version }}- | |
# Checks out repository under $GITHUB_WORKSPACE | |
- name: Checkout Latest Repo | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
# Setup Ruby Testing Tools to do tests on multiple ruby version | |
- name: Setup Ruby Testing Tools | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby }} | |
# Install Ruby Testing Tools (Bundler version should match the one in Gemfile.lock) | |
- name: Install Ruby Testing Tools | |
run: | | |
gem install rspec | |
gem install rubocop -v 0.57.2 | |
gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)" | |
bundle update | |
bundle install | |
# Install gdb for backtrace feature testing | |
- name: Install gdb for Backtrace Feature Testing | |
run: | | |
sudo apt-get update -qq | |
sudo apt-get install --assume-yes --quiet gdb | |
# Install GCovr for Gcov plugin | |
- name: Install GCovr for Gcov Plugin Tests | |
run: | | |
sudo pip install gcovr | |
# Install ReportGenerator for Gcov plugin | |
# Fix PATH before tool installation | |
# https://stackoverflow.com/questions/59010890/github-action-how-to-restart-the-session | |
- name: Install ReportGenerator for Gcov Plugin Tests | |
run: | | |
mkdir --parents $HOME/.dotnet/tools | |
echo "$HOME/.dotnet/tools" >> $GITHUB_PATH | |
dotnet tool install --global dotnet-reportgenerator-globaltool | |
# Run Tests | |
- name: Run All Self Tests | |
run: | | |
rake ci | |
# Build & Install Gem | |
- name: Build and Install Gem | |
run: | | |
gem build ceedling.gemspec | |
gem install --local ceedling-*.gem | |
# Run temp_sensor | |
- name: Run Tests on temp_sensor Project | |
run: | | |
cd examples/temp_sensor | |
ceedling test:all | |
cd ../.. | |
# Run FFF Plugin Tests | |
- name: Run Tests on FFF Plugin | |
run: | | |
cd plugins/fff | |
rake | |
cd ../.. | |
# Run Module Generator Plugin Tests | |
- name: Run Tests on Module Generator Plugin | |
run: | | |
cd plugins/module_generator | |
rake | |
cd ../.. | |
# Run Dependencies Plugin Tests | |
- name: Run Tests on Dependency Plugin | |
run: | | |
cd plugins/dependencies | |
rake | |
cd ../.. | |
# Job: Windows unit test suite | |
unit-tests-windows: | |
name: "Windows Unit Test Suite" | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ['3.0', '3.1', '3.2'] | |
steps: | |
# Use a cache for our tools to speed up testing | |
- uses: actions/cache@v4 | |
with: | |
path: vendor/bundle | |
key: bundle-use-ruby-${{ matrix.os }}-${{ matrix.ruby-version }}-${{ hashFiles('**/Gemfile.lock') }} | |
restore-keys: | | |
bundle-use-ruby-${{ matrix.os }}-${{ matrix.ruby-version }}- | |
# Checks out repository under $GITHUB_WORKSPACE | |
- name: Checkout Latest Repo | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
# Setup Ruby Testing Tools to do tests on multiple ruby version | |
- name: Set Up Ruby Testing Tools | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby }} | |
# Install Ruby Testing Tools | |
# Bundler version should match the one in Gemfile.lock | |
- name: Install Ruby Testing Tools | |
shell: bash | |
run: | | |
gem install rspec | |
gem install rubocop -v 0.57.2 | |
gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)" | |
bundle update | |
bundle install | |
# Install GCovr for Gcov plugin test | |
- name: Install GCovr for Gcov Plugin Tests | |
run: | | |
pip install gcovr | |
# Install ReportGenerator for Gcov plugin test | |
- name: Install ReportGenerator for Gcov Plugin Tests | |
run: | | |
dotnet tool install --global dotnet-reportgenerator-globaltool | |
# Run Tests | |
- name: Run All Self Tests | |
run: | | |
rake ci | |
# Build & Install Gem | |
- name: Build and Install Gem | |
run: | | |
gem build ceedling.gemspec | |
gem install --local ceedling-*.gem | |
# Run temp_sensor example project | |
- name: Run Tests on temp_sensor Project | |
run: | | |
cd examples/temp_sensor | |
ceedling test:all | |
cd ../.. | |
# Run FFF Plugin Tests | |
- name: Run Tests on FFF Plugin | |
run: | | |
cd plugins/fff | |
rake | |
cd ../.. | |
# Run Module Generator Plugin Tests | |
- name: Run Tests on Module Generator Plugin | |
run: | | |
cd plugins/module_generator | |
rake | |
cd ../.. | |
# Run Dependencies Plugin Tests | |
- name: Run Tests on Dependency Plugin | |
run: | | |
cd plugins/dependencies | |
rake | |
cd ../.. | |
# Job: Automatic Minor Release | |
auto-release: | |
name: "Automatic Minor Release" | |
needs: | |
- unit-tests-linux | |
- unit-tests-windows | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
ruby: [3.2] | |
steps: | |
# Checks out repository under $GITHUB_WORKSPACE | |
- name: Checkout Latest Repo | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
# Setup Ruby Testing Tools to do tests on multiple ruby version | |
- name: Setup Ruby Testing Tools | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby }} | |
# Generate the Version + Hash Name | |
- name: Version | |
id: versions | |
shell: bash | |
run: | | |
echo "short_ver=$(ruby ./lib/ceedling/version.rb)" >> $GITHUB_ENV | |
echo "full_ver=$(ruby ./lib/ceedling/version.rb)-$(git rev-parse --short HEAD)" >> $GITHUB_ENV | |
# Build Gem | |
- name: Build Gem | |
run: | | |
gem build ceedling.gemspec | |
# Create Unofficial Release | |
- name: Create Release | |
uses: actions/create-release@v1 | |
id: create_release | |
with: | |
draft: false | |
prerelease: true | |
release_name: ${{ env.full_ver }} | |
tag_name: ${{ env.full_ver }} | |
body: "Automatic pre-release for ${{ env.full_ver }}" | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
# Post Gem to Unofficial Release | |
- name: Upload Release Gem | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./ceedling-${{ env.short_ver }}.gem | |
asset_name: ceedling-${{ env.full_ver }}.gem | |
asset_content_type: test/x-gemfile |