summaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2025-03-22 19:50:58 +0800
committerlittleblack111 <littleblack11111@gmail.com>2025-03-22 21:02:29 +0800
commitc98642129974de37ec5b46f4b7f52ba71e70dd46 (patch)
treea6d02f9b61e7725066c9891700d87d7c1190b8a7 /.github
parent0a649085a291fe96ab2a60ce8295f106506da585 (diff)
ci(release): multi platform support
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/ci.yml47
-rw-r--r--.github/workflows/release-tip.yml36
2 files changed, 70 insertions, 13 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 4950db5..a30df9b 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -4,6 +4,7 @@ on:
push:
paths:
- 'src/*.cpp'
+ - 'src/*.hpp'
- '.clang-format'
- 'Makefile'
- '.github/**'
@@ -18,9 +19,9 @@ permissions:
pull-requests: write
jobs:
- gcc:
+ linux:
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork
- name: "Build (Arch)"
+ name: "Build (Linux)"
runs-on: ubuntu-latest
container:
image: archlinux
@@ -45,12 +46,46 @@ jobs:
if: success()
uses: actions/upload-artifact@v4
with:
- name: chat-server
+ name: chat-server-linux
+ path: build/chat-server
+
+ macos:
+ if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork
+ name: "Build (macOS)"
+ runs-on: macos-latest
+ steps:
+ - name: Install dependencies
+ run: |
+ brew update
+ brew install llvm@14 gcc@14 make ninja
+ - name: Install compiler
+ id: install_cc
+ uses: rlalik/setup-cpp-compiler@master
+ with:
+ compiler: gcc-14
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ github.head_ref }}
+ fetch-depth: 0
+ - name: Build project
+ env:
+ # CC: ${{ steps.install_cc.outputs.cc }}
+ # CXX: ${{ steps.install_cc.outputs.cxx }}
+ # above don't work cuz for some reason it's using g++ from /usr/local/bin :/
+ CC: /opt/homebrew/bin/g++-14
+ CXX: /opt/homebrew/bin/g++-14
+ run: make all
+ - name: Upload Artifact
+ if: success()
+ uses: actions/upload-artifact@v4
+ with:
+ name: chat-server-macos
path: build/chat-server
- clang:
+ clang-linux:
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork
- name: "Build with Clang (Arch)"
+ name: "Build with Clang (Linux)"
runs-on: ubuntu-latest
container:
image: archlinux
@@ -58,7 +93,7 @@ jobs:
- name: Install dependencies
run: |
pacman -Syu --noconfirm
- pacman -S --noconfirm base-devel git make ninja clang llvm clang
+ pacman -S --noconfirm base-devel git make ninja clang llvm
- name: Checkout repository
uses: actions/checkout@v4
diff --git a/.github/workflows/release-tip.yml b/.github/workflows/release-tip.yml
index 5a9befc..22e01ed 100644
--- a/.github/workflows/release-tip.yml
+++ b/.github/workflows/release-tip.yml
@@ -40,11 +40,19 @@ jobs:
with:
fetch-depth: 0
- - name: Download Build Artifacts
+ - name: Download Linux Build Artifact
uses: actions/download-artifact@v4
with:
- name: chat-server
- path: artifacts/
+ name: chat-server-linux
+ path: artifacts/linux/
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ run-id: ${{ github.event.workflow_run.id }}
+
+ - name: Download macOS Build Artifact
+ uses: actions/download-artifact@v4
+ with:
+ name: chat-server-macos
+ path: artifacts/macos/
github-token: ${{ secrets.GITHUB_TOKEN }}
run-id: ${{ github.event.workflow_run.id }}
@@ -53,14 +61,24 @@ jobs:
mkdir chat-server-source
cp -r src/ Makefile .clang-format README.md chat-server-source/ || true
tar -czv --owner=0 --group=0 --no-same-owner --no-same-permissions -f chat-server-source.tar.gz chat-server-source/
+ sha256sum chat-server-source.tar.gz > chat-server-source.tar.gz.sha256
rm -rf chat-server-source
- - name: Prepare Binary Archive
+ - name: Prepare Linux Binary Archive
+ run: |
+ cd artifacts/linux
+ chmod +x chat-server
+ tar -czv --owner=0 --group=0 --no-same-owner --no-same-permissions -f ../../chat-server-linux-x86_64.tar.gz *
+ cd ../..
+ sha256sum chat-server-linux-x86_64.tar.gz > chat-server-linux-x86_64.tar.gz.sha256
+
+ - name: Prepare macOS Binary Archive
run: |
- cd artifacts
+ cd artifacts/macos
chmod +x chat-server
- tar -czv --owner=0 --group=0 --no-same-owner --no-same-permissions -f ../chat-server-linux-x86_64.tar.gz *
- cd ..
+ tar -czv --owner=0 --group=0 --no-same-owner --no-same-permissions -f ../../chat-server-macos-x86_64.tar.gz *
+ cd ../..
+ sha256sum chat-server-macos-x86_64.tar.gz > chat-server-macos-x86_64.tar.gz.sha256
- name: Release
uses: softprops/action-gh-release@v2
@@ -71,6 +89,10 @@ jobs:
target_commitish: ${{ github.sha }}
files: |
chat-server-source.tar.gz
+ chat-server-source.tar.gz.sha256
chat-server-linux-x86_64.tar.gz
+ chat-server-linux-x86_64.tar.gz.sha256
+ chat-server-macos-x86_64.tar.gz
+ chat-server-macos-x86_64.tar.gz.sha256
token: ${{ secrets.GITHUB_TOKEN }}