Add Release Page workflow (#62) #231
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: | |
- master | |
pull_request: | |
env: | |
BUILD_TYPE: release | |
jobs: | |
compilation: | |
name: Compilation and Unit Tests | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
- os: macos-latest | |
artifact: macos | |
name: MacOSX | |
inklecate_url: https://github.com/inkle/ink/releases/download/v1.1.1/inklecate_mac.zip | |
proof: false | |
- os: windows-latest | |
artifact: win64 | |
name: Windows x64 | |
inklecate_url: https://github.com/inkle/ink/releases/download/v1.1.1/inklecate_windows.zip | |
proof: false | |
- os: "ubuntu-20.04" | |
artifact: linux | |
name: Linux x64 | |
inklecate_url: https://github.com/inkle/ink/releases/download/v1.1.1/inklecate_linux.zip | |
proof: true | |
steps: | |
# Checkout project | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
# Download inklecate | |
- uses: suisei-cn/actions-download-file@v1 | |
name: Download Inklecate | |
id: download_inklecate | |
with: | |
url: ${{ matrix.inklecate_url }} | |
target: "inklecate/" | |
# Install Inklecate | |
- name: Deploy Inkelcate | |
shell: bash | |
run: | | |
cd inklecate | |
unzip *.zip | |
echo "INKLECATE=${{ matrix.inklecate_pre }}$GITHUB_WORKSPACE/inklecate/inklecate${{ matrix.inklecate_post }}" >> $GITHUB_ENV | |
# Setup python | |
- uses: actions/setup-python@v2 | |
if: ${{ matrix.proof }} | |
with: | |
python-version: '3.7' | |
# Setup CMake | |
- name: Setup cmake | |
uses: jwlawson/[email protected] | |
with: | |
cmake-version: '3.21.x' | |
# Create a build directory to store all the CMake generated files | |
- name: Create Build Environment | |
run: cmake -E make_directory ${{github.workspace}}/build | |
# Run CMake configuration to create build files | |
- name: Configure CMake | |
shell: bash | |
working-directory: ${{github.workspace}}/build | |
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE | |
# Build using CMake and OS toolkit | |
- name: Build | |
working-directory: ${{github.workspace}}/build | |
shell: bash | |
run: cmake --build . --config $BUILD_TYPE | |
# Run CMake tests (unit tests, etc.) | |
- name: CTests | |
working-directory: ${{github.workspace}}/build | |
shell: bash | |
run: ctest . -C $BUILD_TYPE -V | |
# Copy all build artifacts to the bin directory | |
- name: Install CL | |
working-directory: ${{github.workspace}}/build | |
shell: bash | |
run: cmake --install . --config $BUILD_TYPE --prefix comp_cl --component cl | |
# Upload bin directory as artifact | |
- name: Upload Binary Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ matrix.artifact }}-cl | |
path: build/comp_cl/ | |
- name: Install LIB | |
working-directory: ${{github.workspace}}/build | |
shell: bash | |
run: cmake --install . --config $BUILD_TYPE --prefix comp_lib --component lib | |
# Upload bin directory as artifact | |
- name: Upload Binary Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ matrix.artifact }}-lib | |
path: build/comp_lib/ | |
- name: Install UE | |
working-directory: ${{github.workspace}}/build | |
shell: bash | |
run: cmake --install . --config $BUILD_TYPE --prefix comp_unreal --component unreal | |
# Upload bin directory as artifact | |
- name: Upload Binary Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ matrix.artifact }}-unreal | |
path: build/comp_unreal/ | |
# Make sure Inkproof has everything it needs to run our executable | |
- name: Setup Ink Proof | |
if: ${{ matrix.proof }} | |
shell: bash | |
working-directory: proofing/ink-proof | |
run: | | |
python3 install_deps.py | |
cp ../inkcpp_runtime_driver drivers/ | |
chmod +x drivers/inkcpp_runtime_driver | |
mkdir deps/inkcpp | |
cp ../../build/comp_cl/* deps/inkcpp/ | |
chmod +x deps/inkcpp/inkcpp_cl | |
# Run it | |
- name: Run Ink Proof | |
if: ${{ matrix.proof }} | |
shell: bash | |
working-directory: proofing/ink-proof | |
run: | | |
python3 proof.py --examples 'I...' inkcpp inklecate_v0.9.0 > run.out | |
echo -e "| ${{ matrix.name }} | $(cat run.out) |" > ${{ matrix.artifact }}.txt | |
# Creates a "disabled" artifact if ink proofing is disabled | |
- name: Create Disabled InkProof Results File | |
if: ${{ !matrix.proof }} | |
shell: bash | |
run: | | |
mkdir -p proofing/ink-proof | |
echo "| ${{ matrix.name }} | DISABLED |" > proofing/ink-proof/${{ matrix.artifact }}.txt | |
# Upload results artifact | |
- name: Upload Results Artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: results | |
path: proofing/ink-proof/${{ matrix.artifact }}.txt | |
# Upload website artifact | |
- name: Upload Ink-Proof Website Artifact | |
if: ${{ matrix.proof }} | |
uses: actions/upload-artifact@v2 | |
with: | |
name: ${{ matrix.artifact }}-www | |
path: proofing/ink-proof/out | |
reporting: | |
name: "Pull Request Report" | |
if: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository }} | |
runs-on: ubuntu-latest | |
needs: compilation | |
steps: | |
# Download Ink Proof Results | |
- uses: actions/download-artifact@v2 | |
with: | |
name: results | |
path: "results" | |
# Create comment text | |
- name: Create Comment Text File | |
shell: bash | |
run: | | |
echo "### Ink Proof Results" >> comment.txt | |
echo "" >> comment.txt | |
echo "These results are obtained by running the [Ink-Proof Testing Suite](https://github.com/chromy/ink-proof) on the compiled binaries in this pull request." >> comment.txt | |
echo "" >> comment.txt | |
echo "| System | Results |" >> comment.txt | |
echo "| --- | --- |" >> comment.txt | |
FILES="results/*.txt" | |
for f in $FILES | |
do | |
echo "Reading results from $f" | |
cat "$f" >> comment.txt | |
done | |
# Post Comment | |
- uses: marocchino/sticky-pull-request-comment@v2 | |
with: | |
recreate: true | |
path: comment.txt | |
pages: | |
name: "Upload Ink-Proof to Github Pages" | |
needs: compilation | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/master' | |
steps: | |
- uses: actions/checkout@v3 | |
# Download Ink Proof page for Linux | |
- uses: actions/download-artifact@v2 | |
with: | |
name: linux-www | |
path: www | |
# Deploy to Github Pages | |
- name: Deploy Page | |
uses: JamesIves/[email protected] | |
with: | |
branch: inkproof-page | |
folder: www |