Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
svenrademakers committed Nov 3, 2024
1 parent f9a5d58 commit 327011a
Show file tree
Hide file tree
Showing 6 changed files with 183 additions and 168 deletions.
120 changes: 37 additions & 83 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
name: Tpi tool CI
name: Tpi Validation Pipeline
on: [push]
jobs:
clippy_check:

cargo-clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
Expand All @@ -10,99 +11,52 @@ jobs:
with:
token: '${{ secrets.GITHUB_TOKEN }}'
args: '--all-features'
cargo-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
profile: minimal
- uses: actions-rs/cargo@v1
with:
command: test

cargo-deny:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: EmbarkStudios/cargo-deny-action@v1
with:
command: check bans licenses sources
target-pipeline:
name: "${{ matrix.target }}"
strategy:
matrix:
target:
- aarch64-unknown-linux-gnu
- aarch64-apple-darwin
- x86_64-apple-darwin
- x86_64-pc-windows-msvc
- x86_64-unknown-linux-gnu
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-22.04
- target: aarch64-unknown-linux-gnu
os: ubuntu-22.04
cross: true
- target: aarch64-apple-darwin
os: macos-13
- target: x86_64-apple-darwin
os: macos-13
- target: x86_64-pc-windows-msvc
os: windows-2022
runs-on: '${{ matrix.os }}'

cargo-test:
runs-on: ubuntu-latest
needs: cargo-deny
steps:
- uses: actions/checkout@v3
- name: install toolchain
uses: actions-rs/toolchain@v1
with:
fetch-depth: 0
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
profile: minimal
target: '${{ matrix.target }}'
- name: build
uses: actions-rs/cargo@v1
with:
command: build
args: '--release --locked --target=${{ matrix.target }}'
use-cross: ${{ matrix.cross }}
- name: archive
uses: actions/upload-artifact@v3
- uses: actions-rs/cargo@v1
with:
name: 'build output'
path: |
# workaround to prevent a common ancestor in the files,
# this way we can perserve the folder structure.
.github/workflows/build.yml
target/${{ matrix.target }}/release/tpi
target/${{ matrix.target }}/release/tpi.exe
target/${{ matrix.target }}/release/build/*/out/PKGBUILD
command: test
- name: Extract version from Cargo.toml
id: extract_version
run: |
VERSION=$(grep '^version = ' Cargo.toml | sed -E 's/version = "(.*)"/\1/')
echo "VERSION=$VERSION" >> $GITHUB_ENV
archive:
name: ${{ matrix.name }} packager
runs-on: ubuntu-latest
needs: target-pipeline
strategy:
matrix:
name:
- debian
- arch
- windows
- macos
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: 'build output'
- name: running archiver
run: scripts/ci/package.sh ${{ matrix.name }}
- name: archive packages
uses: actions/upload-artifact@v3
with:
name: '${{ matrix.name }} packages'
path: |
target/debian/*
target/arch/*
target/win/*
target/apple/*
- name: Check if tag exists
id: check_tag
run: |
git rev-parse v${VERSION}
if git rev-parse --verify v${VERSION} >/dev/null 2>&1; then
echo "TAG_EXISTS=true" >> $GITHUB_ENV
else
echo "TAG_EXISTS=false" >> $GITHUB_ENV
fi
- name: Create new tag
if: ${{ env.TAG_EXISTS == 'false' }}
run: |
git config --global user.name "${{ github.actor }}"
git config --global user.email "[email protected]"
git tag -a "v${{ env.VERSION }}" -m "Release version ${{ env.VERSION }}"
git push origin "v${{ env.VERSION }}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
95 changes: 95 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
name: Release Pipeline
on:
push:
branches:
- 'feature/ci'
tags:
- 'v[0-9]+.[0-9]+.[0-9]+'
jobs:

build-pipeline:
name: "Build ${{ matrix.target }}"
strategy:
matrix:
target:
- aarch64-unknown-linux-gnu
- aarch64-apple-darwin
- x86_64-apple-darwin
- x86_64-pc-windows-msvc
- x86_64-unknown-linux-gnu
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-22.04
- target: aarch64-unknown-linux-gnu
os: ubuntu-22.04
cross: true
- target: aarch64-apple-darwin
os: macos-13
- target: x86_64-apple-darwin
os: macos-13
- target: x86_64-pc-windows-msvc
os: windows-2022

runs-on: ${{ matrix.os }}
steps:
- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Install Toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
profile: minimal
target: ${{ matrix.target }}

- name: Build
uses: actions-rs/cargo@v1
with:
command: build
args: --release --locked --target=${{ matrix.target }}
use-cross: ${{ matrix.cross }}

- name: Create Unix Archive
if: ${{ !contains(matrix.target, 'windows') }}
run: |
tar -cvf tpi-${{ matrix.target }}.tar -C target/${{ matrix.target }}/release tpi
tar -rvf tpi-${{ matrix.target }}.tar LICENSE README.md
gzip tpi-${{ matrix.target }}.tar
- name: Upload Archive
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.target }}
path: |
tpi-${{ matrix.target }}.tar.gz
target/${{ matrix.target }}/release/tpi.exe
debian-packages:
runs-on: ubuntu-latest
needs: build-pipeline
steps:
- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/download-artifact@v4
with:
name: x86_64-unknown-linux-gnu
- name: Extract tar.gz file
run: |
mkdir tpi-x86_64-unknown-linux-gnu
tar -xf tpi-x86_64-unknown-linux-gnu.tar.gz -C tpi-x86_64-unknown-linux-gnu
rm -rf tpi-x86_64-unknown-linux-gnu.tar.gz
- name: Create DEBIAN Control File Directory
run: scripts/ci/create_debian_control.sh Cargo.toml amd64 tpi-x86_64-unknown-linux-gnu
- run: dpkg-deb --build tpi-x86_64-unknown-linux-gnu
- name: Upload Archive
uses: actions/upload-artifact@v4
with:
overwrite: true
name: x86_64-unknown-linux-gnu
path: |
tpi-x86_64-unknown-linux-gnu.deb
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name = "tpi"
version = "1.0.6"
edition = "2021"
license = "Apache-2.0"
authors = ["Sven Rademakers <[email protected]>", "Ruslan Akbashev <[email protected]>"]
authors = ["Sven Rademakers <[email protected]>"]
description = "Official Turing-Pi2 CLI tool"
homepage = "https://turingpi.com/"
repository = "https://github.com/turing-machines/tpi"
Expand Down
46 changes: 46 additions & 0 deletions scripts/ci/create_debian_control.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Copyright 2023 Turing Machines
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

#!/bin/bash
toml_file=${1}
arch=${2}
output_dir=${3:-$(pwd)}

if [ -z "$2" ]; then
echo "missing architecture argument" >&2
exit -1
fi

if [ ! -f "${toml_file}" ]; then
echo "provided toml file: ${toml_file}, does not exist" >&2
exit -1
fi

PACKAGE_NAME=$(grep '^name =' ${toml_file} | sed 's/name = "\(.*\)"/\1/')
VERSION=$(grep '^version =' ${toml_file} | sed 's/version = "\(.*\)"/\1/')
MAINTAINER=$(grep '^authors =' ${toml_file} | sed 's/authors = \[\s*"\(.*\)\s*"\]/\1/')
DESCRIPTION=$(grep '^description =' ${toml_file} | sed 's/description = "\(.*\)"/\1/')

mkdir -p ${output_dir}/DEBIAN/
cat <<EOL > "${output_dir}/DEBIAN/control"
Package: $PACKAGE_NAME
Version: $VERSION
Section: base
Priority: optional
Architecture: ${arch}
Maintainer: $MAINTAINER
Description: $DESCRIPTION
EOL

cp scripts/ci/install ${output_dir}/DEBIAN/
4 changes: 4 additions & 0 deletions scripts/ci/install
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
tpi /usr/bin/tpi
LICENSE /usr/share/doc/tpi/copyright
README.md /usr/share/doc/tpi/README.md

84 changes: 0 additions & 84 deletions scripts/ci/package.sh

This file was deleted.

0 comments on commit 327011a

Please sign in to comment.