ci release: Upload the URDF files (#15)

Generate the `.urdf` files in CI and upload them to the release page.


The ROS 2 installation was referred to the following documentation.
https://docs.ros.org/en/kilted/Installation/Ubuntu-Install-Debs.html

We've modified it to run on push and pull_request for easier checking.
This commit is contained in:
Abe Tomoaki 2025-09-04 15:43:37 +09:00 committed by GitHub
parent 981aefd391
commit 8d5449483b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -14,39 +14,93 @@
name: Release name: Release
on: on:
push: - push
tags: - pull_request
- '**'
jobs: jobs:
build:
name: Build
runs-on: ubuntu-latest
strategy:
matrix:
id:
- "rolling"
- "kilted"
- "jazzy"
- "humble"
steps:
- uses: actions/checkout@v5
- name: Build URDF files
run: |
docker container run \
--rm \
--volume ${PWD}:/source \
osrf/ros:${{ matrix.id }}-desktop-full \
bash -c '
cd /source
colcon build
source install/setup.bash
for file in $(find urdf -name "*.xacro"); do
xacro "${file}" bimanual:=true > "${file%.*}_${{ matrix.id }}_bimanual.urdf"
xacro "${file}" bimanual:=false > "${file%.*}_${{ matrix.id }}.urdf"
done'
- uses: actions/upload-artifact@v4
with:
name: urdf-${{ matrix.id }}
path: urdf/**/*.urdf
publish: publish:
name: Publish name: Publish
needs: build
runs-on: ubuntu-latest runs-on: ubuntu-latest
environment: release environment: release
permissions: permissions:
contents: write contents: write
discussions: write discussions: write
steps: steps:
- name: Set environments
run: |
if [ "${GITHUB_REF_TYPE}" = "tag" ]; then
echo "VERSION=${GITHUB_REF_NAME}" >> ${GITHUB_ENV}
else
echo "VERSION=x.y.z" >> ${GITHUB_ENV}
fi
if [ "${GITHUB_EVENT_NAME}" = "pull_request" ]; then
echo "REF=${GITHUB_SHA}" >> ${GITHUB_ENV}
else
echo "REF=${GITHUB_REF_NAME}" >> ${GITHUB_ENV}
fi
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: actions/download-artifact@v5
with:
pattern: urdf-*
path: artifacts
merge-multiple: true
- name: Create source archive - name: Create source archive
run: | run: |
git archive ${GITHUB_REF_NAME} \ name="openarm-description-${VERSION}"
--prefix openarm-description-${GITHUB_REF_NAME}/ \ git archive --format=tar ${REF} \
--output openarm-description-${GITHUB_REF_NAME}.tar.gz --prefix "${name}/" \
sha256sum \ --output "${name}.tar"
openarm-description-${GITHUB_REF_NAME}.tar.gz > \
openarm-description-${GITHUB_REF_NAME}.tar.gz.sha256 mkdir "${name}"
sha512sum \ mv artifacts "${name}/urdf"
openarm-description-${GITHUB_REF_NAME}.tar.gz > \ find "${name}/urdf" -type f | tar -rf "${name}.tar" -T -
openarm-description-${GITHUB_REF_NAME}.tar.gz.sha512 gzip "${name}.tar"
sha256sum "${name}.tar.gz" > "${name}.tar.gz.sha256"
sha512sum "${name}.tar.gz" > "${name}.tar.gz.sha512"
- uses: actions/upload-artifact@v4
with:
name: source-archive
path: openarm-description-*.tar.gz*
- name: Create GitHub Release - name: Create GitHub Release
if: github.ref_type == 'tag'
env: env:
GH_TOKEN: ${{ github.token }} GH_TOKEN: ${{ github.token }}
run: | run: |
version=${GITHUB_REF_NAME}
gh release create ${GITHUB_REF_NAME} \ gh release create ${GITHUB_REF_NAME} \
--discussion-category Announcements \ --discussion-category Announcements \
--generate-notes \ --generate-notes \
--repo ${GITHUB_REPOSITORY} \ --repo ${GITHUB_REPOSITORY} \
--title "OpenArm Description ${version}" \ --title "OpenArm Description ${VERSION}" \
--verify-tag \ --verify-tag \
openarm-description-${GITHUB_REF_NAME}.tar.gz* openarm-description-${VERSION}.tar.gz*