Skip to content

Build for Apple/OSX #124

Build for Apple/OSX

Build for Apple/OSX #124

Workflow file for this run

name: cjit
on:
push:
paths-ignore:
- 'docs/**'
- '*.md'
branches:
- main
pull_request:
paths-ignore:
- 'docs/**'
- '*.md'
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: true
jobs:
reuse:
name: 🚨 REUSE Compliance
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: fsfe/reuse-action@v4
c-lint:
name: 🚨 C lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: reviewdog/action-cpplint@master
env:
REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
reporter: github-pr-check
targets: --recursive src
level: warning
flags: --linelength=120 # Optional
filter: "-readability/braces\
,-readability/casting\
,-readability/multiline_comment\
,-whitespace/comma\
,-whitespace/braces\
,-whitespace/comments\
,-whitespace/indent\
,-whitespace/newline\
,-whitespace/operators\
,-whitespace/parens\
,-whitespace/tab\
,-whitespace/end_of_line\
" # Optional
# - name: Fail fast?!
# if: steps.linter.outputs.checks-failed > 0
# run: |
# echo "😀 Some files failed the C linting checks!"
musl-test:
name: 🐧 Musl Linux test
needs: [reuse, c-lint]
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v4
- name: install dependencies
run: |
sudo apt install -yq musl-tools musl-dev
- name: Build x86_64 with musl-system
run: |
make musl-linux
- name: Run tests
run: |
make check
win-native-test:
name: πŸͺŸ Windows native test
needs: [reuse, c-lint]
runs-on: "windows-latest"
steps:
- uses: actions/checkout@v4
# - name: install dependencies
# run: |
# choco install --no-progress -r -y upx
- name: Build native windows exe for x86_64
run: |
make win-native
- name: Run tests
run: |
.\cjit.exe test\hello.c
osx-native-test:
name: 🍎 OSX native test
needs: [reuse, c-lint]
runs-on: "macos-latest"
steps:
- uses: actions/checkout@v4
# - name: install dependencies
# run: |
# choco install --no-progress -r -y upx
- name: Build native Apple/OSX command executable
run: |
make osx
- name: Run tests
run: |
./cjit.command test/hello.c
semantic-release:
name: πŸ€– Semantic release
needs: [musl-test]
runs-on: ubuntu-latest
outputs:
new_release_published: ${{ steps.semantic-release.outputs.new_release_published }}
new_release_version: ${{ steps.semantic-release.outputs.new_release_version }}
if: ${{ github.ref_name == 'main' && github.event_name == 'push' }}
steps:
- uses: actions/checkout@v4
- name: Semantic Release
uses: cycjimmy/semantic-release-action@v4
id: semantic-release
with:
extra_plugins: |
@semantic-release/changelog
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
musl-release:
name: 🐧 Musl Linux binary release build
runs-on: ubuntu-latest
needs: [semantic-release]
if: ${{ needs.semantic-release.outputs.new_release_published == 'true' }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Upload release docs artifacts
uses: actions/upload-artifact@v4
with:
name: documentation
path: |
build/release-intro.md
- name: Install build deps
run: |
sudo apt install -qy make musl-tools musl-dev gcc-mingw-w64
- name: Build x86_64 with musl-system
run: |
make musl-linux
- name: Upload artifact linux-amd64
uses: actions/upload-artifact@v4
with:
name: release-musl-linux-x86_64
path: |
cjit
win-native-release:
name: πŸͺŸ Windows native binary release build
needs: [semantic-release]
runs-on: "windows-latest"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Build native windows exe for x86_64
run: |
make win-native
- name: Upload artifact windows-amd64
uses: actions/upload-artifact@v4
with:
name: release-win-native-x86_64
path: |
cjit.exe
osx-native-release:
name: 🍎 OSX native binary release build
needs: [semantic-release]
runs-on: "macos-latest"
steps:
- uses: actions/checkout@v4
- name: Build native Apple/OSX command executable
run: |
make osx
- name: Upload artifact apple-osx
uses: actions/upload-artifact@v4
with:
name: release-osx-native
path: |
cjit.command
draft-binary-release:
name: πŸ“¦ Pack release
needs: [semantic-release, musl-release, win-native-release]
runs-on: ubuntu-latest
steps:
- name: download binary artifacts
uses: actions/download-artifact@v4
with:
path: |
cjit-bin
- name: show directory structure
run: tree -dL 3
- name: relase all binary artifacts
uses: softprops/action-gh-release@v2
with:
files: |
cjit-bin/release*/*
tag_name: v${{ needs.semantic-release.outputs.new_release_version }}
body_path: cjit-bin/documentation/release-intro.md
append_body: true
draft: false
prerelease: false
fail_on_unmatched_files: true
generate_release_notes: true
remove-tag-on-fail:
name: 🧻 Remove tag on fail
needs: [semantic-release, musl-release, win-native-release]
runs-on: ubuntu-latest
if: ${{ (failure() || cancelled()) && needs.semantic-release.outputs.new_release_published == 'true' }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Remove tag
uses: dev-drprasad/[email protected]
with:
tag_name: v${{ needs.semantic-release.outputs.new_release_version }}
github_token: ${{ secrets.GITHUB_TOKEN }}
delete_release: false
repo: dyne/cjit