Skip to content

Commit ed2e895

Browse files
author
Aaron Roller
committed
ci: standard packaging AM-788/resource_release
1 parent 465335f commit ed2e895

2 files changed

Lines changed: 102 additions & 34 deletions

File tree

.github/workflows/package.yml

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,26 @@ name: Release Candidate
22
on:
33
push:
44
branches-ignore:
5-
- master
5+
- master
66
jobs:
7-
package-cuda:
7+
package-arm:
88
runs-on: [arm64,self-hosted,linux, cuda]
99
steps:
1010
- uses: AutoModality/action-clean@v1.1.0
1111
- uses: actions/checkout@v2
12-
- uses: rlespinasse/github-slug-action@3.1.0 # for GITHUB_REF_SLUG
13-
- name: Package
14-
run: |
15-
AM_PLATFORM=dji_m300 amros packages install -y --password=${{ secrets.BUILD_PASSWORD }}
16-
echo ${{ secrets.BUILD_PASSWORD }} | sudo -S whoami && source /opt/ros/melodic/setup.bash && amros dev build deb --clean --version="0.0.${{ github.run_number }}"
12+
- uses: rlespinasse/github-slug-action@3.1.0
1713
- name: Deploy
1814
id: deploy
19-
uses: AutoModality/action-cloudsmith@0.2.0
20-
with:
21-
api-key: ${{ secrets.CLOUDSMITH_API_KEY }}
22-
command: 'push'
23-
format: 'deb'
24-
owner: 'automodality'
25-
repo: 'dev'
26-
distro: 'ubuntu'
27-
release: 'bionic'
28-
file: 'ros-melodic-dji-osdk-ros_0.0.${{ github.run_number }}_arm64.deb' # version must match package phase
15+
run: deploy-amros ${{ secrets.DEVELOPER_PASSWORD }} ${{ github.run_number }}-${{ env.GITHUB_REF_SLUG }} dev ${{ secrets.CLOUDSMITH_API_KEY }}
2916
draft-pr:
3017
runs-on: ubuntu-18.04
31-
needs: package-cuda
18+
needs:
19+
- package-arm
3220
steps:
3321
- uses: actions/checkout@v2
3422
- name: Draft a Pull Request
3523
uses: repo-sync/pull-request@v2
3624
with:
3725
pr_draft: true
3826
github_token: ${{ secrets.GITHUB_TOKEN }}
27+

.github/workflows/release.yml

Lines changed: 95 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,105 @@ on:
33
push:
44
branches:
55
- master
6+
env:
7+
RELEASE_DIR: release
8+
RELEASE_PROPERTIES_FILE: release/release.properties
9+
RELEASE_PAYLOAD_FILE: release/payload.json
610
jobs:
7-
package-cuda:
11+
release:
12+
runs-on: ${{ matrix.os }}
13+
strategy:
14+
matrix:
15+
os: [ubuntu-18.04]
16+
steps:
17+
- uses: AutoModality/action-clean@v1.1.0
18+
- name: Checkout
19+
uses: actions/checkout@v2
20+
- name: Semantic Release
21+
id: semantic
22+
uses: cycjimmy/semantic-release-action@v2
23+
env:
24+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
25+
- name: Write release result to file
26+
run: mkdir ${{ env.RELEASE_DIR }}
27+
- name: Write Published
28+
uses: christian-draeger/write-properties@1.0.1
29+
with:
30+
path: ${{ env.RELEASE_PROPERTIES_FILE }}
31+
property: 'published'
32+
value: ${{ steps.semantic.outputs.new_release_published }}
33+
- name: Write Version
34+
uses: christian-draeger/write-properties@1.0.1
35+
if: steps.semantic.outputs.new_release_published == 'true'
36+
with:
37+
path: ${{ env.RELEASE_PROPERTIES_FILE }}
38+
property: 'version'
39+
value: ${{ steps.semantic.outputs.new_release_version }}
40+
- name: Write Release Payload
41+
run: |
42+
#retrieve package name from changelog guaranteed to be first characters ( split on space, choose first result)
43+
package_name=$(head -1 debian/changelog | awk -F' ' '{print $1}')
44+
echo "{\"package\":\"${package_name}\", \"new_release_version\": \"${{ steps.semantic.outputs.new_release_version }}\", \"new_release_major_version\": \"${{ steps.semantic.outputs.new_release_major_version }}\", \"new_release_minor_version\":\"${{ steps.semantic.outputs.new_release_minor_version }}\",\"new_release_patch_version\":\"${{ steps.semantic.outputs.new_release_patch_version }}\"}" > ${{ env.RELEASE_PAYLOAD_FILE }}
45+
- name: Share release file with other jobs
46+
uses: actions/upload-artifact@v1
47+
with:
48+
name: release
49+
path: '${{ env.RELEASE_DIR }}'
50+
release-package-arm:
51+
needs: release
852
runs-on: [arm64,self-hosted,linux, cuda]
953
steps:
1054
- uses: AutoModality/action-clean@v1.1.0
1155
- uses: actions/checkout@v2
12-
- uses: rlespinasse/github-slug-action@3.1.0 # for GITHUB_REF_SLUG
13-
- name: Package
14-
run: |
15-
AM_PLATFORM=dji_m300 amros packages install -y --password=${{ secrets.BUILD_PASSWORD }}
16-
echo ${{ secrets.BUILD_PASSWORD }} | sudo -S whoami && source /opt/ros/melodic/setup.bash && amros dev build deb --clean --version="4.0.100${{ github.run_number }}"
56+
- name: Download release
57+
uses: actions/download-artifact@v1
58+
with:
59+
name: release
60+
path: ${{ env.RELEASE_DIR }}
61+
- name: Read Published
62+
id: published
63+
uses: christian-draeger/read-properties@1.0.1
64+
with:
65+
path: ${{ env.RELEASE_PROPERTIES_FILE }}
66+
property: 'published'
67+
- name: Read Version if published
68+
id: version
69+
if: steps.published.outputs.value == 'true'
70+
uses: christian-draeger/read-properties@1.0.1
71+
with:
72+
path: ${{ env.RELEASE_PROPERTIES_FILE }}
73+
property: 'version'
1774
- name: Deploy
1875
id: deploy
19-
uses: AutoModality/action-cloudsmith@0.2.0
20-
with:
21-
api-key: ${{ secrets.CLOUDSMITH_API_KEY }}
22-
command: 'push'
23-
format: 'deb'
24-
owner: 'automodality'
25-
repo: 'release'
26-
distro: 'ubuntu'
27-
release: 'bionic'
28-
file: 'ros-melodic-dji-osdk-ros_4.0.100${{ github.run_number }}_arm64.deb' # version must match package phase
76+
if: steps.published.outputs.value == 'true'
77+
run: deploy-amros ${{ secrets.DEVELOPER_PASSWORD }} ${{ steps.version.outputs.value }} release ${{ secrets.CLOUDSMITH_API_KEY }}
78+
notify-amros:
79+
needs:
80+
- release-package-arm
81+
runs-on: ubuntu-latest
82+
name: Notify AMROS
83+
steps:
84+
- name: Download release
85+
uses: actions/download-artifact@v1
86+
with:
87+
name: release
88+
path: ${{ env.RELEASE_DIR }}
89+
- name: Read Published
90+
id: published
91+
uses: christian-draeger/read-properties@1.0.1
92+
with:
93+
path: ${{ env.RELEASE_PROPERTIES_FILE }}
94+
property: 'published'
95+
- name: Payload env
96+
run: |
97+
payload=$(cat ${{ env.RELEASE_PAYLOAD_FILE }} )
98+
echo "RELEASE_PAYLOAD=$payload" >> $GITHUB_ENV
99+
- name: Notify AMROS of Release
100+
if: steps.published.outputs.value == 'true'
101+
uses: peter-evans/repository-dispatch@v1
102+
with:
103+
token: ${{ secrets.AMGITBOT_PAT }}
104+
repository: AutoModality/amros
105+
event-type: package-released
106+
client-payload: "${{ env.RELEASE_PAYLOAD }}"
107+

0 commit comments

Comments
 (0)