diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..b31a260 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,52 @@ +# 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 + permissions: + contents: write + discussions: write + steps: + - uses: actions/checkout@v4 + - name: Create source archive + run: | + git archive ${GITHUB_REF_NAME} \ + --prefix openarm-description-${GITHUB_REF_NAME}/ \ + --output openarm-description-${GITHUB_REF_NAME}.tar.gz + sha256sum \ + openarm-description-${GITHUB_REF_NAME}.tar.gz > \ + openarm-description-${GITHUB_REF_NAME}.tar.gz.sha256 + sha512sum \ + openarm-description-${GITHUB_REF_NAME}.tar.gz > \ + openarm-description-${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 Description ${version}" \ + --verify-tag \ + openarm-description-${GITHUB_REF_NAME}.tar.gz* diff --git a/dev/README.md b/dev/README.md new file mode 100644 index 0000000..1dcafde --- /dev/null +++ b/dev/README.md @@ -0,0 +1,9 @@ +# Development + +## How to release + +```bash +git clone git@github.com:enactic/openarm_description.git +cd openarm_description +dev/release.sh ${VERSION} # e.g. dev/release.sh 1.0.0 +``` diff --git a/dev/release.sh b/dev/release.sh new file mode 100755 index 0000000..944905f --- /dev/null +++ b/dev/release.sh @@ -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_description.git" ]; then + echo "This script must be ran with working copy of enactic/openarm_description." + 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 Description ${version}" "${version}" + git push origin "${version}" +fi