Automate crates publishing
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
This commit is contained in:
parent
e86cf9082b
commit
fd9cde3d43
|
|
@ -0,0 +1,64 @@
|
|||
# Automates crate publishing
|
||||
# - Submit a PR to bump crate version.
|
||||
# - Specify crate to publish from the menu.
|
||||
# - Launch the job:
|
||||
# + The job will extract version from Cargo.toml
|
||||
# + Will publish to crates.io
|
||||
# + Will add and push a git tag "<crate>-v<version>"
|
||||
|
||||
name: Release
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
crate:
|
||||
description: 'Crate to publish'
|
||||
required: true
|
||||
type: choice
|
||||
options:
|
||||
- client
|
||||
- logging
|
||||
- runc
|
||||
- runc-shim
|
||||
- shim
|
||||
- shim-protos
|
||||
- snapshots
|
||||
|
||||
dryrun:
|
||||
description: 'Dry run'
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
name: 'Publish ${{ inputs.crate }}'
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
env:
|
||||
CARGO_FILE: "crates/${{ inputs.crate }}/Cargo.toml"
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Extract package version
|
||||
id: extract_version
|
||||
run: echo "version=${cargo pkgid --manifest-path $CARGO_FILE | sed 's/.*@//'}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Publish on crates.io
|
||||
run: cargo publish $DRYRUN --manifest-path $CARGO_FILE
|
||||
env:
|
||||
DRYRUN: ${{ inputs.dryrun && '--dry-run' }}
|
||||
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
||||
|
||||
- name: Push version tag
|
||||
if: ${{ !inputs.dryrun }}
|
||||
env:
|
||||
TAG: "${{ inputs.crate }}-v${{ steps.extract_version.outputs.version }}"
|
||||
run: |
|
||||
git tag $TAG
|
||||
git push origin $TAG
|
||||
|
||||
Loading…
Reference in New Issue