name: Make a release and publish
on:
push:
tags: ["v*"]
jobs:
test:
name: Preliminary test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Test with cargo
run: cargo test
publish_crates_io:
name: "Publish to crates.io"
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- run: cargo publish
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_IO_TOKEN }}
make_release:
name: Create release
needs: test
runs-on: ubuntu-latest
steps:
- name: Create release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.API_GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref_name }}
release_name: Release ${{ github.ref_name }}
draft: true
prerelease: true
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
build-x86_64-unknown-linux-gnu:
name: Build binary for x86_64-unknown-linux-gnu and add it to release
needs: make_release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Get stable toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
target: x86_64-unknown-linux-gnu
override: true
- name: Test with cargo
run: cargo test
- name: Build x86_64-unknown-linux-gnu binary
run: |
cargo build --release --verbose
(cd target/release && mkdir baseic-$VERSION-x86_64-unknown-linux-gnu && mv baseic baseic-$VERSION-x86_64-unknown-linux-gnu/)
tar -C target/release -czvf baseic-$VERSION-x86_64-unknown-linux-gnu.tar.gz baseic-$VERSION-x86_64-unknown-linux-gnu/
env:
VERSION: ${{ github.ref_name }}
- name: Upload x86_64-unknown-linux-gnu binary to release assets
uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.API_GITHUB_TOKEN }}
with:
upload_url: ${{ needs.make_release.outputs.upload_url }}
asset_path: baseic-${{github.ref_name}}-x86_64-unknown-linux-gnu.tar.gz
asset_name: baseic-${{github.ref_name}}-x86_64-unknown-linux-gnu.tar.gz
asset_content_type: application/gzip
publish_aur:
name: Publish package to Arch User Repository
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install envsubst
run: |
sudo apt update
sudo apt install -y gettext-base
- name: Generate PKGBUILD for baseic
run: |
export PKGVER=${VERSION:1}
mkdir pkgbuild && mkdir pkgbuild/baseic
cat template/PKGBUILD-baseic | envsubst '$PKGVER' > pkgbuild/baseic/PKGBUILD
cat pkgbuild/baseic/PKGBUILD
env:
VERSION: ${{ github.ref_name }}
- name: Publish baseic to the AUR
uses: KSXGitHub/github-actions-deploy-aur@v2.7.2
with:
pkgname: baseic
pkgbuild: ./pkgbuild/baseic/PKGBUILD
commit_username: ${{ secrets.AUR_USERNAME }}
commit_email: ${{ secrets.AUR_EMAIL }}
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
commit_message: ${{ github.ref_name }}
force_push: 'true'
test: 'true'
updpkgsums: 'true'