-
Notifications
You must be signed in to change notification settings - Fork 0
116 lines (104 loc) · 4.38 KB
/
trigger_robomaker_sim.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# Copyright 2023 Ekumen, Inc.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# * Neither the name of the the copyright holder nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
name: Trigger Robomaker Simulation
on:
workflow_dispatch:
workflow_call:
secrets:
AWS_ACCESS_KEY:
required: true
AWS_ECR_REPOSITORY:
required: true
AWS_REGION:
required: true
AWS_ROBOMAKER_ROLE:
required: true
AWS_ROBOMAKER_VPNS:
required: true
AWS_ROBOMAKER_VPN_SECURITY_GROUPS:
required: true
AWS_SECRET_ACCESS_KEY:
required: true
jobs:
trigger_robomaker_sim:
runs-on: ubuntu-22.04
name: Trigger Robomaker Simulation
timeout-minutes: 30
steps:
- name: Checkout the code
uses: actions/checkout@v3
- name: Select image tag
id: vars
run: |
echo "IMAGE_TAG=PR-${{ github.event.number }}-$(git rev-parse --short HEAD)"-${{github.run_number}} >> $GITHUB_OUTPUT
# set up Python dependencies
- name: Install Python dependencies
uses: py-actions/py-dependency-install@v4
with:
path: "ekumen_cloud_robotics_ci/requirements.txt"
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
id: configure_aws_credentials
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
with:
mask-password: 'true'
- name: Trigger Robomaker simulation job
id: trigger_simulation_job_batch
env:
REGISTRY: ${{ steps.login-ecr.outputs.registry }}
IMAGE_TAG: ${{ steps.vars.outputs.IMAGE_TAG }}
REPOSITORY: ${{ secrets.AWS_ECR_REPOSITORY }}
run: |
python3 ekumen_cloud_robotics_ci/scripts/trigger_robomaker_sim.py \
--iam_role ${{ secrets.AWS_ROBOMAKER_ROLE }} \
--simulation_image_url $REGISTRY/$REPOSITORY:$IMAGE_TAG \
--robot_image_url $REGISTRY/$REPOSITORY:$IMAGE_TAG \
--simulation_application_name $REPOSITORY-$IMAGE_TAG \
--robot_application_name $REPOSITORY-$IMAGE_TAG \
--vpn_config_subnets ${{ secrets.AWS_ROBOMAKER_VPNS }} \
--vpn_security_groups ${{ secrets.AWS_ROBOMAKER_VPN_SECURITY_GROUPS }} \
--test_description_path andino_tests/config/test_suite.json \
--simulation_summary_path /tmp/simulation_summary.txt
# Upload the result as an artifact
# This can be post-processed to show the desired info
- name: Publish config file
uses: actions/upload-artifact@v2
with:
name: json_config_file.json
path: /tmp/json_config_file.json
- name: Publish Simulation Status Artifact
uses: actions/upload-artifact@v2
with:
name: simulation_summary
path: /tmp/simulation_summary.txt