Publish (litedb) #3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Publish (litedb) | |
on: | |
workflow_dispatch: | |
inputs: | |
release_kind: | |
type: choice | |
description: The type of release. | |
default: prerelease | |
required: true | |
options: | |
- prerelease | |
- start-rc | |
- stable | |
jobs: | |
pre-build: | |
name: Update version name | |
runs-on: ubuntu-latest | |
outputs: | |
litedb-version: ${{ env.LITEDB_VERSION }} | |
prerelease: ${{ steps.update-version.outputs.prerelease }} | |
permissions: | |
contents: write | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- uses: anatawa12/something-releaser@v3 | |
- uses: snow-actions/git-config-user@v1.0.0 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
targets: ${{ matrix.target }} | |
- name: Update Version Name | |
id: update-version | |
run: | | |
# set version name in properties file | |
case "$RELEASE_KIND_IN" in | |
"prerelease" ) | |
get-version -t litedb | version-next | set-version -t litedb | |
gh-export-variable PRERELEASE true | |
gh-set-output prerelease true | |
;; | |
"start-rc" ) | |
get-version -t litedb | version-set-channel - rc 0 | set-version -t litedb | |
gh-export-variable PRERELEASE true | |
gh-set-output prerelease true | |
;; | |
"stable" ) | |
get-version -t litedb | version-set-channel - stable | set-version -t litedb | |
gh-export-variable PRERELEASE false | |
gh-set-output prerelease '' # empty string for false | |
;; | |
* ) | |
echo "invalid release kind: $RELEASE_KIND_IN" | |
exit 255 | |
;; | |
esac | |
case "$GITHUB_REF_NAME" in | |
master | master-* ) | |
echo "head is master or master-*" | |
;; | |
* ) | |
echo "invalid release kind: $RELEASE_KIND_IN is not allowd for $GITHUB_REF_NAME" | |
exit 255 | |
;; | |
esac | |
gh-export-variable LITEDB_VERSION "$(get-version -t litedb)" | |
env: | |
RELEASE_KIND_IN: ${{ github.event.inputs.release_kind }} | |
# check for unexpected breaking ABI changes | |
- name: Check semver | |
uses: obi1kenobi/cargo-semver-checks-action@v2 | |
with: | |
package: vrc-get-litedb | |
- name: Commit | |
id: update | |
run: |- | |
# commit & tag | |
git commit -am "litedb v$LITEDB_VERSION" | |
git branch releasing | |
git push -f -u origin releasing | |
publish-crates-io: | |
name: Publish to crates.io | |
environment: | |
name: crates.io | |
url: https://crates.io/crates/vrc-get | |
runs-on: ubuntu-latest | |
needs: [pre-build] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
ref: 'releasing' | |
fetch-depth: 1 | |
submodules: recursive | |
- name: Publish CARGO | |
env: | |
CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_IO_TOKEN }} | |
run: cargo publish --package vrc-get-litedb | |
publish-to-github: | |
name: Publish to GitHub | |
environment: | |
name: actions-github-app | |
url: https://github.com/anatawa12/vrc-get/releases/litedb-v${{ needs.pre-build.outputs.litedb-version }} | |
permissions: | |
contents: write | |
runs-on: ubuntu-latest | |
needs: [pre-build, publish-crates-io] | |
env: | |
LITEDB_VERSION: ${{ needs.pre-build.outputs.litedb-version }} | |
steps: | |
- uses: actions/create-github-app-token@v1 | |
id: app-token | |
with: | |
app-id: ${{ secrets.APP_ID }} | |
private-key: ${{ secrets.PRIVATE_KEY }} | |
- uses: actions/checkout@v3 | |
with: | |
ref: 'releasing' | |
fetch-depth: 2 | |
submodules: recursive | |
token: ${{ steps.app-token.outputs.token }} | |
# tools | |
- uses: anatawa12/something-releaser@v3 | |
- uses: snow-actions/git-config-user@v1.0.0 | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Push tag | |
run: |- | |
# set tag and publish current version | |
git tag "litedb-v$LITEDB_VERSION" | |
git push --tags | |
# create master and push | |
git switch -c master | |
git fetch origin master --depth=1 | |
git log --all --graph | |
git push -u origin master | |
sleep 1 | |
- name: prepare next release & push | |
if: ${{ !needs.pre-build.outputs.prerelease }} | |
run: | | |
get-version -t litedb | version-next | version-set-channel - beta 0 | set-version -t litedb | |
LITEDB_NEXT="$(get-version -t litedb | version-stable)" | |
git commit -am "chore: prepare for next version: litedb $LITEDB_NEXT" | |
git push | |
cleanup: | |
name: Cleanup | |
if: ${{ !failure() && !cancelled() }} | |
permissions: | |
contents: write | |
runs-on: ubuntu-latest | |
needs: | |
- pre-build | |
- publish-crates-io | |
- publish-to-github | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
ref: 'releasing' | |
fetch-depth: 2 | |
- name: remove releasing branch | |
run: git push --delete origin releasing |