2025-02-22 02:58:40 -05:00
name : Release
on :
workflow_dispatch :
jobs :
2025-02-22 03:46:59 -05:00
create_release :
runs-on : ubuntu-latest
steps :
- name : Checkout repository code
uses : actions/checkout@v3
2025-02-22 04:30:28 -05:00
- name : CargoVersionBump
# You may pin to the exact commit or the version.
# uses: bp3d-actions/cargo-version@c67ad4bfe18e7bd64ef90277fa4f86ae3fcaec3e
uses : bp3d-actions/cargo-version@0.0.2
with :
# get to return current crate name and version, set to check and apply the new provided version if it is greater than the current one
mode : get
# name of the release branch
release-branch : master
# set to true if the repository has multiple Cargo crates, in which case multiple /version can be used, each with the directory name as second argument
multi : false
# the GitHub Actions token
token : ${{ secrets.DAMIEN_TOKEN }}
# working directory of Cargo.toml
cwd : ./src-tauri/
2025-02-22 04:33:20 -05:00
- uses : colt-1/crate-version@2.0.0
2025-02-22 04:31:09 -05:00
with :
# The relative path of toml file
file : ./src-tauri/Cargo.toml
2025-02-22 03:46:59 -05:00
- name : Create Release
id : create_release
uses : actions/create-release@v1
env :
GITHUB_TOKEN : ${{ secrets.DAMIEN_TOKEN }}
with :
2025-02-22 04:31:09 -05:00
tag_name : ${{ steps.crate-version.outputs.version }}
release_name : Release ${{ steps.crate-version.outputs.version }}
2025-02-22 03:46:59 -05:00
draft : false
prerelease : false
outputs :
upload_url : ${{ steps.create_release.outputs.upload_url }}
2025-02-22 02:58:40 -05:00
build :
2025-02-22 03:46:59 -05:00
needs : create_release
2025-02-22 02:58:40 -05:00
strategy :
fail-fast : true
matrix :
os : [ ubuntu-latest, macos-latest, windows-latest]
runs-on : ${{ matrix.os }}
steps :
- name : Checkout repository code
uses : actions/checkout@v3
# Cache Rust
- uses : actions/cache@v3
with :
path : ./src-tauri/target
key : ${{matrix.os}}-${{ hashFiles('./src-tauri/Cargo.lock') }}
- uses : actions/cache@v3
with :
path : ~/.cargo
key : ${{matrix.os}}-${{ hashFiles('./src-tauri/Cargo.lock') }}
# Cache Node
- uses : actions/cache@v3
with :
path : ./node_modules
key : ${{matrix.os}}-${{ hashFiles('./package-lock.json') }}
# Cache Next.js
- uses : actions/cache@v3
with :
path : ./src-next/.next
key : ${{matrix.os}}
- name : Install Node.js v20 LTS
uses : actions/setup-node@v3
with :
node-version : 22
- name : Install Rust with Clippy
uses : dtolnay/rust-toolchain@stable
with :
components : rustfmt, clippy
- name : Install Tauri dependencies
if : matrix.os == 'ubuntu-latest'
run : |
sudo apt-get update
sudo apt install --reinstall ca-certificates
sudo update-ca-certificates -f
sudo apt-get install javascriptcoregtk-4.1 libsoup-3.0 webkit2gtk-4.1 libayatana-appindicator3-dev librsvg2-dev -y
- name : Install node dependencies
run : npm install
2025-02-22 04:22:13 -05:00
2025-02-22 04:30:28 -05:00
2025-02-22 04:33:20 -05:00
- uses : colt-1/crate-version@2.0.0
2025-02-22 04:22:13 -05:00
with :
2025-02-22 04:30:28 -05:00
# The relative path of toml file
file : ./src-tauri/Cargo.toml
2025-02-22 04:22:13 -05:00
2025-02-22 02:58:40 -05:00
- name : Build application
run : npm run tauri build
2025-02-22 03:43:21 -05:00
- name : Zip release bundle
run : |
2025-02-22 03:46:59 -05:00
zip -r release_${{ matrix.os }}.zip ./src-tauri/target/release/bundle/
2025-02-22 02:58:40 -05:00
- name : Upload Release Assets
uses : actions/upload-release-asset@v1
env :
2025-02-22 03:18:34 -05:00
GITHUB_TOKEN : ${{ secrets.DAMIEN_TOKEN }}
2025-02-22 02:58:40 -05:00
with :
2025-02-22 03:46:59 -05:00
upload_url : ${{ needs.create_release.outputs.upload_url }}
asset_path : ./release_${{ matrix.os }}.zip
2025-02-22 04:30:28 -05:00
asset_name : file_tree_${{ steps.crate-version.outputs.version }}_${{ matrix.os }}.zip
2025-02-22 02:58:40 -05:00
asset_content_type : application/zip