Skip to content

docs: notes on submitting winpkg update #471

docs: notes on submitting winpkg update

docs: notes on submitting winpkg update #471

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!"
linux-test:
name: 🐧 Linux x86 test
needs: [reuse, c-lint]
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v4
- name: Build x86_64 with Linux
run: |
make linux CC=clang
- name: Run tests
run: |
make check-ci
- name: Use cjit to compile cjit
run: |
sudo make install
make clean
make linux CC=cjit
- name: Run tests with self-hosted cjit
run: |
make check-ci
debian-test:
name: 🐧 Debian (tcc shlib) test
needs: [reuse, c-lint]
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v4
- name: Install deps
run: |
sudo apt-get -qy update
sudo apt-get -qy install tcc libtcc-dev meson ninja-build
- name: Build with tcc as shared libsLinux
run: |
make meson
- name: Run tests
run: |
make check-ci
win-native-test:
name: πŸͺŸ Windows native test
needs: [reuse, c-lint]
runs-on: "windows-latest"
steps:
- uses: actions/checkout@v4
- name: Build native windows exe for x86_64
run: |
make win-native
- name: Run tests
run: |
make check-ci
osx-native-test:
name: 🍎 OSX native test
needs: [reuse, c-lint]
runs-on: "macos-latest"
steps:
- uses: actions/checkout@v4
- name: Build native Apple/OSX command executable
run: |
make apple-osx
- name: Run tests
run: |
make check-ci
semantic-release:
name: πŸ€– Semantic release
needs: [linux-test, osx-native-test, win-native-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 }}
- name: Upload release docs artifacts
uses: actions/upload-artifact@v4
with:
name: documentation
path: |
build/release-intro.md
linux-release:
name: 🐧 Linux shared binary release build
needs: [semantic-release]
strategy:
matrix:
os: [ubuntu-24.04, ubuntu-22.04]
python-version: ["3.12"]
runs-on: ${{ matrix.os }}
if: ${{ needs.semantic-release.outputs.new_release_published == 'true' }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install build deps
run: |
sudo apt install -qy make
- name: Build x86_64 on Linux
run: |
make linux RELEASE=1
mv cjit cjit-x86_64-${{ matrix.os }}
- name: Upload artifact linux-amd64
uses: actions/upload-artifact@v4
with:
name: release-linux-${{ matrix.os }}
path: |
cjit-x86_64-${{ matrix.os }}
win-native-release:
name: πŸͺŸ Windows native binary release build
needs: [semantic-release]
if: ${{ needs.semantic-release.outputs.new_release_published == 'true' }}
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 RELEASE=1
cp cjit-ar.exe ar.exe
- name: Build GNU make native windows exe
run: |
Invoke-WebRequest -OutFile "make.tar.lz" -Uri "https://ftp.gnu.org/gnu/make/make-4.4.1.tar.lz"
choco install lzip
tar xf make.tar.lz
cd make-4.4.1
./build_w32
mv WinRel/gnumake.exe ../make.exe
- name: Compile the installer
run: |
ISCC.exe /DMyAppVersion=${{ needs.semantic-release.outputs.new_release_version }} build\innosetup.iss
mv build\Output\cjit_innosetup.exe CJIT_install.exe
- name: Build winget package manifest
run: |
bash.exe ./build/winpkg-update.sh CJIT_install.exe ${{ needs.semantic-release.outputs.new_release_version }}
- name: Upload artifact windows-amd64
uses: actions/upload-artifact@v4
with:
name: release-win-native-x86_64
path: |
cjit.exe
CJIT_install.exe
osx-native-release:
name: 🍎 OSX native binary release build
needs: [semantic-release]
strategy:
matrix:
os: [macos-14, macos-13]
if: ${{ needs.semantic-release.outputs.new_release_published == 'true' }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Get architecture
run: |
echo "ARCH=$(uname -m)" >> $GITHUB_ENV
- name: Build native Apple/OSX command executable
run: |
make apple-osx RELEASE=1
mv cjit.command cjit-Darwin-${{ env.ARCH }}
- name: Upload artifact apple-osx
uses: actions/upload-artifact@v4
with:
name: release-osx-${{ env.ARCH }}
path: |
cjit-Darwin-${{ env.ARCH }}
binary-release:
name: πŸ“’ Public release
needs: [semantic-release, osx-native-release, linux-release, win-native-release]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: download binary artifacts
uses: actions/download-artifact@v4
with:
path: |
cjit-bin
- name: pack the cjit-demo archive
run: |
bash build/pack-examples.sh
mkdir -p cjit-bin/release-demo/
mv cjit-demo.tar.gz cjit-bin/release-demo/
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: show release 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
virustotal:
name: 🦠 Virus scan of released binaries
needs: [binary-release]
runs-on: ubuntu-latest
if: ${{ needs.semantic-release.outputs.new_release_published == 'true' }}
steps:
- name: download binary artifacts
uses: actions/download-artifact@v4
with:
path: |
cjit-bin
- name: VirusTotal Scan
uses: crazy-max/ghaction-virustotal@v4
with:
vt_api_key: ${{ secrets.VIRUSTOTAL_API_KEY }}
update_release_body: true
files: |
cjit-bin/release-osx-native/*
cjit-bin/release-win-native-x86_64/*
cjit-bin/release-shared-linux-x86_64/*
remove-tag-on-fail:
name: 🧻 Remove tag on fail
needs: [binary-release, semantic-release, osx-native-release, linux-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: true
repo: dyne/cjit