Add release CI job (#5)

Fixes #1
This commit is contained in:
Sutou Kouhei 2025-07-22 20:49:06 +09:00 committed by GitHub
parent 2d48a5fb90
commit 5d502ab732
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 108 additions and 0 deletions

49
.github/workflows/release.yaml vendored Normal file
View File

@ -0,0 +1,49 @@
# Copyright 2025 Enactic, Inc.
#
# 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.
name: Release
on:
push:
tags:
- '**'
jobs:
publish:
name: Publish
runs-on: ubuntu-latest
environment: release
steps:
- uses: actions/checkout@v4
- name: Create source archive
run: |
git archive ${GITHUB_REF_NAME} \
--prefix openarm-can-${GITHUB_REF_NAME}/ \
--output openarm-can-${GITHUB_REF_NAME}.tar.gz
sha256sum \
openarm-can-${GITHUB_REF_NAME}.tar.gz > \
openarm-can-${GITHUB_REF_NAME}.tar.gz.sha256
sha512sum \
openarm-can-${GITHUB_REF_NAME}.tar.gz > \
openarm-can-${GITHUB_REF_NAME}.tar.gz.sha512
- name: Create GitHub Release
env:
GH_TOKEN: ${{ github.token }}
run: |
version=${GITHUB_REF_NAME}
gh release create ${GITHUB_REF_NAME} \
--discussion-category Announcements \
--generate-notes \
--repo ${GITHUB_REPOSITORY} \
--title "OpenArm CAN ${version}" \
--verify-tag \
openarm-can-${GITHUB_REF_NAME}.tar.gz*

9
dev/README.md Normal file
View File

@ -0,0 +1,9 @@
# Development
## How to release
```bash
git clone git@github.com:enactic/openarm_can.git
cd openarm_can
dev/release.sh ${VERSION} # e.g. dev/release.sh 1.0.0
```

50
dev/release.sh Executable file
View File

@ -0,0 +1,50 @@
#!/bin/bash
#
# Copyright 2025 Enactic, Inc.
#
# 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.
set -eu
if [ $# -ne 1 ]; then
echo "Usage: $0 version"
echo " e.g.: $0 1.0.0"
exit 0
fi
version="$1"
base_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "${base_dir}"
if [ "${RELEASE_CHECK_ORIGIN:-yes}" = "yes" ]; then
git_origin_url="$(git remote get-url origin)"
if [ "${git_origin_url}" != "git@github.com:enactic/openarm_can.git" ]; then
echo "This script must be ran with working copy of enactic/openarm_can."
echo "The origin's URL: ${git_origin_url}"
exit 1
fi
fi
if [ "${RELEASE_PULL:-yes}" = "yes" ]; then
echo "Ensure using the latest commit"
git checkout main
git pull --ff-only
fi
if [ "${RELEASE_TAG:-yes}" = "yes" ]; then
echo "Tag"
git tag -a -m "OpenArm CAN ${version}" "${version}"
git push origin "${version}"
fi