Skip to content

Move local-server to package (#82) #74

Move local-server to package (#82)

Move local-server to package (#82) #74

Workflow file for this run

name: Create Release
on:
push:
branches:
- main
paths:
- "linkup-cli/Cargo.toml"
jobs:
build:
name: Build
runs-on: ${{matrix.os}}
strategy:
matrix:
include:
- build: linux
os: ubuntu-latest
rust: stable
target: x86_64-unknown-linux-gnu
cross: false
- build: aarch64
os: ubuntu-latest
rust: stable
target: aarch64-unknown-linux-gnu
linker: gcc-aarch64-linux-gnu
cross: true
- build: macos
os: macos-latest
rust: stable
target: x86_64-apple-darwin
cross: false
- build: macos-aarch64
os: macos-latest
rust: stable
target: aarch64-apple-darwin
cross: false
outputs:
mac_x86_sha: ${{ steps.x86_sha.outputs.mac_x86_sha }}
release_version: ${{ steps.x86_sha.outputs.release_version }}
mac_arm_sha: ${{ steps.arm_sha.outputs.mac_arm_sha }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install Linker
if: matrix.cross
run: |
cargo install cross
sudo apt update
sudo apt install -y ${{ matrix.linker }}
cat .cargo/config.github >> .cargo/config
- name: Install Rust
run: |
rustup install ${{ matrix.rust }}
rustup target add ${{ matrix.target }}
rustup show
- name: Build
run: cargo build --release --manifest-path linkup-cli/Cargo.toml --target ${{ matrix.target }}
- name: Get Version from Cargo.toml
id: get_version
run: |
VERSION=$(grep '^version = ' linkup-cli/Cargo.toml | sed -E 's/version = "(.*)"/\1/')
echo "RELEASE_VERSION=$VERSION" >> $GITHUB_ENV
- name: Package Artifacts
run: |
src=$(pwd)
stage=
case $RUNNER_OS in
Linux)
stage=$(mktemp -d)
;;
macOS)
stage=$(mktemp -d -t tmp)
;;
esac
cp target/${{ matrix.target }}/release/linkup $stage/
cd $stage
# Use the version from the environment variable
RELEASE_VERSION=${{ env.RELEASE_VERSION }}
ASSET_NAME="linkup-$RELEASE_VERSION-${{ matrix.target }}.tar.gz"
ASSET_PATH="$src/$ASSET_NAME"
CHECKSUM_PATH="$ASSET_PATH.sha256"
echo "ASSET_PATH=$ASSET_PATH" >> $GITHUB_ENV
echo "CHECKSUM_PATH=$CHECKSUM_PATH" >> $GITHUB_ENV
tar czf $ASSET_PATH *
cd $src
case $RUNNER_OS in
Linux)
sha256sum $ASSET_NAME > $CHECKSUM_PATH
;;
macOS)
shasum -a 256 $ASSET_NAME > $CHECKSUM_PATH
;;
esac
- name: Set SHA Output Mac x86
id: x86_sha
if: matrix.target == 'x86_64-apple-darwin'
run: |
echo "$(cat ${{ env.CHECKSUM_PATH }})"
echo ${{ env.RELEASE_VERSION }}
echo "mac_x86_sha=$(cat ${{ env.CHECKSUM_PATH }})" >> $GITHUB_OUTPUT
echo "release_version=${{ env.RELEASE_VERSION }}" >> $GITHUB_OUTPUT
- name: Set SHA Outputs Mac ARM
id: arm_sha
if: matrix.target == 'aarch64-apple-darwin'
run: |
echo "$(cat ${{ env.CHECKSUM_PATH }})"
echo "mac_arm_sha=$(cat ${{ env.CHECKSUM_PATH }})" >> $GITHUB_OUTPUT
- name: Release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ env.RELEASE_VERSION }}
files: |
${{ env.ASSET_PATH }}
${{ env.CHECKSUM_PATH }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
update_homebrew_formula:
needs: [build]
runs-on: ubuntu-latest
steps:
- name: Checkout Homebrew Tap Repository
run: git clone https://github.com/mentimeter/homebrew-mentimeter.git
- name: Update Homebrew Formula
run: |
ARM_SHA=$(echo "${{ needs.build.outputs.mac_arm_sha }}" | awk '{print $1}')
X86_SHA=$(echo "${{ needs.build.outputs.mac_x86_sha }}" | awk '{print $1}')
RELEASE_VERSION="${{ needs.build.outputs.release_version }}"
FORMULA_PATH="homebrew-mentimeter/linkup.rb"
# Update the SHA values
sed -i "s|ARM_SHA = \".*\"|ARM_SHA = \"$ARM_SHA\"|" "$FORMULA_PATH"
sed -i "s|X86_SHA = \".*\"|X86_SHA = \"$X86_SHA\"|" "$FORMULA_PATH"
# Update the URLs with the new release version
sed -i "s|https://github.com/mentimeter/linkup/releases/download/[0-9.]*/linkup-[0-9.]*-aarch64-apple-darwin.tar.gz|https://github.com/mentimeter/linkup/releases/download/$RELEASE_VERSION/linkup-$RELEASE_VERSION-aarch64-apple-darwin.tar.gz|" "$FORMULA_PATH"
sed -i "s|https://github.com/mentimeter/linkup/releases/download/[0-9.]*/linkup-[0-9.]*-x86_64-apple-darwin.tar.gz|https://github.com/mentimeter/linkup/releases/download/$RELEASE_VERSION/linkup-$RELEASE_VERSION-x86_64-apple-darwin.tar.gz|" "$FORMULA_PATH"
cd homebrew-mentimeter
git remote set-url origin https://x-access-token:${COMMIT_TOKEN}@github.com/mentimeter/homebrew-mentimeter.git
git config --global user.name "mentibot"
git config --global user.email "[email protected]"
git add linkup.rb
git commit -m "Update Linkup formula to $RELEASE_VERSION"
git push origin HEAD:main
env:
COMMIT_TOKEN: ${{ secrets.COMMIT_TOKEN }}