Remove Helm 2 based Armada integrations
- Tiller status check - Test cleanup arg removed Depends-On: https://review.opendev.org/c/airship/armada/+/812047 Signed-off-by: Sean Eagan <seaneagan1@gmail.com> Change-Id: I77ef3fb8e952ad28132e3476138d34bbb5a6fd3d
This commit is contained in:
parent
a0da68409a
commit
e64f17b91b
@ -253,22 +253,14 @@ in all namespaces. Steps, conceptually:
|
|||||||
Using test_site
|
Using test_site
|
||||||
```````````````
|
```````````````
|
||||||
|
|
||||||
The ``test_site`` action accepts two optional parameters:
|
The ``test_site`` action accepts one optional parameter:
|
||||||
|
|
||||||
#. cleanup: A boolean value that instructs Armada to delete test pods after
|
|
||||||
test execution. Default value is ``false``. Failure to set this value to
|
|
||||||
``True`` may require manual intervention to re-execute tests, as test pods
|
|
||||||
will not be deleted.
|
|
||||||
#. release: The name of a release to test. When provided, tests are only
|
#. release: The name of a release to test. When provided, tests are only
|
||||||
executed for the specified release.
|
executed for the specified release.
|
||||||
|
|
||||||
An example of invoking Helm tests with cleanup enabled::
|
|
||||||
|
|
||||||
shipyard create action test_site --param="cleanup=true"
|
|
||||||
|
|
||||||
An example of invoking Helm tests for a single release::
|
An example of invoking Helm tests for a single release::
|
||||||
|
|
||||||
shipyard create action test_site --param="release=keystone"
|
shipyard create action test_site --param="namespace=openstack" --param="release=keystone"
|
||||||
|
|
||||||
.. _update_labels:
|
.. _update_labels:
|
||||||
|
|
||||||
|
@ -27,8 +27,6 @@ from shipyard_airflow.control.validators.validate_intermediate_commit import \
|
|||||||
ValidateIntermediateCommit
|
ValidateIntermediateCommit
|
||||||
from shipyard_airflow.control.validators.validate_target_nodes import \
|
from shipyard_airflow.control.validators.validate_target_nodes import \
|
||||||
ValidateTargetNodes
|
ValidateTargetNodes
|
||||||
from shipyard_airflow.control.validators.validate_test_cleanup import \
|
|
||||||
ValidateTestCleanup
|
|
||||||
from shipyard_airflow.shipyard_const import CustomHeaders
|
from shipyard_airflow.shipyard_const import CustomHeaders
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
@ -118,12 +116,3 @@ def validate_target_nodes(action, **kwargs):
|
|||||||
"""
|
"""
|
||||||
validator = ValidateTargetNodes(action=action)
|
validator = ValidateTargetNodes(action=action)
|
||||||
validator.validate()
|
validator.validate()
|
||||||
|
|
||||||
|
|
||||||
def validate_test_cleanup(action, **kwargs):
|
|
||||||
"""Validates the cleanup parameter
|
|
||||||
|
|
||||||
Ensures the cleanup parameter is a boolean value.
|
|
||||||
"""
|
|
||||||
validator = ValidateTestCleanup(action=action)
|
|
||||||
validator.validate()
|
|
||||||
|
@ -92,9 +92,7 @@ def _action_mappings():
|
|||||||
'test_site': {
|
'test_site': {
|
||||||
'dag': 'test_site',
|
'dag': 'test_site',
|
||||||
'rbac_policy': policy.ACTION_TEST_SITE,
|
'rbac_policy': policy.ACTION_TEST_SITE,
|
||||||
'validators': [
|
'validators': []
|
||||||
action_validators.validate_test_cleanup,
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,45 +0,0 @@
|
|||||||
# Copyright 2018 AT&T Intellectual Property. All other rights reserved.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
import falcon
|
|
||||||
|
|
||||||
from shipyard_airflow.errors import ApiError
|
|
||||||
|
|
||||||
|
|
||||||
class ValidateTestCleanup:
|
|
||||||
"""Validate that a valid cleanup value is specified for release testing"""
|
|
||||||
def __init__(self, action):
|
|
||||||
self.action = action
|
|
||||||
|
|
||||||
def validate(self):
|
|
||||||
"""Retrieve cleanup parameter and verify it is a boolean value"""
|
|
||||||
# Retrieve optional parameters
|
|
||||||
parameters = self.action.get('parameters')
|
|
||||||
if not parameters:
|
|
||||||
return
|
|
||||||
|
|
||||||
# Verify cleanup param (optional) is a boolean value
|
|
||||||
cleanup = parameters.get('cleanup')
|
|
||||||
if not cleanup:
|
|
||||||
return
|
|
||||||
elif str.lower(cleanup) in ['true', 'false']:
|
|
||||||
return
|
|
||||||
|
|
||||||
raise ApiError(
|
|
||||||
title='Invalid cleanup value',
|
|
||||||
description=(
|
|
||||||
'Cleanup must be a boolean value.'
|
|
||||||
),
|
|
||||||
status=falcon.HTTP_400,
|
|
||||||
retry=False
|
|
||||||
)
|
|
@ -16,14 +16,11 @@ from airflow.models import DAG
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
from airflow.operators import ArmadaGetReleasesOperator
|
from airflow.operators import ArmadaGetReleasesOperator
|
||||||
from airflow.operators import ArmadaGetStatusOperator
|
|
||||||
from airflow.operators import ArmadaPostApplyOperator
|
from airflow.operators import ArmadaPostApplyOperator
|
||||||
from config_path import config_path
|
from config_path import config_path
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from shipyard_airflow.plugins.armada_get_releases import \
|
from shipyard_airflow.plugins.armada_get_releases import \
|
||||||
ArmadaGetReleasesOperator
|
ArmadaGetReleasesOperator
|
||||||
from shipyard_airflow.plugins.armada_get_status import \
|
|
||||||
ArmadaGetStatusOperator
|
|
||||||
from shipyard_airflow.plugins.armada_post_apply import \
|
from shipyard_airflow.plugins.armada_post_apply import \
|
||||||
ArmadaPostApplyOperator
|
ArmadaPostApplyOperator
|
||||||
from shipyard_airflow.dags.config_path import config_path
|
from shipyard_airflow.dags.config_path import config_path
|
||||||
@ -37,13 +34,6 @@ def deploy_site_armada(parent_dag_name, child_dag_name, args):
|
|||||||
'{}.{}'.format(parent_dag_name, child_dag_name),
|
'{}.{}'.format(parent_dag_name, child_dag_name),
|
||||||
default_args=args)
|
default_args=args)
|
||||||
|
|
||||||
# Get Tiller Status
|
|
||||||
armada_get_status = ArmadaGetStatusOperator(
|
|
||||||
task_id='armada_get_status',
|
|
||||||
shipyard_conf=config_path,
|
|
||||||
main_dag_name=parent_dag_name,
|
|
||||||
dag=dag)
|
|
||||||
|
|
||||||
# Armada Apply
|
# Armada Apply
|
||||||
armada_post_apply = ArmadaPostApplyOperator(
|
armada_post_apply = ArmadaPostApplyOperator(
|
||||||
task_id='armada_post_apply',
|
task_id='armada_post_apply',
|
||||||
@ -60,7 +50,6 @@ def deploy_site_armada(parent_dag_name, child_dag_name, args):
|
|||||||
dag=dag)
|
dag=dag)
|
||||||
|
|
||||||
# Define dependencies
|
# Define dependencies
|
||||||
armada_post_apply.set_upstream(armada_get_status)
|
|
||||||
armada_get_releases.set_upstream(armada_post_apply)
|
armada_get_releases.set_upstream(armada_post_apply)
|
||||||
|
|
||||||
return dag
|
return dag
|
||||||
|
@ -1,69 +0,0 @@
|
|||||||
# Copyright 2018 AT&T Intellectual Property. All other rights reserved.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
import logging
|
|
||||||
|
|
||||||
from airflow.exceptions import AirflowException
|
|
||||||
from airflow.plugins_manager import AirflowPlugin
|
|
||||||
|
|
||||||
try:
|
|
||||||
from armada_base_operator import ArmadaBaseOperator
|
|
||||||
except ImportError:
|
|
||||||
from shipyard_airflow.plugins.armada_base_operator import \
|
|
||||||
ArmadaBaseOperator
|
|
||||||
from armada.exceptions import api_exceptions as errors
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class ArmadaGetStatusOperator(ArmadaBaseOperator):
|
|
||||||
|
|
||||||
"""Armada Get Status Operator
|
|
||||||
|
|
||||||
This operator will trigger armada to get the current status of
|
|
||||||
Tiller. Tiller needs to be in a healthy state before any site
|
|
||||||
deployment/update.
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
def do_execute(self):
|
|
||||||
|
|
||||||
# Retrieve read timeout
|
|
||||||
timeout = self.dc['armada.get_status_timeout']
|
|
||||||
|
|
||||||
# Check State of Tiller
|
|
||||||
try:
|
|
||||||
armada_get_status = self.armada_client.get_status(
|
|
||||||
self.query,
|
|
||||||
timeout=timeout)
|
|
||||||
|
|
||||||
except errors.ClientError as client_error:
|
|
||||||
raise AirflowException(client_error)
|
|
||||||
|
|
||||||
# Tiller State will return boolean value, i.e. True/False
|
|
||||||
# Raise Exception if Tiller is unhealthy
|
|
||||||
if armada_get_status['tiller']['state']:
|
|
||||||
LOG.info("Tiller is in running state")
|
|
||||||
LOG.info("Tiller version is %s",
|
|
||||||
armada_get_status['tiller']['version'])
|
|
||||||
|
|
||||||
else:
|
|
||||||
raise AirflowException("Please check Tiller!")
|
|
||||||
|
|
||||||
|
|
||||||
class ArmadaGetStatusOperatorPlugin(AirflowPlugin):
|
|
||||||
|
|
||||||
"""Creates ArmadaGetStatusOperator in Airflow."""
|
|
||||||
|
|
||||||
name = 'armada_get_status_operator'
|
|
||||||
operators = [ArmadaGetStatusOperator]
|
|
@ -33,11 +33,6 @@ class ArmadaTestReleasesOperator(ArmadaBaseOperator):
|
|||||||
specified by the "release" parameter.
|
specified by the "release" parameter.
|
||||||
"""
|
"""
|
||||||
def do_execute(self):
|
def do_execute(self):
|
||||||
# Retrieve cleanup flag from action params
|
|
||||||
cleanup = self.action_params.get('cleanup')
|
|
||||||
if cleanup:
|
|
||||||
self.query['cleanup'] = cleanup
|
|
||||||
|
|
||||||
release = self.action_params.get('release')
|
release = self.action_params.get('release')
|
||||||
if release:
|
if release:
|
||||||
# Invoke Helm tests for specified release
|
# Invoke Helm tests for specified release
|
||||||
@ -59,7 +54,6 @@ class ArmadaTestReleasesOperator(ArmadaBaseOperator):
|
|||||||
try:
|
try:
|
||||||
armada_test_release = self.armada_client.get_test_release(
|
armada_test_release = self.armada_client.get_test_release(
|
||||||
release=release,
|
release=release,
|
||||||
query=self.query,
|
|
||||||
timeout=None)
|
timeout=None)
|
||||||
except errors.ClientError as client_error:
|
except errors.ClientError as client_error:
|
||||||
raise AirflowException(client_error)
|
raise AirflowException(client_error)
|
||||||
|
@ -184,42 +184,24 @@ def test_get_step():
|
|||||||
|
|
||||||
tasks = yaml.safe_load("""
|
tasks = yaml.safe_load("""
|
||||||
---
|
---
|
||||||
- task_id: armada_get_status
|
- task_id: armada_post_apply
|
||||||
dag_id: update_software.armada_build
|
dag_id: update_software.armada_build
|
||||||
execution_date: 2018-09-07 23:18:04
|
execution_date: 2018-09-07 23:18:04
|
||||||
start_date: 2018-09-07 23:18:55.950298
|
start_date: 2018-09-07 23:48:25.884615
|
||||||
end_date: 2018-09-07 23:18:58.159597
|
end_date: 2018-09-07 23:48:50.552757
|
||||||
duration: 2.209299
|
duration: 24.668142
|
||||||
state: success
|
state: success
|
||||||
try_number: 1
|
try_number: 1
|
||||||
hostname: airflow-worker-0.airflow-worker-discovery.ucp.svc.cluster.local
|
hostname: airflow-worker-0.airflow-worker-discovery.ucp.svc.cluster.local
|
||||||
unixname: airflow
|
unixname: airflow
|
||||||
job_id: 11
|
job_id: 13
|
||||||
pool:
|
pool:
|
||||||
queue: default
|
queue: default
|
||||||
priority_weight: 3
|
priority_weight: 2
|
||||||
operator: ArmadaGetStatusOperator
|
operator: ArmadaPostApplyOperator
|
||||||
queued_dttm:
|
queued_dttm:
|
||||||
pid: 249
|
pid: 329
|
||||||
max_tries: 0
|
max_tries: 3
|
||||||
- task_id: armada_get_status
|
|
||||||
dag_id: update_software.armada_build
|
|
||||||
execution_date: 2018-09-07 23:18:04
|
|
||||||
start_date: 2018-09-07 23:18:55.950298
|
|
||||||
end_date: 2018-09-07 23:18:58.159597
|
|
||||||
duration: 2.209299
|
|
||||||
state: success
|
|
||||||
try_number: 2
|
|
||||||
hostname: airflow-worker-1.airflow-worker-discovery.ucp.svc.cluster.local
|
|
||||||
unixname: airflow
|
|
||||||
job_id: 12
|
|
||||||
pool:
|
|
||||||
queue: default
|
|
||||||
priority_weight: 3
|
|
||||||
operator: ArmadaGetStatusOperator
|
|
||||||
queued_dttm:
|
|
||||||
pid: 249
|
|
||||||
max_tries: 0
|
|
||||||
- task_id: armada_post_apply
|
- task_id: armada_post_apply
|
||||||
dag_id: update_software.armada_build
|
dag_id: update_software.armada_build
|
||||||
execution_date: 2018-09-07 23:18:04
|
execution_date: 2018-09-07 23:18:04
|
||||||
@ -228,7 +210,7 @@ def test_get_step():
|
|||||||
duration: 24.668142
|
duration: 24.668142
|
||||||
state: success
|
state: success
|
||||||
try_number: 2
|
try_number: 2
|
||||||
hostname: airflow-worker-0.airflow-worker-discovery.ucp.svc.cluster.local
|
hostname: airflow-worker-1.airflow-worker-discovery.ucp.svc.cluster.local
|
||||||
unixname: airflow
|
unixname: airflow
|
||||||
job_id: 13
|
job_id: 13
|
||||||
pool:
|
pool:
|
||||||
@ -281,7 +263,7 @@ def test_get_step():
|
|||||||
actions_helper = action_helper.ActionsHelper(action_id=action_id)
|
actions_helper = action_helper.ActionsHelper(action_id=action_id)
|
||||||
|
|
||||||
# Retrieve step
|
# Retrieve step
|
||||||
step_id = 'armada_get_status' # task_id in db
|
step_id = 'armada_post_apply' # task_id in db
|
||||||
|
|
||||||
# test backward compatibility with no additional param
|
# test backward compatibility with no additional param
|
||||||
step = actions_helper.get_step(step_id)
|
step = actions_helper.get_step(step_id)
|
||||||
|
@ -29,7 +29,6 @@ from shipyard_airflow.control.action.action_validators import (
|
|||||||
validate_deployment_action_full,
|
validate_deployment_action_full,
|
||||||
validate_intermediate_commits,
|
validate_intermediate_commits,
|
||||||
validate_target_nodes,
|
validate_target_nodes,
|
||||||
validate_test_cleanup
|
|
||||||
)
|
)
|
||||||
from shipyard_airflow.errors import ApiError
|
from shipyard_airflow.errors import ApiError
|
||||||
from tests.unit.common.deployment_group.node_lookup_stubs import node_lookup
|
from tests.unit.common.deployment_group.node_lookup_stubs import node_lookup
|
||||||
@ -273,22 +272,6 @@ class TestActionValidator:
|
|||||||
)
|
)
|
||||||
assert apie.value.title == 'Invalid target_nodes parameter'
|
assert apie.value.title == 'Invalid target_nodes parameter'
|
||||||
|
|
||||||
def test_validate_test_cleanup(self, **args):
|
|
||||||
"""Test that the validate_test_cleanup validator enforces an optional,
|
|
||||||
boolean value.
|
|
||||||
"""
|
|
||||||
# No cleanup param provided
|
|
||||||
validate_test_cleanup(self._action(None))
|
|
||||||
|
|
||||||
# Valid cleanup params
|
|
||||||
validate_test_cleanup(self._action({'cleanup': 'True'}))
|
|
||||||
validate_test_cleanup(self._action({'cleanup': 'false'}))
|
|
||||||
|
|
||||||
# Bad cleanup params
|
|
||||||
with pytest.raises(ApiError):
|
|
||||||
validate_test_cleanup(self._action({'cleanup': 'string'}))
|
|
||||||
validate_test_cleanup(self._action({'cleanup': '10000'}))
|
|
||||||
|
|
||||||
def test_validate_committed_revision(self, *args):
|
def test_validate_committed_revision(self, *args):
|
||||||
"""Test the committed revision validator"""
|
"""Test the committed revision validator"""
|
||||||
validate_committed_revision(self._action(None))
|
validate_committed_revision(self._action(None))
|
||||||
|
@ -620,22 +620,21 @@ def test_create_targeted_action_no_committed(basic_val, *args):
|
|||||||
@mock.patch('shipyard_airflow.control.action.action_validators'
|
@mock.patch('shipyard_airflow.control.action.action_validators'
|
||||||
'.validate_target_nodes',
|
'.validate_target_nodes',
|
||||||
side_effect=Exception('purposeful'))
|
side_effect=Exception('purposeful'))
|
||||||
@mock.patch('shipyard_airflow.control.action.action_validators'
|
|
||||||
'.validate_test_cleanup',
|
|
||||||
side_effect=Exception('purposeful'))
|
|
||||||
@mock.patch('shipyard_airflow.policy.check_auth')
|
@mock.patch('shipyard_airflow.policy.check_auth')
|
||||||
def test_auth_alignment(auth, *args):
|
def test_auth_alignment(auth, *args):
|
||||||
action_resource = _gen_action_resource_stubbed()
|
action_resource = _gen_action_resource_stubbed()
|
||||||
for action_name, action_cfg in actions_api._action_mappings().items():
|
for action_name, action_cfg in actions_api._action_mappings().items():
|
||||||
with pytest.raises(Exception) as ex:
|
# Only test if validate returns
|
||||||
action = action_resource.create_action(
|
if action_cfg['validators']:
|
||||||
action={'name': action_name},
|
with pytest.raises(Exception) as ex:
|
||||||
context=context,
|
action = action_resource.create_action(
|
||||||
allow_intermediate_commits=False)
|
action={'name': action_name},
|
||||||
assert 'purposeful' in str(ex)
|
context=context,
|
||||||
assert auth.called_with(action_cfg['rbac_policy'])
|
allow_intermediate_commits=False)
|
||||||
assert (action_cfg['rbac_policy'] ==
|
assert 'purposeful' in str(ex)
|
||||||
'workflow_orchestrator:action_{}'.format(action_name))
|
assert auth.called_with(action_cfg['rbac_policy'])
|
||||||
|
assert (action_cfg['rbac_policy'] ==
|
||||||
|
'workflow_orchestrator:action_{}'.format(action_name))
|
||||||
|
|
||||||
|
|
||||||
@patch('shipyard_airflow.db.shipyard_db.ShipyardDbAccess.'
|
@patch('shipyard_airflow.db.shipyard_db.ShipyardDbAccess.'
|
||||||
|
@ -30,7 +30,6 @@ from shipyard_airflow.plugins.ucp_base_operator import \
|
|||||||
CONF_FILE = os.path.join(os.path.dirname(__file__), 'test.conf')
|
CONF_FILE = os.path.join(os.path.dirname(__file__), 'test.conf')
|
||||||
|
|
||||||
ACTION_PARAMS = {
|
ACTION_PARAMS = {
|
||||||
'cleanup': True,
|
|
||||||
'release': 'glance'
|
'release': 'glance'
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,7 +58,6 @@ class TestArmadaTestReleasesOperator:
|
|||||||
for release in release_list:
|
for release in release_list:
|
||||||
calls.append(mock.call(
|
calls.append(mock.call(
|
||||||
release=release,
|
release=release,
|
||||||
query=dict(),
|
|
||||||
timeout=None))
|
timeout=None))
|
||||||
mock_client.get_test_release.assert_has_calls(calls, any_order=True)
|
mock_client.get_test_release.assert_has_calls(calls, any_order=True)
|
||||||
|
|
||||||
@ -76,11 +74,9 @@ class TestArmadaTestReleasesOperator:
|
|||||||
op.do_execute()
|
op.do_execute()
|
||||||
|
|
||||||
# Verify Armada client called for single release with action params
|
# Verify Armada client called for single release with action params
|
||||||
cleanup = ACTION_PARAMS['cleanup']
|
|
||||||
release = ACTION_PARAMS['release']
|
release = ACTION_PARAMS['release']
|
||||||
mock_client.get_test_release.assert_called_once_with(
|
mock_client.get_test_release.assert_called_once_with(
|
||||||
release=release,
|
release=release,
|
||||||
query=dict(cleanup=cleanup),
|
|
||||||
timeout=None)
|
timeout=None)
|
||||||
|
|
||||||
# Verify test results logged
|
# Verify test results logged
|
||||||
|
@ -57,7 +57,6 @@ relabel_nodes
|
|||||||
test_site
|
test_site
|
||||||
Triggers the Helm tests for the site, using parameters to control the
|
Triggers the Helm tests for the site, using parameters to control the
|
||||||
tests:
|
tests:
|
||||||
--param="cleanup=true" to delete the test pods immediately after execution
|
|
||||||
--param="release=release-name" to target a specific Helm release instead of
|
--param="release=release-name" to target a specific Helm release instead of
|
||||||
all releases (the default if this parameter is not specified).
|
all releases (the default if this parameter is not specified).
|
||||||
'''
|
'''
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
# We will need to pass the name of the helm release to test. It is mandatory.
|
# We will need to pass the name of the helm release to test. It is mandatory.
|
||||||
# cleanup may also be passed. By default, test pods will be cleaned up.
|
|
||||||
# we can execute the script in the following manner:
|
# we can execute the script in the following manner:
|
||||||
#
|
#
|
||||||
# $ ./test_release.sh helm_release
|
# $ ./test_release.sh helm_release
|
||||||
@ -28,10 +27,9 @@ fi
|
|||||||
|
|
||||||
# Define Variables
|
# Define Variables
|
||||||
helm_release=$1
|
helm_release=$1
|
||||||
cleanup=${2:-true}
|
|
||||||
|
|
||||||
# Source environment variables
|
# Source environment variables
|
||||||
source set_env
|
source set_env
|
||||||
|
|
||||||
# Execute shipyard action for test_site
|
# Execute shipyard action for test_site
|
||||||
bash execute_shipyard_action.sh 'test_site' --param="release=${helm_release}" --param="cleanup=${cleanup}"
|
bash execute_shipyard_action.sh 'test_site' --param="release=${helm_release}"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user