mirror of
https://github.com/MikeWang000000/Natter.git
synced 2025-12-24 11:51:05 +08:00
CI: Add GitHub Actions
This commit is contained in:
128
.github/workflows/ci.yml
vendored
Normal file
128
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,128 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
workflow_dispatch:
|
||||
workflow_call:
|
||||
|
||||
jobs:
|
||||
Build:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
cross_dir: /opt/x-tools
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- name: arm64
|
||||
triplet: aarch64-unknown-linux-musl
|
||||
sha256: 28a1d26f14f8ddc3aed31f20705fe696777400eb5952d90470a7e6e2dd1175bb
|
||||
- name: arm32
|
||||
triplet: arm-unknown-linux-musleabi
|
||||
sha256: 95ce1aaf65f87ccdf714591c1bc7700f894ede1c6d3521bcedeff3acde9732ba
|
||||
- name: arm32hf
|
||||
triplet: arm-unknown-linux-musleabihf
|
||||
sha256: 2073af4caa8dd1898e16c87e02f8fb9c50c475b10a2d5306416e0c7891e201c6
|
||||
- name: arm32v7
|
||||
triplet: armv7-unknown-linux-musleabi
|
||||
sha256: 2ff70f31b1e3b3708b1a7c48d846a5781917d85b49b90a3b75344e7bed2656e5
|
||||
- name: arm32v7hf
|
||||
triplet: armv7-unknown-linux-musleabihf
|
||||
sha256: 741e421ac82d71797e3fce607b52ad31208c1de0f4b340b6fde3fb15adf53c61
|
||||
- name: i586
|
||||
triplet: i586-unknown-linux-musl
|
||||
sha256: 6ed6b195c44ff91e4636680aaf860eb80b8a2a02b782e24b622c6c4c99726736
|
||||
- name: i686
|
||||
triplet: i686-unknown-linux-musl
|
||||
sha256: 2595d247618bec5908c3e24516780e3343a0297b3b7e6dc70711ba75a62fc112
|
||||
- name: loong64
|
||||
triplet: loongarch64-unknown-linux-musl
|
||||
sha256: 4d9cba898688732e0f01dc2b6281ac7d75f98d4e30e5ff8e0125dd9c139c2172
|
||||
- name: m68k
|
||||
triplet: m68k-unknown-linux-musl
|
||||
sha256: 1a1965de969fac64fee85e0f2dabb59063a60cf6584f0cd521987c0d18480df5
|
||||
- name: microblazeel
|
||||
triplet: microblazeel-xilinx-linux-musl
|
||||
sha256: 2ceb60b2e97cdd0c7cbd05d367d08deb24b54d34ef6030c70e3e2a1c57645476
|
||||
- name: microblaze
|
||||
triplet: microblaze-xilinx-linux-musl
|
||||
sha256: 28a98391df1d4f095118226a2948c960c87f67f5e5e95b102277064813730e60
|
||||
- name: mips64el
|
||||
triplet: mips64el-unknown-linux-musl
|
||||
sha256: e96ceb131679bc2bbbda8deb66373ced8d41f740cecb2b29ae2dfac5539967f8
|
||||
- name: mips64
|
||||
triplet: mips64-unknown-linux-musl
|
||||
sha256: 2094bcee79a7538df552612be3b2280edb3ec731ffa29ae45c0df59a69c4dde4
|
||||
- name: mips32el
|
||||
triplet: mipsel-unknown-linux-musl
|
||||
sha256: 55a8af3c96fb38a32e44733472d5cc80ad1c32fcf81b1c2bc134dc7beecd5f00
|
||||
- name: mips32elsf
|
||||
triplet: mipsel-unknown-linux-muslsf
|
||||
sha256: 37a36a23b2f81eb3d2a83e0243c3734f1806b9531ed2cec7aa3a577645dea6d4
|
||||
- name: mips32
|
||||
triplet: mips-unknown-linux-musl
|
||||
sha256: ecbf4616b8c71df1013f4148fe7969331f7e4a89bee2841c7c5c79e3cc094504
|
||||
- name: mips32sf
|
||||
triplet: mips-unknown-linux-muslsf
|
||||
sha256: 3b37de77311f90b1d34091b6087b370d71e03c15b5e02ae0727a981e8df19b62
|
||||
- name: or1k
|
||||
triplet: or1k-unknown-linux-musl
|
||||
sha256: 016bd3ba6ffa4b359808a6c76ca1932d974ba73ef070b6190c7291470ca2d441
|
||||
- name: powerpc64
|
||||
triplet: powerpc64-unknown-linux-musl
|
||||
sha256: f0bfa604b5dd9072f2668bbd0df3c02f640d1249ada99bf8d5da5238654b993e
|
||||
- name: powerpc64le
|
||||
triplet: powerpc64le-unknown-linux-musl
|
||||
sha256: d7dc51ee9379aa06c99f0ed3a20598bf94eb27b859ed1ea67ac4915d49d83fb3
|
||||
- name: powerpc
|
||||
triplet: powerpc-unknown-linux-musl
|
||||
sha256: 3dceab6807ae8cbcc0b42e162f2da96172f1e524cf7ef706fe47f1238d4f6443
|
||||
- name: powerpcle
|
||||
triplet: powerpcle-unknown-linux-musl
|
||||
sha256: 64a26ecd0c32a49193118aa6863e4c10a76649b7e265184552454caaaf03ae1a
|
||||
- name: riscv32
|
||||
triplet: riscv32-unknown-linux-musl
|
||||
sha256: 178d6c1f540301a01053e5bbe37a8b6d16dd4cf6691eed672a215401c05adc71
|
||||
- name: riscv64
|
||||
triplet: riscv64-unknown-linux-musl
|
||||
sha256: d95b6894aa55c53800ec37ba6932e540bc2e90ae0c02fb99284aa59f7fc85fb5
|
||||
- name: s390x
|
||||
triplet: s390x-ibm-linux-musl
|
||||
sha256: f7a6788f6b371847c61a8444dd4cbdd90ce98f2d0e0a32b9e118b8acd59a584a
|
||||
- name: sh4
|
||||
triplet: sh4-multilib-linux-musl
|
||||
sha256: 902cd30fd8ebd974d740cad19997c1958ac78bfebd7cb149f76525db311ca0df
|
||||
- name: x86_64
|
||||
triplet: x86_64-unknown-linux-musl
|
||||
sha256: 6534870abd7dc327fd2e14cc53972d0552b21f47db5769505534f788537e3544
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: Set up toolchain for ${{ matrix.name }}
|
||||
run: |
|
||||
CROSS_TOOLCHAIN_URL="https://github.com/cross-tools/musl-cross/releases/download/20250929/${{ matrix.triplet }}.tar.xz"
|
||||
|
||||
sudo mkdir -m 777 -p "${{ env.cross_dir }}"
|
||||
cd "${{ env.cross_dir }}"
|
||||
curl -Lfo "${{ matrix.triplet }}.tar.xz" "$CROSS_TOOLCHAIN_URL"
|
||||
echo "${{ matrix.sha256 }} *${{ matrix.triplet }}.tar.xz" | sha256sum -c
|
||||
tar xJf "${{ matrix.triplet }}.tar.xz"
|
||||
|
||||
- name: Build for ${{ matrix.name }}
|
||||
run: |
|
||||
CROSS_COMPILE="${{ env.cross_dir }}/${{ matrix.triplet }}/bin/${{ matrix.triplet }}-"
|
||||
|
||||
cd micropython
|
||||
make -j$(nproc) compress STATIC=1 CROSS_COMPILE="$CROSS_COMPILE"
|
||||
mkdir -p 'build/dist/natter'
|
||||
cp -a build/compressed build/natter build/dist/natter
|
||||
|
||||
- name: Upload ${{ matrix.name }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: natter-linux-${{ matrix.name }}
|
||||
path: micropython/build/dist/natter
|
||||
if-no-files-found: error
|
||||
55
.github/workflows/release.yml
vendored
Normal file
55
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
name: Release
|
||||
run-name: Release ${{ github.event.inputs.version }}
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: Version Number
|
||||
type: string
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
Build:
|
||||
uses: ./.github/workflows/ci.yml
|
||||
|
||||
Release:
|
||||
permissions:
|
||||
contents: write
|
||||
runs-on: ubuntu-latest
|
||||
needs: Build
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: Check version string
|
||||
run: |
|
||||
VERSION=$(python3 natter.py --version | cut -d' ' -f2)
|
||||
test "$VERSION" = '${{ github.event.inputs.version }}' || {
|
||||
echo "Version string mismatch: $VERSION != ${{ github.event.inputs.version }}" >&2
|
||||
exit 1
|
||||
}
|
||||
- name: Download Artifact
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: ${{ github.workspace }}/artifacts
|
||||
- name: Reorganize files
|
||||
run: |
|
||||
mkdir release
|
||||
cd artifacts
|
||||
chmod a+x */natter* */compressed/natter*
|
||||
for triplet in *; do
|
||||
tar czvf "../release/$triplet.tar.gz" "$triplet"
|
||||
done
|
||||
- name: Make a tag
|
||||
run: |
|
||||
git config user.name 'GitHub Actions'
|
||||
git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
|
||||
git tag -a '${{ github.event.inputs.version }}' -m '${{ github.event.inputs.version }}'
|
||||
git push origin '${{ github.event.inputs.version }}'
|
||||
- name: Make a release
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
gh release create --title 'v${{ github.event.inputs.version }}' --generate-notes --verify-tag '${{ github.event.inputs.version }}' natter.py release/*.tar.gz
|
||||
Reference in New Issue
Block a user