diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-03-22 19:50:58 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-03-22 21:02:29 +0800 |
| commit | c98642129974de37ec5b46f4b7f52ba71e70dd46 (patch) | |
| tree | a6d02f9b61e7725066c9891700d87d7c1190b8a7 /.github/workflows | |
| parent | 0a649085a291fe96ab2a60ce8295f106506da585 (diff) | |
ci(release): multi platform support
Diffstat (limited to '.github/workflows')
| -rw-r--r-- | .github/workflows/ci.yml | 47 | ||||
| -rw-r--r-- | .github/workflows/release-tip.yml | 36 |
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 }} |
