Skip to content

Release

Release #3

Workflow file for this run

name: Release
on:
workflow_dispatch:
inputs:
lapon_version:
description: "Lapon version for release"
required: true
push:
tags:
- "v*"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
linux:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Update toolchain
run: |
rustup update
- name: Install ARM target
run: rustup target add aarch64-unknown-linux-gnu
- name: Install ARM gcc
run: sudo apt install -y gcc-aarch64-linux-gnu
- name: Fetch dependencies
run: cargo fetch --locked
- name: Build lapon
run: |
RUSTFLAGS="-C linker=aarch64-linux-gnu-gcc" cargo build -p lapon --release --locked --target aarch64-unknown-linux-gnu
cargo build -p lapon --release --locked --target x86_64-unknown-linux-gnu
- name: Build lapon-node
run: |
RUSTFLAGS="-C linker=aarch64-linux-gnu-gcc" cargo build -p lapon-node --release --locked --target aarch64-unknown-linux-gnu
cargo build -p lapon-node --release --locked --target x86_64-unknown-linux-gnu
- name: Build lapon-lsp
run: |
RUSTFLAGS="-C linker=aarch64-linux-gnu-gcc" cargo build -p lapon-lsp --release --locked --target aarch64-unknown-linux-gnu
cargo build -p lapon-lsp --release --locked --target x86_64-unknown-linux-gnu
- name: Gzip
run: |
gzip -c ./target/x86_64-unknown-linux-gnu/release/lapon > ./lapon-${{ github.event.inputs.lapon_version }}-linux-amd64.gz
gzip -c ./target/aarch64-unknown-linux-gnu/release/lapon > ./lapon-${{ github.event.inputs.lapon_version }}-linux-arm64.gz
gzip -c ./target/x86_64-unknown-linux-gnu/release/lapon-node > ./lapon-node-${{ github.event.inputs.lapon_version }}-linux-amd64.gz
gzip -c ./target/aarch64-unknown-linux-gnu/release/lapon-node > ./lapon-node-${{ github.event.inputs.lapon_version }}-linux-arm64.gz
gzip -c ./target/x86_64-unknown-linux-gnu/release/lapon-lsp > ./lapon-lsp-${{ github.event.inputs.lapon_version }}-linux-amd64.gz
gzip -c ./target/aarch64-unknown-linux-gnu/release/lapon-lsp > ./lapon-lsp-${{ github.event.inputs.lapon_version }}-linux-arm64.gz
- uses: actions/upload-artifact@v4
with:
name: lapon-linux
path: |
./lapon-${{ github.event.inputs.lapon_version }}-linux-amd64.gz
./lapon-${{ github.event.inputs.lapon_version }}-linux-arm64.gz
./lapon-node-${{ github.event.inputs.lapon_version }}-linux-amd64.gz
./lapon-node-${{ github.event.inputs.lapon_version }}-linux-arm64.gz
./lapon-lsp-${{ github.event.inputs.lapon_version }}-linux-amd64.gz
./lapon-lsp-${{ github.event.inputs.lapon_version }}-linux-arm64.gz
retention-days: 1
macos:
runs-on: macos-11
steps:
- uses: actions/checkout@v4
- name: Install ARM target
run: rustup update && rustup target add aarch64-apple-darwin
- name: Import Certificate
uses: lapce/import-codesign-certs@72dec84923586f8bef2bed09fdb4f9475c8f623d # use updated action, can be dropped once/if upstream is fixed
with:
p12-file-base64: ${{ secrets.MACOS_CERTIFICATE }}
p12-password: ${{ secrets.MACOS_CERTIFICATE_PWD }}
- name: Fetch dependencies
run: cargo fetch --locked
- name: Build lapon
run: |
cargo build -p lapon --release --locked --target aarch64-apple-darwin
cargo build -p lapon --release --locked --target x86_64-apple-darwin
- name: Build lapon-node
run: |
cargo build -p lapon-node --release --locked --target aarch64-apple-darwin
cargo build -p lapon-node --release --locked --target x86_64-apple-darwin
- name: Build lapon-lsp
run: |
cargo build -p lapon-lsp --release --locked --target aarch64-apple-darwin
cargo build -p lapon-lsp --release --locked --target x86_64-apple-darwin
- name: codesign
run: |
/usr/bin/codesign -vvv --deep --strict --options=runtime --force -s ADD049AE64FD743A8E91A47525EFED47153971CB ./target/x86_64-apple-darwin/release/lapon
/usr/bin/codesign -vvv --deep --strict --options=runtime --force -s ADD049AE64FD743A8E91A47525EFED47153971CB ./target/aarch64-apple-darwin/release/lapon
/usr/bin/codesign -vvv --deep --strict --options=runtime --force -s ADD049AE64FD743A8E91A47525EFED47153971CB ./target/x86_64-apple-darwin/release/lapon-node
/usr/bin/codesign -vvv --deep --strict --options=runtime --force -s ADD049AE64FD743A8E91A47525EFED47153971CB ./target/aarch64-apple-darwin/release/lapon-node
/usr/bin/codesign -vvv --deep --strict --options=runtime --force -s ADD049AE64FD743A8E91A47525EFED47153971CB ./target/x86_64-apple-darwin/release/lapon-lsp
/usr/bin/codesign -vvv --deep --strict --options=runtime --force -s ADD049AE64FD743A8E91A47525EFED47153971CB ./target/aarch64-apple-darwin/release/lapon-lsp
- name: Notarize Release Build
uses: lando/notarize-action@v2
with:
product-path: "./target/x86_64-apple-darwin/release/lapon"
appstore-connect-username: ${{ secrets.NOTARIZE_USERNAME }}
appstore-connect-password: ${{ secrets.NOTARIZE_PASSWORD }}
appstore-connect-team-id: CYSGAZFR8D
primary-bundle-id: "io.lapon"
- name: Notarize Release Build
uses: lando/notarize-action@v2
with:
product-path: "./target/aarch64-apple-darwin/release/lapon"
appstore-connect-username: ${{ secrets.NOTARIZE_USERNAME }}
appstore-connect-password: ${{ secrets.NOTARIZE_PASSWORD }}
appstore-connect-team-id: CYSGAZFR8D
primary-bundle-id: "io.lapon"
- name: Gzip
run: |
gzip -c ./target/x86_64-apple-darwin/release/lapon > ./lapon-${{ github.event.inputs.lapon_version }}-darwin-amd64.gz
gzip -c ./target/aarch64-apple-darwin/release/lapon > ./lapon-${{ github.event.inputs.lapon_version }}-darwin-arm64.gz
gzip -c ./target/x86_64-apple-darwin/release/lapon-node > ./lapon-node-${{ github.event.inputs.lapon_version }}-darwin-amd64.gz
gzip -c ./target/aarch64-apple-darwin/release/lapon-node > ./lapon-node-${{ github.event.inputs.lapon_version }}-darwin-arm64.gz
gzip -c ./target/x86_64-apple-darwin/release/lapon-lsp > ./lapon-lsp-${{ github.event.inputs.lapon_version }}-darwin-amd64.gz
gzip -c ./target/aarch64-apple-darwin/release/lapon-lsp > ./lapon-lsp-${{ github.event.inputs.lapon_version }}-darwin-arm64.gz
- uses: actions/upload-artifact@v4
with:
name: lapon-macos
path: |
./lapon-${{ github.event.inputs.lapon_version }}-darwin-amd64.gz
./lapon-${{ github.event.inputs.lapon_version }}-darwin-arm64.gz
./lapon-node-${{ github.event.inputs.lapon_version }}-darwin-amd64.gz
./lapon-node-${{ github.event.inputs.lapon_version }}-darwin-arm64.gz
./lapon-lsp-${{ github.event.inputs.lapon_version }}-darwin-amd64.gz
./lapon-lsp-${{ github.event.inputs.lapon_version }}-darwin-arm64.gz
retention-days: 1
windows:
runs-on: windows-latest
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v4
- name: Update rust
run: rustup update && rustup target add aarch64-pc-windows-msvc
- name: Fetch dependencies
run: cargo fetch --locked
- name: Build lapon
run: |
cargo build -p lapon --release --locked --target aarch64-pc-windows-msvc
cargo build -p lapon --release --locked --target x86_64-pc-windows-msvc
- name: Build lapon-node
run: |
cargo build -p lapon-node --release --locked --target aarch64-pc-windows-msvc
cargo build -p lapon-node --release --locked --target x86_64-pc-windows-msvc
- name: Build lapon-lsp
run: |
cargo build -p lapon-lsp --release --locked --target aarch64-pc-windows-msvc
cargo build -p lapon-lsp --release --locked --target x86_64-pc-windows-msvc
- name: Gzip
run: |
gzip -c ./target/x86_64-pc-windows-msvc/release/lapon > ./lapon-${{ github.event.inputs.lapon_version }}-windows-amd64.gz
gzip -c ./target/aarch64-pc-windows-msvc/release/lapon > ./lapon-${{ github.event.inputs.lapon_version }}-windows-arm64.gz
gzip -c ./target/x86_64-pc-windows-msvc/release/lapon-node > ./lapon-node-${{ github.event.inputs.lapon_version }}-windows-amd64.gz
gzip -c ./target/aarch64-pc-windows-msvc/release/lapon-node > ./lapon-node-${{ github.event.inputs.lapon_version }}-windows-arm64.gz
gzip -c ./target/x86_64-pc-windows-msvc/release/lapon-lsp > ./lapon-lsp-${{ github.event.inputs.lapon_version }}-windows-amd64.gz
gzip -c ./target/aarch64-pc-windows-msvc/release/lapon-lsp > ./lapon-lsp-${{ github.event.inputs.lapon_version }}-windows-arm64.gz
- uses: actions/upload-artifact@v4
with:
name: lapon-windows
path: |
./lapon-${{ github.event.inputs.lapon_version }}-windows-amd64.gz
./lapon-${{ github.event.inputs.lapon_version }}-windows-arm64.gz
./lapon-node-${{ github.event.inputs.lapon_version }}-windows-amd64.gz
./lapon-node-${{ github.event.inputs.lapon_version }}-windows-arm64.gz
./lapon-lsp-${{ github.event.inputs.lapon_version }}-windows-amd64.gz
./lapon-lsp-${{ github.event.inputs.lapon_version }}-windows-arm64.gz
retention-days: 1
publish:
runs-on: ubuntu-latest
needs:
- linux
- macos
- windows
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPO: ${{ github.repository }}
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
- if: github.event_name == 'workflow_dispatch'
run: echo "TAG_NAME=v${{ github.event.inputs.lapon_version }}" >> $GITHUB_ENV
- name: Publish release
if: github.event_name != 'pull_request'
run: |
gh release create $TAG_NAME --title "$TAG_NAME" --target $GITHUB_SHA \
lapon-linux/* \
lapon-macos/* \
lapon-windows/* \