Reduced the intensity of the ECM effect. Less is more. #389
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-all | |
on: | |
workflow_dispatch: | |
push: | |
jobs: | |
common-steps: | |
runs-on: ubuntu-latest | |
steps: | |
- name: install all the necessary packages | |
run: | | |
sudo apt update | |
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections | |
sudo apt -y install libreoffice ttf-mscorefonts-installer | |
- name: Checkout Oolite | |
uses: actions/checkout@v4 | |
with: | |
path: oolite | |
fetch-depth: 0 | |
submodules: true | |
- name: Calculate version number and set OOLITE_VERSION | |
id: version | |
run: | | |
set -x | |
cd oolite | |
# Build version string, | |
# taking into account that we may have just two digits | |
VERSION=$(cat src/Cocoa/oolite-version.xcconfig | cut -d '=' -f 2) | |
VER_MAJ=$(echo ${VERSION} | cut -d. -f1) | |
VER_MIN=$(echo ${VERSION} | cut -d. -f2) | |
VER_REV=$(echo ${VERSION} | cut -d. -f3) | |
if [ "" == "${VER_REV}" ] | |
then | |
VER_REV="0" | |
fi | |
VER_DATE=$(date +%y%m%d) | |
VER_GITREV=$(git rev-list --count HEAD) | |
VER_GITHASH=$(git rev-parse --short=7 HEAD) | |
VER="${VER_MAJ}.${VER_MIN}.${VER_REV}.${VER_GITREV}-${VER_DATE}-${VER_GITHASH}" | |
echo "OOLITE_VERSION=${VER}" >> "$GITHUB_OUTPUT" | |
echo "OOLITE_VERSION=${VER}" >> Doc/OOLITE_VERSION.txt | |
- name: generate PDFs | |
run: | | |
find oolite/Doc -name "*.odt" -exec soffice --headless --convert-to pdf:"writer_pdf_Export" --outdir oolite/Doc {} \; | |
zip oolite-doc.zip oolite/Doc/*.pdf oolite/Doc/OOLITE_VERSION.txt | |
- name: Archive generated documentation | |
uses: actions/upload-artifact@v4 | |
with: | |
name: oolite-doc | |
path: | | |
oolite-doc.zip | |
retention-days: 5 | |
- name: Check Javascript with linter | |
run: | | |
npm install eslint | |
npm install --save-dev eslint eslint-plugin-es-x | |
npx eslint . || echo Ignore problems and continue | |
build-linux: | |
runs-on: ubuntu-latest | |
needs: [common-steps] | |
strategy: | |
matrix: | |
flavour: [pkg-posix-nightly, pkg-posix-test, pkg-posix] | |
steps: | |
## This is for debugging only and helps developing the workflow. | |
# - name: Environment Variables | |
# run: | | |
# printenv | sort | |
- name: install all the necessary packages | |
run: | | |
sudo apt update | |
sudo apt -y install git gobjc gnustep-devel make libsdl1.2-dev libvorbis-dev libopenal-dev g++ libespeak-dev libnspr4-dev | |
- name: Checkout Oolite | |
uses: actions/checkout@v4 | |
with: | |
path: oolite | |
fetch-depth: 0 | |
submodules: true | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: oolite-doc | |
path: artifacts | |
- name: Extract PDFs | |
run: | | |
unzip -u artifacts/oolite-doc.zip | |
# This is for debugging only and helps developing the workflow. | |
- name: show filesystem before build | |
run: | | |
find . -not -path "./oolite/deps/Windows-deps/*" -not -path "./oolite/Mac-specific/*" -not -path "./oolite/.git/*" | |
- name: compiling up to installer script (.run file) | |
run: | | |
cd oolite | |
source /usr/share/GNUstep/Makefiles/GNUstep.sh | |
make -f Makefile ${{matrix.flavour}} HOST_ARCH=$(uname -m) | |
## This is for debugging only and helps developing the workflow. | |
# - name: show filesystem after build | |
# run: | | |
# find . -not -path "./oolite/Mac-specific/*" -not -path "./oolite/deps/Windows-deps/*" -not -path "./oolite/tests/*" -not -path "./oolite/.git/*" -not -path "./oolite/deps/mozilla/*" | |
# This is for debugging only and helps developing the workflow. | |
- name: show filesystem after installer | |
run: | | |
find . -not -path "./oolite/Mac-specific/*" -not -path "./oolite/deps/*" -not -path "./oolite/tests/*" -not -path "./oolite/.git/*" | |
- name: Archive installer | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{matrix.flavour}} | |
path: | | |
oolite/installers/posix/OoliteInstall-*.run | |
retention-days: 5 | |
build-windows: | |
runs-on: windows-latest | |
needs: [common-steps] | |
strategy: | |
matrix: | |
flavour: [pkg-win-snapshot,pkg-win-deployment,pkg-win] | |
steps: | |
## This is for debugging only and helps developing the workflow. | |
# - name: Environment Variables | |
# run: | | |
# Get-ChildItem Env: | Sort Name | |
- name: Checkout DevelopmentEnvironment | |
uses: actions/checkout@v4 | |
with: | |
repository: OoliteProject/oolite-windows-build-env | |
path: DevelopmentEnvironment | |
- name: Checkout Oolite | |
uses: actions/checkout@v4 | |
with: | |
path: oolite | |
fetch-depth: 0 | |
submodules: true | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: oolite-doc | |
path: artifacts | |
- name: Extract PDFs | |
run: | | |
unzip -u artifacts/oolite-doc.zip | |
# check http://aegidian.org/bb/viewtopic.php?p=281821#p281821 | |
# this is for debug only; it creates huge logs and takes a long time to execute, yet you never know when you need it | |
- name: check filesystem | |
run: | | |
Get-ChildItem -Path "$env:GITHUB_WORKSPACE" –Recurse | |
- name: Prepare compile script with flavour | |
shell: cmd | |
run: | | |
echo Want to build flavour ${{matrix.flavour}} | |
mkdir D:\a\oolite\oolite\DevelopmentEnvironment\gcc\Msys_x2\1.0\etc\profile.d | |
echo export FLAVOUR="${{matrix.flavour}}" > D:\a\oolite\oolite\DevelopmentEnvironment\gcc\Msys_x2\1.0\etc\profile.d\flavour.sh | |
cat D:\a\oolite\oolite\DevelopmentEnvironment\gcc\Msys_x2\1.0\etc\profile.d\flavour.sh | |
- name: check filesystem after preparation | |
run: | | |
Get-ChildItem -Path "$env:GITHUB_WORKSPACE" –Recurse | |
- name: Compile | |
shell: cmd | |
run: | | |
D:\a\oolite\oolite\DevelopmentEnvironment\gcc\Msys_x2\1.0\msys.cmd | |
# check http://aegidian.org/bb/viewtopic.php?p=281821#p281821 | |
# this is for debug only; it creates huge logs and takes a long time to execute, yet you never know when you need it | |
- name: check filesystem | |
run: | | |
Get-ChildItem -Path "$env:GITHUB_WORKSPACE" –Recurse | |
- name: Archive build | |
uses: actions/upload-artifact@v4 | |
with: | |
name: oolite-windows-${{matrix.flavour}} | |
path: | | |
oolite/installers/win32/OoliteInstall*.exe | |
retention-days: 5 | |
build-doxygen: | |
runs-on: ubuntu-latest | |
needs: [common-steps] | |
steps: | |
- name: install all the necessary packages | |
run: | | |
sudo apt update | |
sudo apt -y install graphviz | |
- name: Checkout Oolite | |
uses: actions/checkout@v4 | |
with: | |
path: oolite | |
fetch-depth: 0 | |
submodules: true | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: oolite-doc | |
path: artifacts | |
- name: Extract artifacts | |
run: | | |
unzip -u artifacts/oolite-doc.zip | |
- name: set version | |
id: version | |
run: | | |
OOLITE_VERSION=$(cat oolite/Doc/OOLITE_VERSION.txt | cut -d= -f2) | |
echo "OOLITE_VERSION=${OOLITE_VERSION}" >> "$GITHUB_OUTPUT" | |
sed -i -e "/PROJECT_NUMBER\s*=/ s/=.*/=${OOLITE_VERSION}/" oolite/Doxyfile | |
- name: Download latest Doxygen | |
id: download-doxygen | |
uses: robinraju/[email protected] | |
with: | |
repository: "doxygen/doxygen" | |
# A flag to set the download target as latest release | |
# The default value is 'false' | |
latest: true | |
# The github tag. e.g: v1.0.1 | |
# Download assets from a specific tag/version | |
# tag: "v1.0.68" | |
# The release id to download files from | |
# releaseId: "" | |
# The name of the file to download. | |
# Use this field only to specify filenames other than tarball or | |
# zipball, if any. | |
# Supports wildcard pattern (eg: '*', '*.deb', '*.zip' etc..) | |
fileName: "doxygen-*.linux.bin.tar.gz" | |
# Download the attached tarball (*.tar.gz) | |
tarBall: false | |
# Download the attached zipball (*.zip) | |
zipBall: false | |
# Relative path under $GITHUB_WORKSPACE to place the downloaded | |
# file(s). It will create the target directory automatically if | |
# not present eg: | |
# out-file-path: "my-downloads" | |
# => It will create directory $GITHUB_WORKSPACE/my-downloads | |
out-file-path: "doxygen" | |
# A flag to set if the downloaded assets are archives and should | |
# be extracted. Checks all downloaded files if they end with zip, | |
# tar or tar.gz and extracts them, if true. Prints a warning if | |
# enabled but file is not an archive - but does not fail. | |
extract: true | |
- name: Check filesytem before Doxygen run | |
run: | | |
find . -not -path "./oolite/deps/*" -not -path "./oolite/Mac-specific/*" -not -path "./oolite/.git/*" | |
#- name: Run doxygen | |
# uses: mattnotmitt/[email protected] | |
# with: | |
# working-directory: oolite | |
- name: Run Doxygen | |
run: | | |
echo Downloaded: ${{ fromJson(steps.download-doxygen.outputs.downloaded_files)[0] }} | |
cd oolite | |
../doxygen/doxygen-*/bin/doxygen | |
## This is for debugging only and helps developing the workflow. | |
# - name: Environment Variables 1 | |
# run: | | |
# printenv | sort | |
# find . -not -path "./oolite/deps/*" -not -path "./oolite/Mac-specific/*" -not -path "./oolite/.git/*" | |
- name: create tar ball | |
run: | | |
tar cvfz oolite-apidoc-${{ steps.version.outputs.OOLITE_VERSION }}.tgz -C oolite doxygen | |
# This is for debugging only and helps developing the workflow. | |
- name: Environment Variables 2 | |
run: | | |
find . -not -path "./oolite/deps/*" -not -path "./oolite/Mac-specific/*" -not -path "./oolite/.git/*" | |
- name: Archive build tar ball | |
uses: actions/upload-artifact@v4 | |
with: | |
name: oolite-documentation-nightly | |
path: | | |
oolite-*.tgz | |
retention-days: 5 | |
- name: Upload github pages artifact | |
uses: actions/upload-pages-artifact@v2 | |
with: | |
path: oolite/doxygen/html | |
release: | |
needs: [build-linux, build-windows, build-doxygen] | |
runs-on: ubuntu-latest | |
steps: | |
## This is for debugging only and helps developing the workflow. | |
# - name: Environment Variables | |
# run: | | |
# printenv | sort | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: artifacts | |
# This is for debugging only and helps developing the workflow. | |
- name: show filesystem after download | |
run: | | |
find . -type f | sort | |
echo | |
find . -type f -exec basename {} \; | sort | |
- name: Extract artifacts | |
run: | | |
ls -l artifacts | |
unzip -u artifacts/oolite-doc/oolite-doc.zip | |
- name: set version | |
id: version | |
run: | | |
OOLITE_VERSION=$(cat oolite/Doc/OOLITE_VERSION.txt | cut -d= -f2) | |
echo "OOLITE_VERSION=${OOLITE_VERSION}" >> "$GITHUB_OUTPUT" | |
- name: Remove old prereleases | |
if: github.ref == 'refs/heads/master' | |
uses: s00d/[email protected] | |
with: | |
keep_latest: 7 | |
delete_type: 'prerelease' | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# For changes on master branch, create a new release. | |
# It should move the 'latest' tag automatically. | |
- name: Create Release | |
if: github.ref == 'refs/heads/master' | |
id: create_release | |
uses: "marvinpinto/action-automatic-releases@latest" | |
with: | |
repo_token: "${{ secrets.GITHUB_TOKEN }}" | |
# automatic_release_tag: "latest" | |
automatic_release_tag: "${{ steps.version.outputs.OOLITE_VERSION }}" | |
prerelease: true | |
title: "Oolite ${{ steps.version.outputs.OOLITE_VERSION }}" | |
files: | | |
artifacts/oolite-documentation-nightly/oolite-apidoc-*.tgz | |
artifacts/oolite-windows-pkg-win-snapshot/OoliteInstall-*-dev.exe | |
artifacts/oolite-windows-pkg-win-deployment/OoliteInstall-*.exe | |
artifacts/oolite-windows-pkg-win/OoliteInstall-*.exe | |
artifacts/pkg-posix-nightly/*.run | |
artifacts/pkg-posix/*.run | |
artifacts/pkg-posix-test/*.run | |
- name: Remove old workflow runs | |
if: github.ref == 'refs/heads/master' | |
uses: Mattraks/delete-workflow-runs@v2 | |
with: | |
token: ${{ github.token }} | |
repository: ${{ github.repository }} | |
retain_days: 30 | |
keep_minimum_runs: 8 | |
deploySite: | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
needs: build-doxygen | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/master' | |
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
steps: | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v2 |