Skip to content

Update main.yml

Update main.yml #467

Workflow file for this run

name: Build and test Absytree
on:
# Runs on pushes targeting the default branch
push:
branches: ["main"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "build"
cancel-in-progress: true
jobs:
build-absytree-linux:
name: Build Absytree Linux
runs-on: ubuntu-latest
strategy:
matrix:
container: ["ubuntu:22.04"]
container:
image: ${{ matrix.container }}
volumes:
- ${{ github.workspace }}:/app
steps:
- name: Checkout the repo
uses: actions/[email protected]
- run: apt-get update
continue-on-error: true
- run: apt-get install gcc-mingw-w64 libx11-xcb-dev curl wget build-essential git musl-tools -y
continue-on-error: true
- name: Install stable rust toolchain
uses: dtolnay/[email protected]
- run: rustup target add x86_64-unknown-linux-musl
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.29.3'
# install choosenim and nim
#- run: wget https://nim-lang.org/choosenim/init.sh -O init-choosenim.sh
#- run: ls -la
#- run: chmod +x init-choosenim.sh
#- run: CHOOSENIM_CHOOSE_VERSION="stable" ./init-choosenim.sh -y
- uses: iffy/install-nim@v5
with:
version: binary:2.0.6
- name: add Absytree as git safe.directory so nimble can install stuff
run: git config --global --add safe.directory /__w/Absytree/Absytree
continue-on-error: true
# not working because "source" doesn't exist?
#- run: echo "export PATH=/github/home/.nimble/bin:\$PATH" > ~/.profile
#- run: source ~/.profile
# continue-on-error: true
- run: PATH=/github/home/.nimble/bin:$PATH nimble setup
# linux builds
- run: PATH=/github/home/.nimble/bin:$PATH nimble buildAbsytreeServer
- if: always()
run: PATH=/github/home/.nimble/bin:$PATH nimble buildLspWs
#- if: always()
# run: PATH=/github/home/.nimble/bin:$PATH nimble buildBrowser
- if: always()
run: PATH=/github/home/.nimble/bin:$PATH nimble buildDesktop --app:console -D:forceLogToFile -D:enableGui=false -D:enableTerminal=true --out:ast
- if: always()
run: PATH=/github/home/.nimble/bin:$PATH nimble buildDesktop --app:console -D:forceLogToFile -D:enableGui=false -D:enableTerminal=true -d:musl --out:ast-musl
- if: always()
run: PATH=/github/home/.nimble/bin:$PATH nimble buildDesktop --app:gui -D:forceLogToFile -D:enableGui=true -D:enableTerminal=false --out:ast-gui
# create release packages
- run: PATH=/github/home/.nimble/bin:$PATH nim ./tools/package_release.nims
- run: ls -la release_linux
#- run: ls -la release_web
# make zips
- name: Zip release_linux
uses: vimtor/[email protected]
with:
files: release_linux
dest: release_linux.zip
#- name: Zip release_web
# uses: vimtor/[email protected]
# with:
# files: release_web
# dest: release_web.zip
# upload artifacts
- name: Upload release_linux
uses: actions/[email protected]
with:
name: release_linux
path: release_linux.zip
#- name: Upload release_web
# uses: actions/[email protected]
# with:
# name: release_web
# path: release_web.zip
build-absytree-windows:
name: Build Absytree Windows
runs-on: windows-2022
steps:
- name: Checkout the repo
uses: actions/[email protected]
# If I want a specific cmake version
# - name: Setup cmake
# uses: jwlawson/actions-setup-cmake@v2
# with:
# cmake-version: '3.29.3'
# If I want a specific rust version
#- name: Install latest nightly
# uses: actions-rs/[email protected]
# with:
# toolchain: stable
# override: true
- run: $env:TMP = "$env:USERPROFILE\T"
continue-on-error: true
- run: $env:TEMP = "$env:USERPROFILE\T"
continue-on-error: true
- run: echo $env:TMP $env:TEMP
continue-on-error: true
- uses: iffy/install-nim@v5
with:
version: binary:2.0.6
- name: Cache nimble modules
id: cache-nimble
uses: actions/cache@v3
env:
cache-name: cache-nimble-modules
with:
path: ~/.nimble
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/nimble.lock') }}
- if: ${{ steps.cache-nimble.outputs.cache-hit != 'true' }}
continue-on-error: true
run: nimble setup
- name: nimble setup
run: nimble setup
# windows builds
- if: always()
run: nimble buildDesktop --app:console -D:forceLogToFile -D:enableGui=false -D:enableTerminal=true --out:ast.exe
- if: always()
run: nimble buildDesktop --app:gui -D:forceLogToFile -D:enableGui=true -D:enableTerminal=false --out:astg.exe
- if: always()
run: nimble buildAbsytreeServerWindows
- if: always()
run: nimble buildLspWsWindows
# create release packages
- run: nim ./tools/package_release.nims
# make zips
- name: Zip release_windows
uses: vimtor/[email protected]
with:
files: release_windows
dest: release_windows.zip
# upload artifacts
- name: Upload release_windows
uses: actions/[email protected]
with:
name: release_windows
path: release_windows.zip
run-tests:
name: Run tests
runs-on: ubuntu-latest
container:
image: "nimlang/nim:2.0.2-regular"
volumes:
- ${{ github.workspace }}:/app
steps:
- name: Checkout the repo
uses: actions/[email protected]
- name: Install stable rust toolchain
uses: dtolnay/[email protected]
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.29.3'
- name: add Absytree as git safe.directory so nimble can install stuff
run: git config --global --add safe.directory /__w/Absytree/Absytree
- name: nimble setup
run: PATH=/github/home/.nimble/bin:$PATH nimble setup
- name: Run tests
run: testament --print category unit
- name: Build test report
if: always()
run: testament html
- uses: actions/[email protected]
if: always()
with:
name: testresults.html
path: testresults.html
# Build job
build-page:
runs-on: ubuntu-latest
needs: run-tests
if: always()
steps:
- name: Checkout
uses: actions/[email protected]
- uses: actions/[email protected]
with:
name: testresults.html
continue-on-error: true
- name: Setup Pages
uses: actions/[email protected]
- name: Build with Jekyll
uses: actions/[email protected]
with:
source: ./
destination: ./_site
- name: Upload artifact
uses: actions/[email protected]
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build-page
if: always()
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/[email protected]