Update GitHub Actions #4
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
name: Build | |
on: | |
push: | |
branches: | |
- 'main' | |
- 'alpha' | |
- 'beta' | |
pull_request: | |
jobs: | |
build: | |
name: Build | |
runs-on: windows-2019 | |
concurrency: | |
group: ukcp-build-${{ github.ref }} | |
cancel-in-progress: true | |
steps: | |
- name: Checkout Code and Submodules | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
# Environment things | |
- name: Set up Visual Studio Shell | |
uses: egor-tensin/vs-shell@v2 | |
with: | |
arch: x86 | |
- name: Check Clang Version | |
run: clang-cl --version | |
- name: Setup Ninja | |
uses: seanmiddleditch/gha-setup-ninja@master | |
# cURL | |
- name: Cache cURL | |
id: cache-curl | |
uses: actions/cache@v4 | |
with: | |
path: "C:\\hostedtoolcache\\windows\\libcurl" | |
key: "ukcp-curl-build" | |
- name: Download and Build cURL | |
if: steps.cache-curl.outputs.cache-hit != 'true' | |
env: | |
CURL_DOWNLOAD_URL: "https://github.com/curl/curl/releases/download/curl-7_76_1/curl-7.76.1.zip" | |
CURL_VERSION: 7.76.1 | |
run: | | |
New-Item -Path "C:\\hostedtoolcache\\windows" -Name "libcurl" -ItemType "directory" | |
$WebClient = New-Object System.Net.WebClient | |
$WebClient.DownloadFile(${env:CURL_DOWNLOAD_URL}, "C:\\hostedtoolcache\\windows\\libcurl\\curl.zip") | |
Set-Location -Path "C:\\hostedtoolcache\\windows\\libcurl" | |
7z x curl.zip | |
Remove-Item curl.zip | |
Set-Location -Path "C:\\hostedtoolcache\\windows\\libcurl\\curl-${env:CURL_VERSION}\\winbuild" | |
nmake /f Makefile.vc mode=static ENABLE_SCHANNEL=yes | |
- name: Setup cURL Environment | |
env: | |
CURL_VERSION: 7.76.1 | |
run: | | |
echo "CURL_INCLUDEDIR=C:\\hostedtoolcache\\windows\\libcurl\\curl-${env:CURL_VERSION}\\builds\\libcurl-vc-x86-release-static-ipv6-sspi-schannel\\include" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
echo "CURL_LIBRARYDIR=C:\\hostedtoolcache\\windows\\libcurl\\curl-${env:CURL_VERSION}\\builds\\libcurl-vc-x86-release-static-ipv6-sspi-schannel\\lib" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
# Setup all the yarn things and node modules | |
- name: Setup Yarn | |
uses: actions/setup-node@v1 | |
with: | |
node-version: '16' | |
- name: Get Yarn Cache Directory | |
id: yarn-cache-dir-path | |
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT | |
- name: Load Yarn Cache | |
uses: actions/cache@v4 | |
id: yarn-cache | |
with: | |
path: ${{ steps.yarn-cache-dir-path.outputs.dir }} | |
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-yarn- | |
- name: Load Cached Node Modules | |
uses: actions/cache@v4 | |
with: | |
path: '**/node_modules' | |
key: ${{ runner.os }}-node-modules-${{ hashFiles('**/yarn.lock') }} | |
# Install yarn things | |
- name: Install Assets | |
run: yarn | |
- name: Setup Build Version | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: .\\.github\\workflows\\plugin_version.ps1 | |
- name: Run CMake | |
env: | |
CC: clang-cl | |
CFLAGS: -m32 | |
CXX: clang-cl | |
CXXFLAGS: -m32 | |
run: cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja -Bbuild | |
# Run the build and tests | |
- name: Run Ninja Build | |
working-directory: build | |
run: ninja | |
- name: Run Tests | |
working-directory: build | |
run: | | |
ctest -C Release --output-on-failure --no-tests=error | |
# Do Srclinting | |
- name: Get Changed Files (Src) | |
id: changed-files-src | |
uses: Ana06/[email protected] | |
with: | |
filter: | | |
src/**/*.cpp | |
- name: Clang Tidy (Src) | |
continue-on-error: true # Have to as clang-tidy doesnt want to run properly on Windows | |
if: false | |
run: | | |
if (-not ([string]::IsNullOrEmpty("${{ steps.changed-files-src.outputs.added_modified }}"))) { clang-tidy ${{ steps.changed-files-src.outputs.added_modified }} -p build } | |
# Upload artifacts | |
- name: Upload Core Binary As Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: UKControllerPluginCore.dll | |
path: ".\\build\\bin\\UKControllerPluginCore.dll" | |
- name: Upload Updater Binary As Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: UKControllerPluginUpdater.dll | |
path: ".\\build\\bin\\UKControllerPluginUpdater.dll" | |
- name: Upload Loader Binary As Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: UKControllerPlugin.dll | |
path: ".\\build\\bin\\UKControllerPlugin.dll" | |
format: | |
name: Format | |
runs-on: windows-latest | |
concurrency: | |
group: ukcp-format-${{ github.ref }} | |
cancel-in-progress: true | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
with: | |
persist-credentials: false | |
# Environment things | |
- name: Check Clang Version | |
run: clang-cl --version | |
- name: Get All Changed Files | |
id: changed-files | |
uses: Ana06/[email protected] | |
with: | |
filter: | | |
src/**/*.cpp | |
src/**/*.h | |
test/**/*.cpp | |
test/**/*.h | |
- name: Clang Format | |
run: | | |
if (-not ([string]::IsNullOrEmpty("${{ steps.changed-files.outputs.added_modified }}"))) { clang-format --style=file --dry-run -Werror ${{ steps.changed-files.outputs.added_modified }} } | |
release: | |
name: Release | |
runs-on: windows-latest | |
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/beta' || github.ref == 'refs/heads/alpha') | |
needs: [build, format] | |
concurrency: | |
group: ukcp-release | |
cancel-in-progress: false | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
with: | |
persist-credentials: false | |
# Setup all the yarn things and node modules | |
- name: Setup Yarn | |
uses: actions/setup-node@v1 | |
with: | |
node-version: '16' | |
- name: Get Yarn Cache Directory | |
id: yarn-cache-dir-path | |
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT | |
- name: Load Yarn Cache | |
uses: actions/cache@v4 | |
id: yarn-cache | |
with: | |
path: ${{ steps.yarn-cache-dir-path.outputs.dir }} | |
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-yarn- | |
- name: Load Cached Node Modules | |
uses: actions/cache@v4 | |
with: | |
path: '**/node_modules' | |
key: ${{ runner.os }}-node-modules-${{ hashFiles('**/yarn.lock') }} | |
# Install yarn things | |
- name: Install Assets | |
run: yarn | |
# Download build artifacts | |
- name: Download Core Binary | |
uses: actions/download-artifact@v2 | |
with: | |
name: UKControllerPluginCore.dll | |
path: ".\\build\\bin\\UKControllerPluginCore.dll" | |
- name: Download Updater Binary | |
uses: actions/download-artifact@v2 | |
with: | |
name: UKControllerPluginUpdater.dll | |
path: ".\\build\\bin\\UKControllerPluginUpdater.dll" | |
- name: Download Loader Binary | |
uses: actions/download-artifact@v2 | |
with: | |
name: UKControllerPlugin.dll | |
path: ".\\build\\bin\\UKControllerPlugin.dll" | |
- name: Create Release | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAT }} | |
GH_TOKEN: ${{ secrets.PAT }} | |
run: | | |
yarn semantic-release |