Skip to content

chore(ci): check file type for linux #50

chore(ci): check file type for linux

chore(ci): check file type for linux #50

Workflow file for this run

name: CI
on:
workflow_dispatch:
pull_request:
push:
branches:
- main
tags:
- v*
jobs:
build-linux:
strategy:
matrix:
platform:
- name: x86_64
target: amd64
runs-on: ubuntu-latest
- name: aarch64
target: arm64
runs-on: [self-hosted, linux, ARM64]
runs-on: ${{ matrix.platform.runs-on }}
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
# - name: Cache Docker layers
# uses: actions/cache@v2
# with:
# path: /tmp/.buildx-cache
# key:
# "${{ runner.os }}-buildx-${{ matrix.platform.name }}-${{ github.sha
# }}"
# restore-keys: |
# ${{ runner.os }}-buildx-${{ matrix.platform.name }}
- name: Login to GitHub Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build in Docker ${{ matrix.platform.name }}
uses: docker/build-push-action@v3
with:
context: .
file: ./Dockerfile
platforms: linux/${{ matrix.platform.target }}
push: false
load: true
# TODO: set :latest and versioned tag, on new version
# should I even bother pushing?
# ovyerus/bandsnatch:nightly
tags: |
ghcr.io/ovyerus/bandsnatch:nightly
# cache-from: type=local,src=/tmp/.buildx-cache
# cache-to: type=local,dest=/tmp/.buildx-cache
- name: Extract binaries
run: |
id=$(docker create --platform=linux/${{ matrix.platform.target }} ghcr.io/ovyerus/bandsnatch:nightly)
docker cp $id:/bs/bandsnatch - > ./bandsnatch
docker rm -v $id
file ./bandsnatch
- name: Upload ${{ matrix.platform.name }}
uses: actions/upload-artifact@v2
with:
name: bandsnatch-linux-${{ matrix.platform.name }}
path: ./bandsnatch
build-macos:
runs-on: macos-11
strategy:
matrix:
target:
- x86_64
- aarch64
steps:
- uses: actions/checkout@v2
- name: Install target
uses: actions-rs/toolchain@v1
with:
toolchain: stable-apple-darwin
target: ${{ matrix.target }}-apple-darwin
override: true
profile: minimal
- uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.target }}
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
args: --release --target ${{ matrix.target }}-apple-darwin
- uses: actions/upload-artifact@v2
with:
name: bandsnatch-macos-${{ matrix.target }}
path: "target/${{ matrix.target }}-apple-darwin/release/bandsnatch"
build-windows:
runs-on: windows-2022
steps:
- uses: actions/checkout@v2
- name: Install target
uses: actions-rs/toolchain@v1
with:
toolchain: stable-x86_64-pc-windows-msvc
target: x86_64-pc-windows-msvc
override: true
profile: minimal
- uses: Swatinem/rust-cache@v2
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
args: --release --target x86_64-pc-windows-msvc
- uses: actions/upload-artifact@v2
with:
name: "bandsnatch-windows-x86_64"
path: "target/x86_64-pc-windows-msvc/release/bandsnatch.exe"
# TODO: clippy lints & rustfmt
create-release:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
needs:
- build-linux
- build-macos
- build-windows
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
- name: Rename files
run: |
mkdir out && cd out
declare -a arr=(
"windows-x86_64"
"macos-x86_64"
"macos-aarch64"
"linux-x86_64"
"linux-aarch64"
)
ls ../bandsnatch-linux-x86_64
ls ../bandsnatch-linux-aarch64
for target in "${arr[@]}"
do
if [[ "$target" == *windows* ]]; then
src="../bandsnatch-$target/bandsnatch.exe"
filename="bandsnatch-$target.exe"
else
src="../bandsnatch-$target/bandsnatch"
filename="bandsnatch-$target"
fi
cp $src $filename
sha256sum "$filename" >> "checksums.txt"
done
- name: Create draft release
uses: softprops/action-gh-release@v1
with:
body: Update the description for the release!
draft: true
files: ./out/*
- name: Update Homebrew tap
uses: mislav/bump-homebrew-formula-action@v2
with:
formula-name: bandsnatch
homebrew-tap: Ovyerus/homebrew-tap
env:
COMMITTER_TOKEN: ${{ secrets.TAP_COMMITTER_TOKEN }}