Skip to content

github action: closer #26

github action: closer

github action: closer #26

Workflow file for this run

name: Release rindexer
on:
push:
branches:
- 'release/**'
jobs:
build:
if: github.event_name == 'push' && github.actor != 'github-actions[bot]'
name: ${{ matrix.target }} (${{ matrix.runner }})
runs-on: ${{ matrix.runner }}
timeout-minutes: 240
strategy:
fail-fast: false
matrix:
include:
- runner: ubuntu-latest
target: x86_64-unknown-linux-gnu
platform: linux
arch: amd64
# - runner: ubuntu-latest
# target: aarch64-unknown-linux-gnu
# platform: linux
# arch: arm64
# - runner: macos-12
# target: x86_64-apple-darwin
# platform: darwin
# arch: amd64
# - runner: macos-12
# target: aarch64-apple-darwin
# platform: darwin
# arch: arm64
# - runner: windows-latest
# target: x86_64-pc-windows-msvc
# platform: win32
# arch: amd64
env:
# Set this to "debug" or "release" based on the build type
BUILD_TYPE: release
steps:
- uses: actions/checkout@v2
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.target }}
cache-on-failure: true
- name: Apple M1 setup
if: matrix.target == 'aarch64-apple-darwin'
run: |
echo "SDKROOT=$(xcrun -sdk macosx --show-sdk-path)" >> $GITHUB_ENV
echo "MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx --show-sdk-platform-version)" >> $GITHUB_ENV
- name: Linux ARM setup
if: matrix.target == 'aarch64-unknown-linux-gnu'
run: |
sudo apt-get update -y
sudo apt-get install -y gcc-aarch64-linux-gnu
echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV
- name: Install MSVC target
if: matrix.target == 'x86_64-pc-windows-msvc'
run: rustup target add x86_64-pc-windows-msvc
- name: Build binaries
working-directory: cli
env:
RUSTFLAGS: '-C target-cpu=native'
shell: bash
run: |
set -eo pipefail
target="${{ matrix.target }}"
flags=()
if [[ "$target" != *msvc* && "$target" != "aarch64-unknown-linux-gnu" ]]; then
flags+=(--features jemalloc)
fi
[[ "$target" == *windows* ]] && exe=".exe"
if [[ "${{ env.BUILD_TYPE }}" == "release" ]]; then
cargo build --release --target "$target" "${flags[@]}"
else
cargo build --target "$target" "${flags[@]}"
fi
- name: Archive binaries
working-directory: cli
id: artifacts
env:
PLATFORM_NAME: ${{ matrix.platform }}
TARGET: ${{ matrix.target }}
ARCH: ${{ matrix.arch }}
VERSION_NAME: ${{ github.ref_name }}
shell: bash
run: |
RELEASE_DIR="${{ github.workspace }}/documentation/docs/public/releases"
VERSION_DIR="$RELEASE_DIR/${{ github.ref_name }}"
mkdir -p "$RELEASE_DIR"
mkdir -p "$VERSION_DIR"
BUILD_DIR="./target/${TARGET}/${{ env.BUILD_TYPE }}"
BINARY_NAME="rindexer_cli"
FILE_NAME="rindexer_${PLATFORM_NAME}_${ARCH}.tar.gz"
if [ "$PLATFORM_NAME" == "linux" ]; then
tar -czvf "$RELEASE_DIR/$FILE_NAME" -C "$BUILD_DIR" "$BINARY_NAME"
tar -czvf "$VERSION_DIR/$FILE_NAME" -C "$BUILD_DIR" "$BINARY_NAME"
cp "$BUILD_DIR/$BINARY_NAME" "$VERSION_DIR/"
echo "file_name=$FILE_NAME" >> $GITHUB_OUTPUT
elif [ "$PLATFORM_NAME" == "darwin" ]; then
tar -czvf "$RELEASE_DIR/$FILE_NAME" -C "$BUILD_DIR" "$BINARY_NAME"
tar -czvf "$VERSION_DIR/$FILE_NAME" -C "$BUILD_DIR" "$BINARY_NAME"
cp "$BUILD_DIR/$BINARY_NAME" "$VERSION_DIR/"
echo "file_name=$FILE_NAME" >> $GITHUB_OUTPUT
else
cd $BUILD_DIR
7z a -tzip "$RELEASE_DIR/${PLATFORM_NAME}_${ARCH}.zip" "$BINARY_NAME"
7z a -tzip "$VERSION_DIR/${PLATFORM_NAME}_${ARCH}.zip" "$BINARY_NAME"
cp "$BINARY_NAME" "$VERSION_DIR/"
echo "file_name=rindexer_${PLATFORM_NAME}_${ARCH}.zip" >> $GITHUB_OUTPUT
fi
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.platform }}-${{ matrix.arch }}
path: ${{ github.workspace }}/documentation/docs/public/releases
finalize:
name: Commit and push changes
runs-on: ubuntu-latest
needs: build
if: github.actor != 'github-actions[bot]'
steps:
- uses: actions/checkout@v2
- name: Download artifacts
uses: actions/download-artifact@v2
with:
path: ${{ github.workspace }}/documentation/docs/public/releases
- name: Commit and push changes
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git config --global user.name "github-actions"
git config --global user.email "[email protected]"
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
git add documentation/docs/public/releases
git commit -m "Add release binaries for ${{ github.ref_name }}"
git push origin HEAD:refs/heads/release/${{ github.ref_name }}
- name: Create or update pull request
uses: peter-evans/create-pull-request@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: "Add binaries for ${{ github.ref_name }}"
branch: "release/${{ github.ref_name }}"
base: master
title: "Release ${{ github.ref_name }}"
body: "This PR merges the release binaries for ${{ github.ref_name }} into master and triggers a deploy."
update-existing-pr: true