feat: add interface management daemon service #146
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 'Build' | |
on: | |
push: | |
branches: | |
- main | |
- dev | |
pull_request: | |
branches: | |
- main | |
- dev | |
jobs: | |
build-wireguard-go: | |
runs-on: [self-hosted, macOS] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: WireGuard/wireguard-go | |
ref: master | |
fetch-depth: 0 | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: '1.20' | |
- name: Build wireguard-go binary | |
run: make | |
- name: Upload binary artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wireguard-go | |
path: wireguard-go | |
build: | |
needs: build-wireguard-go | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [Linux] | |
runs-on: | |
- self-hosted | |
- ${{ matrix.platform }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: '20' | |
- uses: pnpm/action-setup@v2 | |
with: | |
version: 8 | |
run_install: false | |
- name: Get pnpm store directory | |
shell: bash | |
run: | | |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV | |
- uses: actions/cache@v3 | |
name: Setup pnpm cache | |
with: | |
path: ${{ env.STORE_PATH }} | |
key: ${{ runner.os }}-pnpm-build-store-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-build-store- | |
- name: Install deps | |
run: pnpm install --frozen-lockfile | |
- uses: dtolnay/rust-toolchain@stable | |
- name: install linux deps | |
if: matrix.platform == 'Linux' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf libssl-dev unzip | |
- name: install protobuf compiler | |
if: matrix.platform == 'Linux' | |
run: | | |
PB_REL='https://github.com/protocolbuffers/protobuf/releases' | |
PB_VERSION='3.20.0' && curl -LO $PB_REL/download/v$PB_VERSION/protoc-$PB_VERSION-linux-x86_64.zip | |
unzip protoc-$PB_VERSION-linux-x86_64.zip bin/protoc include/google/* -d /usr | |
- name: Download wireguard-go binary | |
if: matrix.platform == 'macOS' | |
uses: actions/download-artifact@v3 | |
with: | |
name: wireguard-go | |
path: src-tauri/binaries/wireguard-go-x86_64-apple-darwin | |
- name: Build packages | |
uses: tauri-apps/tauri-action@v0 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Make sure wireguard-go binary is executable | |
if: matrix.platform == 'macOS' | |
run: chmod +x src-tauri/target/release/bundle/macos/Defguard.app/Contents/MacOS/wireguard-go | |
- name: Tar macOS files | |
if: matrix.platform == 'macOS' | |
run: tar -cvf bundle.tar -C src-tauri/target/release/bundle . | |
- name: Upload macOS artifacts | |
if: matrix.platform == 'macOS' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: macos.tar | |
path: bundle.tar | |
retention-days: 1 | |
- name: Tar Linux files | |
if: matrix.platform == 'Linux' | |
run: find 'src-tauri/target/release/bundle' -name '*.AppImage' -printf '%P\0' -o -name '*.deb' -printf '%P\0' | tar --null -C 'src-tauri/target/release/bundle' -cvf bundle.tar --files-from=- | |
- name: Upload Linux artifacts | |
if: matrix.platform == 'Linux' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: linux.tar | |
path: bundle.tar | |
retention-days: 1 | |
- name: Tar service binary | |
if: matrix.platform == 'Linux' | |
run: tar -cvf service.tar 'src-tauri/target/release/defguard-service' | |
- name: Upload service binary | |
if: matrix.platform == 'Linux' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: service.tar | |
path: service.tar | |
retention-days: 1 |