1
0
mirror of https://github.com/Morganamilo/paru synced 2024-07-01 05:54:19 +00:00

Rework the CI

This commit is contained in:
morganamilo 2023-10-09 02:17:19 +02:00
parent b32d17ecdc
commit 3a163b0312
8 changed files with 109 additions and 109 deletions

2
.dockerignore Normal file
View File

@ -0,0 +1,2 @@
target
paru.tar.*

View File

@ -4,115 +4,82 @@ on:
tags:
- v*
branches:
- release/*
- test-release/*
jobs:
get-version:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}
steps:
- id: version
run: echo "version=${ref##test-release/}" >> $GITHUB_OUTPUT
env:
ref: ${{ github.ref_name }}
build-releases:
name: Build release
runs-on: ubuntu-latest
strategy:
matrix:
arch:
[
"linux/amd64 x86_64",
"linux/arm64/v8 aarch64",
"linux/arm/v7 armv7h"
]
name: Build ${{ matrix.arch }}
runs-on: ubuntu-latest
platform:
- docker: amd64
arch: x86_64
- docker: arm64/v8
arch: aarch64
- docker: arm/v7
arch: armv7h
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- uses: actions/checkout@v4
- uses: docker/setup-qemu-action@v3
with:
platforms: all
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1
- uses: docker/setup-buildx-action@v3
with:
version: latest
- name: Read info
id: tags
shell: bash
run: |
arch="${{ matrix.arch }}"
echo ::set-output name=PLATFORM::${arch%% *}
echo ::set-output name=ARCH::${arch##* }
- name: Build ${{ matrix.arch }} release
shell: bash
run: |
arch="${{ matrix.arch }}"
PLATFORM=${arch%% *}
ARCH=${arch##* }
mkdir artifacts
docker buildx build --platform $PLATFORM \
--tag paru:$ARCH \
--load \
.
docker create --name paru-$ARCH paru:$ARCH
docker cp paru-$ARCH:/app/paru.tar.zst paru-$ARCH.tar.zst
docker container rm paru-$ARCH
mv paru-*.tar.zst artifacts
- uses: actions/upload-artifact@v2
install: true
- run: docker build --platform=linux/${{ matrix.platform.docker }} -o . .
- uses: actions/upload-artifact@v3
with:
name: paru-${{ steps.tags.outputs.arch }}
path: artifacts
name: paru-${{ matrix.platform.arch }}
path: paru.tar.zst
create_release:
name: Create release from this build
needs: [build-releases]
release:
name: Create GitHub Release
runs-on: ubuntu-latest
needs: [build-releases, get-version]
outputs:
release-url: ${{ steps.create-release.outputs.upload_url }}
steps:
- name: Read info
id: tags
shell: bash
run: |
echo ::set-output name=TAG::${GITHUB_REF/refs\/tags\//}
- uses: actions/download-artifact@v2
- name: Create Release
id: create-release
uses: actions/create-release@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ needs.get-version.outputs.version }}
release_name: Paru v${{ needs.get-version.outputs.version }}
draft: true
prerelease: false
upload-binaries:
name: Upload binaries to Githib relase
runs-on: ubuntu-latest
needs: [release, get-version]
strategy:
matrix:
arch: [x86_64, aarch64, armv7h]
steps:
- uses: actions/download-artifact@v3
with:
name: paru-x86_64
- uses: actions/download-artifact@v2
with:
name: paru-aarch64
- uses: actions/download-artifact@v2
with:
name: paru-armv7h
- name: Create Release
id: create_release
uses: actions/create-release@master
name: paru-${{ matrix.arch }}
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.tags.outputs.tag }}
release_name: ${{ steps.tags.outputs.tag }}
draft: true
prerelease: false
- name: Upload x86_64 asset
id: upload-release-asset-x86_64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./paru-x86_64.tar.zst
asset_name: paru-${{ steps.tags.outputs.tag }}-x86_64.tar.zst
asset_content_type: application/tar+zstd
- name: Upload aarch64 asset
id: upload-release-asset-aarch64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./paru-aarch64.tar.zst
asset_name: paru-${{ steps.tags.outputs.tag }}-aarch64.tar.zst
asset_content_type: application/tar+zstd
- name: Upload armv7h asset
id: upload-release-asset-armv7h
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./paru-armv7h.tar.zst
asset_name: paru-${{ steps.tags.outputs.tag }}-armv7h.tar.zst
upload_url: ${{ needs.release.outputs.release-url }}
asset_name: paru-${{ needs.get-version.outputs.version }}-${{ matrix.arch }}.tar.zst
asset_path: paru.tar.zst
asset_content_type: application/tar+zstd

View File

@ -19,7 +19,7 @@ jobs:
run: sudo apt-get install gettext
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Build translations
run: ./scripts/mkmo locale

4
Cargo.lock generated
View File

@ -29,7 +29,7 @@ dependencies = [
[[package]]
name = "alpm"
version = "2.2.2"
source = "git+https://github.com/archlinux/alpm.rs?rev=101b05#101b05fe980e3113f3a4fb4026a42cbb272cb3cc"
source = "git+https://github.com/archlinux/alpm.rs?rev=c75bf4#c75bf4ce726dec1f14a96ee27b4d0f152624e77d"
dependencies = [
"alpm-sys",
"bitflags 1.3.2",
@ -38,7 +38,7 @@ dependencies = [
[[package]]
name = "alpm-sys"
version = "2.1.2"
source = "git+https://github.com/archlinux/alpm.rs?rev=101b05#101b05fe980e3113f3a4fb4026a42cbb272cb3cc"
source = "git+https://github.com/archlinux/alpm.rs?rev=c75bf4#c75bf4ce726dec1f14a96ee27b4d0f152624e77d"
dependencies = [
"bindgen",
"pkg-config",

View File

@ -71,8 +71,8 @@ mock = ["async-trait"]
mock_chroot = ["mock"]
[patch.crates-io]
#alpm = { path = "../alpm.rs/alpm" }
alpm = { git = "https://github.com/archlinux/alpm.rs", rev = "101b05" }
#alpm = { path = "../alpm.rs/alpm"}
alpm = { git = "https://github.com/archlinux/alpm.rs", rev = "c75bf4" }
#aur-depends = { path = "../aur-depends" }
aur-depends = { git = "https://github.com/Morganamilo/aur-depends", rev = "c36167" }
#aur-fetch = { path = "../aur-fetch" }

View File

@ -1,12 +1,40 @@
FROM lopsided/archlinux:devel
FROM debian:unstable as build-stage
WORKDIR /app
ARG PACMAN_VER=6.0.2
ARG DEBIAN_FRONTEND=noninteractive
WORKDIR /pacman
RUN apt-get update -y
RUN apt-get install -y build-essential git libcurl4-openssl-dev curl meson ninja-build \
libarchive-dev pkg-config libgpgme-dev libssl-dev clang python3 python3-setuptools \
gettext zstd
RUN curl -O https://sources.archlinux.org/other/pacman/pacman-${PACMAN_VER}.tar.xz
RUN tar -xf pacman-${PACMAN_VER}.tar.xz
WORKDIR pacman-${PACMAN_VER}
RUN meson setup \
--prefix=/usr \
--buildtype=plain \
build
RUN ninja -C build
RUN ninja -C build install
WORKDIR /paru
ENV RUSTUP_HOME=/usr/local/rustup \
CARGO_HOME=/usr/local/cargo \
PATH=/usr/local/cargo/bin:$PATH
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
sh -s -- -y --no-modify-path --profile minimal --default-toolchain nightly
COPY ../ .
RUN pacman -Sy --noconfirm archlinux-keyring
RUN pacman -Su --noconfirm rustup
RUN rustup default nightly
RUN --mount=type=tmpfs,target=/root/.cargo ./scripts/dist
RUN ./scripts/dist
RUN --mount=type=tmpfs,target=/usr/local/cargo/git ./scripts/dist
FROM scratch AS export-stage
COPY --from=build-stage /paru/paru.tar.zst /

View File

@ -1,6 +1,9 @@
#!/bin/sh
#!/bin/bash
set -e
cargo build --release --locked --target-dir target -Z sparse-registry
cargo build --release --features generate --locked --target-dir target
scripts/mkmo locale/
strip target/release/paru
tar --zstd -cfparu.tar.zst man completions paru.conf locale -C target/release paru
tar --zstd -cf paru.tar.zst man completions paru.conf locale -C target/release paru

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/bash
set -e
if [ -z "$1" ]; then