Skip to content

Fix release job

Fix release job #49

Workflow file for this run

name: Create Release
on:
pull_request:
# push:
# branches:
# - main
# - oliver/test-release
# 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_arm_sha: ${{ steps.package_artifacts.outputs.mac_arm_sha }}
mac_x86_sha: ${{ steps.package_artifacts.outputs.mac_x86_sha }}
release_version: ${{ steps.get_version.outputs.release_version }}
steps:
- name: Checkout repository
uses: actions/checkout@v2
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 Outputs
if: matrix.target == 'x86_64-apple-darwin'
run: |
echo "$(cat $CHECKSUM_PATH)"
echo ${{ env.RELEASE_VERSION }}
echo "mac_x86_sha=$(cat $CHECKSUM_PATH)" >> $GITHUB_OUTPUT
echo "release_version=${{ env.RELEASE_VERSION }}" >> $GITHUB_OUTPUT
- name: Set SHA Outputs
if: matrix.target == 'aarch64-apple-darwin'
run: |
echo "$(cat $CHECKSUM_PATH)"
echo "mac_arm_sha=$(cat $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|linkup/releases/download/[^/]*/linkup-[^-]*-|linkup/releases/download/$RELEASE_VERSION/linkup-$RELEASE_VERSION-|" "$FORMULA_PATH"
cd homebrew-mentimeter
git config user.name "release-bot"
git config user.email "[email protected]"
git add linkup.rb
git commit -m "Update Linkup formula to $RELEASE_VERSION"
git push
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}