mirror of
https://github.com/elastic/logstash.git
synced 2025-04-24 14:47:19 -04:00
[ci] Backport Buildkite DRA pipeline+scripts to 8.10 (#15392)
This is a backport of the DRA pipeline and related scripts from: - #15366 - #15365 - #15356 - #15352 - #15344 - #15343 - #15337 - #15312 Note that it's a manual backport because some PRs (e.g. #15312) contain files (`catalog-info.yaml`) that should only live on the `main` branch.
This commit is contained in:
parent
63339bee98
commit
bdc7f26c23
8 changed files with 474 additions and 0 deletions
90
.buildkite/dra/build_docker.sh
Executable file
90
.buildkite/dra/build_docker.sh
Executable file
|
@ -0,0 +1,90 @@
|
|||
#!/bin/bash -ie
|
||||
#Note - ensure that the -e flag is set to properly set the $? status if any command fails
|
||||
echo "####################################################################"
|
||||
echo "##################### Starting $0"
|
||||
echo "####################################################################"
|
||||
|
||||
source ./$(dirname "$0")/common.sh
|
||||
|
||||
# WORKFLOW_TYPE is a CI externally configured environment variable that could assume "snapshot" or "staging" values
|
||||
case "$WORKFLOW_TYPE" in
|
||||
snapshot)
|
||||
info "Building artifacts for the $WORKFLOW_TYPE workflow..."
|
||||
if [ -z "$VERSION_QUALIFIER_OPT" ]; then
|
||||
rake artifact:docker || error "artifact:docker build failed."
|
||||
rake artifact:docker_oss || error "artifact:docker_oss build failed."
|
||||
rake artifact:dockerfiles || error "artifact:dockerfiles build failed."
|
||||
if [ "$ARCH" != "aarch64" ]; then
|
||||
rake artifact:docker_ubi8 || error "artifact:docker_ubi8 build failed."
|
||||
fi
|
||||
else
|
||||
VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" rake artifact:docker || error "artifact:docker build failed."
|
||||
VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" rake artifact:docker_oss || error "artifact:docker_oss build failed."
|
||||
VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" rake artifact:dockerfiles || error "artifact:dockerfiles build failed."
|
||||
if [ "$ARCH" != "aarch64" ]; then
|
||||
VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" rake artifact:docker_ubi8 || error "artifact:docker_ubi8 build failed."
|
||||
fi
|
||||
# Qualifier is passed from CI as optional field and specify the version postfix
|
||||
# in case of alpha or beta releases:
|
||||
# e.g: 8.0.0-alpha1
|
||||
STACK_VERSION="${STACK_VERSION}-${VERSION_QUALIFIER_OPT}"
|
||||
fi
|
||||
STACK_VERSION=${STACK_VERSION}-SNAPSHOT
|
||||
info "Build complete, setting STACK_VERSION to $STACK_VERSION."
|
||||
;;
|
||||
staging)
|
||||
info "Building artifacts for the $WORKFLOW_TYPE workflow..."
|
||||
if [ -z "$VERSION_QUALIFIER_OPT" ]; then
|
||||
RELEASE=1 rake artifact:docker || error "artifact:docker build failed."
|
||||
RELEASE=1 rake artifact:docker_oss || error "artifact:docker_oss build failed."
|
||||
RELEASE=1 rake artifact:dockerfiles || error "artifact:dockerfiles build failed."
|
||||
if [ "$ARCH" != "aarch64" ]; then
|
||||
RELEASE=1 rake artifact:docker_ubi8 || error "artifact:docker_ubi8 build failed."
|
||||
fi
|
||||
else
|
||||
VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" RELEASE=1 rake artifact:docker || error "artifact:docker build failed."
|
||||
VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" RELEASE=1 rake artifact:docker_oss || error "artifact:docker_oss build failed."
|
||||
VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" RELEASE=1 rake artifact:dockerfiles || error "artifact:dockerfiles build failed."
|
||||
if [ "$ARCH" != "aarch64" ]; then
|
||||
VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" RELEASE=1 rake artifact:docker_ubi8 || error "artifact:docker_ubi8 build failed."
|
||||
fi
|
||||
# Qualifier is passed from CI as optional field and specify the version postfix
|
||||
# in case of alpha or beta releases:
|
||||
# e.g: 8.0.0-alpha1
|
||||
STACK_VERSION="${STACK_VERSION}-${VERSION_QUALIFIER_OPT}"
|
||||
fi
|
||||
info "Build complete, setting STACK_VERSION to $STACK_VERSION."
|
||||
;;
|
||||
*)
|
||||
error "Workflow (WORKFLOW_TYPE variable) is not set, exiting..."
|
||||
;;
|
||||
esac
|
||||
|
||||
info "Saving tar.gz for docker images"
|
||||
save_docker_tarballs "${ARCH}" "${STACK_VERSION}"
|
||||
|
||||
info "Generated Artifacts"
|
||||
for file in build/logstash-*; do shasum $file;done
|
||||
|
||||
info "Uploading DRA artifacts in buildkite's artifact store ..."
|
||||
# Note the deb, rpm tar.gz AARCH64 files generated has already been loaded by the build_packages.sh
|
||||
images="logstash logstash-oss"
|
||||
if [ "$ARCH" != "aarch64" ]; then
|
||||
# No logstash-ubi8 for AARCH64
|
||||
images="logstash logstash-oss logstash-ubi8"
|
||||
fi
|
||||
for image in ${images}; do
|
||||
buildkite-agent artifact upload "build/$image-${STACK_VERSION}-docker-image-${ARCH}.tar.gz"
|
||||
done
|
||||
|
||||
# Upload 'docker-build-context.tar.gz' files only when build x86_64, otherwise they will be
|
||||
# overwritten when building aarch64 (or viceversa).
|
||||
if [ "$ARCH" != "aarch64" ]; then
|
||||
for image in logstash logstash-oss logstash-ubi8 logstash-ironbank; do
|
||||
buildkite-agent artifact upload "build/${image}-${STACK_VERSION}-docker-build-context.tar.gz"
|
||||
done
|
||||
fi
|
||||
|
||||
echo "####################################################################"
|
||||
echo "##################### Finishing $0"
|
||||
echo "####################################################################"
|
58
.buildkite/dra/build_packages.sh
Executable file
58
.buildkite/dra/build_packages.sh
Executable file
|
@ -0,0 +1,58 @@
|
|||
#!/bin/bash -ie
|
||||
#Note - ensure that the -e flag is set to properly set the $? status if any command fails
|
||||
echo "####################################################################"
|
||||
echo "##################### Starting $0"
|
||||
echo "####################################################################"
|
||||
|
||||
source ./$(dirname "$0")/common.sh
|
||||
|
||||
# WORKFLOW_TYPE is a CI externally configured environment variable that could assume "snapshot" or "staging" values
|
||||
case "$WORKFLOW_TYPE" in
|
||||
snapshot)
|
||||
info "Building artifacts for the $WORKFLOW_TYPE workflow..."
|
||||
if [ -z "$VERSION_QUALIFIER_OPT" ]; then
|
||||
SKIP_DOCKER=1 rake artifact:all || error "rake artifact:all build failed."
|
||||
else
|
||||
# Qualifier is passed from CI as optional field and specify the version postfix
|
||||
# in case of alpha or beta releases:
|
||||
# e.g: 8.0.0-alpha1
|
||||
VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" SKIP_DOCKER=1 rake artifact:all || error "rake artifact:all build failed."
|
||||
STACK_VERSION="${STACK_VERSION}-${VERSION_QUALIFIER_OPT}"
|
||||
fi
|
||||
STACK_VERSION=${STACK_VERSION}-SNAPSHOT
|
||||
info "Build complete, setting STACK_VERSION to $STACK_VERSION."
|
||||
;;
|
||||
staging)
|
||||
info "Building artifacts for the $WORKFLOW_TYPE workflow..."
|
||||
if [ -z "$VERSION_QUALIFIER_OPT" ]; then
|
||||
RELEASE=1 SKIP_DOCKER=1 rake artifact:all || error "rake artifact:all build failed."
|
||||
else
|
||||
# Qualifier is passed from CI as optional field and specify the version postfix
|
||||
# in case of alpha or beta releases:
|
||||
# e.g: 8.0.0-alpha1
|
||||
VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" RELEASE=1 SKIP_DOCKER=1 rake artifact:all || error "rake artifact:all build failed."
|
||||
STACK_VERSION="${STACK_VERSION}-${VERSION_QUALIFIER_OPT}"
|
||||
fi
|
||||
info "Build complete, setting STACK_VERSION to $STACK_VERSION."
|
||||
;;
|
||||
*)
|
||||
error "Workflow (WORKFLOW_TYPE variable) is not set, exiting..."
|
||||
;;
|
||||
esac
|
||||
|
||||
info "Generated Artifacts"
|
||||
for file in build/logstash-*; do shasum $file;done
|
||||
|
||||
info "Creating dependencies report for ${STACK_VERSION}"
|
||||
mkdir -p build/distributions/dependencies-reports/
|
||||
bin/dependencies-report --csv=build/distributions/dependencies-reports/logstash-${STACK_VERSION}.csv
|
||||
|
||||
info "Generated dependencies report"
|
||||
shasum build/distributions/dependencies-reports/logstash-${STACK_VERSION}.csv
|
||||
|
||||
info "Uploading DRA artifacts in buildkite's artifact store ..."
|
||||
buildkite-agent artifact upload "build/logstash*;build/distributions/dependencies-reports/logstash*"
|
||||
|
||||
echo "####################################################################"
|
||||
echo "##################### Finishing $0"
|
||||
echo "####################################################################"
|
46
.buildkite/dra/common.sh
Executable file
46
.buildkite/dra/common.sh
Executable file
|
@ -0,0 +1,46 @@
|
|||
function info {
|
||||
echo "--- INFO: $1"
|
||||
}
|
||||
|
||||
function error {
|
||||
echo "--- ERROR: $1"
|
||||
exit 1
|
||||
}
|
||||
|
||||
function save_docker_tarballs {
|
||||
local arch="${1:?architecture required}"
|
||||
local version="${2:?stack-version required}"
|
||||
local images="logstash logstash-oss"
|
||||
if [ "${arch}" != "aarch64" ]; then
|
||||
# No logstash-ubi8 for AARCH64
|
||||
images="logstash logstash-oss logstash-ubi8"
|
||||
fi
|
||||
|
||||
for image in ${images}; do
|
||||
tar_file="${image}-${version}-docker-image-${arch}.tar"
|
||||
docker save -o "build/${tar_file}" \
|
||||
"docker.elastic.co/logstash/${image}:${version}" || \
|
||||
error "Unable to save tar file ${tar_file} for ${image} image."
|
||||
# NOTE: if docker save exited with non-zero the error log already exited the script
|
||||
gzip "build/${tar_file}"
|
||||
done
|
||||
}
|
||||
|
||||
# Since we are using the system jruby, we need to make sure our jvm process
|
||||
# uses at least 1g of memory, If we don't do this we can get OOM issues when
|
||||
# installing gems. See https://github.com/elastic/logstash/issues/5179
|
||||
export JRUBY_OPTS="-J-Xmx1g"
|
||||
|
||||
# Extract the version number from the version.yml file
|
||||
# e.g.: 8.6.0
|
||||
# The suffix part like alpha1 etc is managed by the optional VERSION_QUALIFIER_OPT environment variable
|
||||
STACK_VERSION=`cat versions.yml | sed -n 's/^logstash\:[[:space:]]\([[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\)$/\1/p'`
|
||||
|
||||
info "Agent is running on architecture [$(uname -i)]"
|
||||
|
||||
export VERSION_QUALIFIER_OPT=${VERSION_QUALIFIER_OPT:-""}
|
||||
export DRA_DRY_RUN=${DRA_DRY_RUN:-""}
|
||||
|
||||
if [[ ! -z $DRA_DRY_RUN && $BUILDKITE_STEP_KEY == "logstash_publish_dra" ]]; then
|
||||
info "Release manager will run in dry-run mode [$DRA_DRY_RUN]"
|
||||
fi
|
23
.buildkite/dra/docker-env-setup.sh
Executable file
23
.buildkite/dra/docker-env-setup.sh
Executable file
|
@ -0,0 +1,23 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
DOCKER_REGISTRY="docker.elastic.co"
|
||||
DOCKER_REGISTRY_SECRET_PATH="kv/ci-shared/platform-ingest/docker_registry_prod"
|
||||
CI_DRA_ROLE_PATH="kv/ci-shared/release/dra-role"
|
||||
|
||||
|
||||
function docker_login {
|
||||
DOCKER_USERNAME_SECRET=$(retry -t 5 -- vault kv get -field user "${DOCKER_REGISTRY_SECRET_PATH}")
|
||||
DOCKER_PASSWORD_SECRET=$(retry -t 5 -- vault kv get -field password "${DOCKER_REGISTRY_SECRET_PATH}")
|
||||
docker login -u "${DOCKER_USERNAME_SECRET}" -p "${DOCKER_PASSWORD_SECRET}" "${DOCKER_REGISTRY}" 2>/dev/null
|
||||
unset DOCKER_USERNAME_SECRET DOCKER_PASSWORD_SECRET
|
||||
}
|
||||
|
||||
function release_manager_login {
|
||||
DRA_CREDS_SECRET=$(retry -t 5 -- vault kv get -field=data -format=json ${CI_DRA_ROLE_PATH})
|
||||
VAULT_ADDR_SECRET=$(echo ${DRA_CREDS_SECRET} | jq -r '.vault_addr')
|
||||
VAULT_ROLE_ID=$(echo ${DRA_CREDS_SECRET} | jq -r '.role_id')
|
||||
VAULT_SECRET_ID=$(echo ${DRA_CREDS_SECRET} | jq -r '.secret_id')
|
||||
export VAULT_ADDR_SECRET VAULT_ROLE_ID VAULT_SECRET_ID
|
||||
}
|
15
.buildkite/dra/docker-env-teardown.sh
Executable file
15
.buildkite/dra/docker-env-teardown.sh
Executable file
|
@ -0,0 +1,15 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Unset all variables ending with _SECRET or _TOKEN
|
||||
for var in $(printenv | sed 's;=.*;;' | sort); do
|
||||
if [[ $var != "VAULT_ADDR" && ("$var" == *_SECRET || "$var" == *_TOKEN || "$var" == *VAULT* ) ]]; then
|
||||
unset "$var"
|
||||
fi
|
||||
done
|
||||
|
||||
if command -v docker &>/dev/null; then
|
||||
DOCKER_REGISTRY="docker.elastic.co"
|
||||
docker logout $DOCKER_REGISTRY
|
||||
fi
|
131
.buildkite/dra/generatesteps.py
Normal file
131
.buildkite/dra/generatesteps.py
Normal file
|
@ -0,0 +1,131 @@
|
|||
import os
|
||||
import sys
|
||||
|
||||
import yaml
|
||||
|
||||
def to_bk_key_friendly_string(key):
|
||||
"""
|
||||
Convert and return key to an acceptable format for Buildkite's key: field
|
||||
Only alphanumerics, dashes and underscores are allowed.
|
||||
"""
|
||||
|
||||
mapping_table = str.maketrans({'.': '_'})
|
||||
|
||||
return key.translate(mapping_table)
|
||||
|
||||
def package_x86_step(branch, workflow_type):
|
||||
step = f'''
|
||||
- label: ":package: Build packages / {branch}-{workflow_type.upper()} DRA artifacts"
|
||||
key: "logstash_build_packages_dra"
|
||||
agents:
|
||||
provider: gcp
|
||||
imageProject: elastic-images-prod
|
||||
image: family/platform-ingest-logstash-ubuntu-2204
|
||||
machineType: "n2-standard-16"
|
||||
diskSizeGb: 200
|
||||
command: |
|
||||
export WORKFLOW_TYPE="{workflow_type}"
|
||||
export PATH="/opt/buildkite-agent/.rbenv/bin:/opt/buildkite-agent/.pyenv/bin:$PATH"
|
||||
eval "$(rbenv init -)"
|
||||
.buildkite/scripts/dra/build_packages.sh
|
||||
'''
|
||||
|
||||
return step
|
||||
|
||||
def package_x86_docker_step(branch, workflow_type):
|
||||
step = f'''
|
||||
- label: ":package: Build x86_64 Docker / {branch}-{workflow_type.upper()} DRA artifacts"
|
||||
key: "logstash_build_x86_64_docker_dra"
|
||||
agents:
|
||||
provider: gcp
|
||||
imageProject: elastic-images-prod
|
||||
image: family/platform-ingest-logstash-ubuntu-2204
|
||||
machineType: "n2-standard-16"
|
||||
diskSizeGb: 200
|
||||
command: |
|
||||
export WORKFLOW_TYPE="{workflow_type}"
|
||||
export PATH="/opt/buildkite-agent/.rbenv/bin:/opt/buildkite-agent/.pyenv/bin:$PATH"
|
||||
export ARCH="x86_64"
|
||||
eval "$(rbenv init -)"
|
||||
.buildkite/scripts/dra/build_docker.sh
|
||||
'''
|
||||
|
||||
return step
|
||||
|
||||
def package_aarch64_docker_step(branch, workflow_type):
|
||||
step = f'''
|
||||
- label: ":package: Build aarch64 Docker / {branch}-{workflow_type.upper()} DRA artifacts"
|
||||
key: "logstash_build_aarch64_docker_dra"
|
||||
agents:
|
||||
provider: aws
|
||||
imagePrefix: platform-ingest-logstash-ubuntu-2204-aarch64
|
||||
instanceType: "m6g.4xlarge"
|
||||
diskSizeGb: 200
|
||||
command: |
|
||||
export WORKFLOW_TYPE="{workflow_type}"
|
||||
export PATH="/opt/buildkite-agent/.rbenv/bin:/opt/buildkite-agent/.pyenv/bin:$PATH"
|
||||
export ARCH="aarch64"
|
||||
eval "$(rbenv init -)"
|
||||
.buildkite/scripts/dra/build_docker.sh
|
||||
'''
|
||||
|
||||
return step
|
||||
|
||||
def publish_dra_step(branch, workflow_type, depends_on):
|
||||
step = f'''
|
||||
- label: ":elastic-stack: Publish / {branch}-{workflow_type.upper()} DRA artifacts"
|
||||
key: "logstash_publish_dra"
|
||||
depends_on: "{depends_on}"
|
||||
agents:
|
||||
provider: gcp
|
||||
imageProject: elastic-images-prod
|
||||
image: family/platform-ingest-logstash-ubuntu-2204
|
||||
machineType: "n2-standard-16"
|
||||
diskSizeGb: 200
|
||||
command: |
|
||||
echo "+++ Restoring Artifacts"
|
||||
buildkite-agent artifact download "build/logstash*" .
|
||||
buildkite-agent artifact download "build/distributions/**/*" .
|
||||
echo "+++ Changing permissions for the release manager"
|
||||
sudo chown -R :1000 build
|
||||
echo "+++ Running DRA publish step"
|
||||
export WORKFLOW_TYPE="{workflow_type}"
|
||||
.buildkite/scripts/dra/publish.sh
|
||||
'''
|
||||
|
||||
return step
|
||||
|
||||
def build_steps_to_yaml(branch, workflow_type):
|
||||
steps = []
|
||||
steps.extend(yaml.safe_load(package_x86_step(branch, workflow_type)))
|
||||
steps.extend(yaml.safe_load(package_x86_docker_step(branch, workflow_type)))
|
||||
steps.extend(yaml.safe_load(package_aarch64_docker_step(branch, workflow_type)))
|
||||
|
||||
return steps
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
workflow_type = os.environ["WORKFLOW_TYPE"]
|
||||
except ImportError:
|
||||
print(f"Missing env variable WORKFLOW_TYPE. Use export WORKFLOW_TYPE=<staging|snapshot>\n.Exiting.")
|
||||
exit(1)
|
||||
|
||||
branch = os.environ["BUILDKITE_BRANCH"]
|
||||
|
||||
structure = {"steps": []}
|
||||
|
||||
# Group defining parallel steps that build and save artifacts
|
||||
group_key = to_bk_key_friendly_string(f"logstash_dra_{workflow_type}")
|
||||
|
||||
structure["steps"].append({
|
||||
"group": f":Build Artifacts - {workflow_type.upper()}",
|
||||
"key": group_key,
|
||||
"steps": build_steps_to_yaml(branch, workflow_type),
|
||||
})
|
||||
|
||||
# Final step: pull artifacts built above and publish them via the release-manager
|
||||
structure["steps"].extend(
|
||||
yaml.safe_load(publish_dra_step(branch, workflow_type, depends_on=group_key)),
|
||||
)
|
||||
|
||||
print(yaml.dump(structure, Dumper=yaml.Dumper, sort_keys=False))
|
100
.buildkite/dra/publish.sh
Executable file
100
.buildkite/dra/publish.sh
Executable file
|
@ -0,0 +1,100 @@
|
|||
#!/bin/bash -i
|
||||
set -euo pipefail
|
||||
|
||||
echo "####################################################################"
|
||||
echo "##################### Starting $0"
|
||||
echo "####################################################################"
|
||||
|
||||
source ./$(dirname "$0")/common.sh
|
||||
|
||||
PLAIN_STACK_VERSION=$STACK_VERSION
|
||||
|
||||
# This is the branch selector that needs to be passed to the release-manager
|
||||
# It has to be the name of the branch which originates the artifacts.
|
||||
RELEASE_VER=`cat versions.yml | sed -n 's/^logstash\:[[:space:]]\([[:digit:]]*\.[[:digit:]]*\)\.[[:digit:]]*$/\1/p'`
|
||||
if [ -n "$(git ls-remote --heads origin $RELEASE_VER)" ] ; then
|
||||
RELEASE_BRANCH=$RELEASE_VER
|
||||
else
|
||||
RELEASE_BRANCH=main
|
||||
fi
|
||||
|
||||
if [ -n "$VERSION_QUALIFIER_OPT" ]; then
|
||||
# Qualifier is passed from CI as optional field and specify the version postfix
|
||||
# in case of alpha or beta releases:
|
||||
# e.g: 8.0.0-alpha1
|
||||
STACK_VERSION="${STACK_VERSION}-${VERSION_QUALIFIER_OPT}"
|
||||
PLAIN_STACK_VERSION="${PLAIN_STACK_VERSION}-${VERSION_QUALIFIER_OPT}"
|
||||
fi
|
||||
|
||||
case "$WORKFLOW_TYPE" in
|
||||
snapshot)
|
||||
STACK_VERSION=${STACK_VERSION}-SNAPSHOT
|
||||
;;
|
||||
staging)
|
||||
;;
|
||||
*)
|
||||
error "Worklflow (WORKFLOW_TYPE variable) is not set, exiting..."
|
||||
;;
|
||||
esac
|
||||
|
||||
info "Uploading artifacts for ${WORKFLOW_TYPE} workflow on branch: ${RELEASE_BRANCH}"
|
||||
|
||||
if [ "$RELEASE_VER" != "7.17" ]; then
|
||||
# Version 7.17.x doesn't generates ARM artifacts for Darwin
|
||||
# TODO see if we need to do anything here
|
||||
:
|
||||
fi
|
||||
|
||||
# Deleting ubi8 for aarch64 for the time being. This image itself is not being built, and it is not expected
|
||||
# by the release manager.
|
||||
# See https://github.com/elastic/infra/blob/master/cd/release/release-manager/project-configs/8.5/logstash.gradle
|
||||
# for more details.
|
||||
# TODO filter it out when uploading artifacts instead
|
||||
rm -f build/logstash-ubi8-${STACK_VERSION}-docker-image-aarch64.tar.gz
|
||||
|
||||
info "Downloaded ARTIFACTS sha report"
|
||||
for file in build/logstash-*; do shasum $file;done
|
||||
|
||||
mv build/distributions/dependencies-reports/logstash-${STACK_VERSION}.csv build/distributions/dependencies-${STACK_VERSION}.csv
|
||||
|
||||
# set required permissions on artifacts and directory
|
||||
chmod -R a+r build/*
|
||||
chmod -R a+w build
|
||||
|
||||
chmod -R a+r $PWD/*
|
||||
chmod -R a+w $PWD
|
||||
|
||||
info "Setup docker credentials"
|
||||
# TODO disable tracing
|
||||
# set +o xtrace
|
||||
source ./$(dirname "$0")/docker-env-setup.sh
|
||||
release_manager_login
|
||||
|
||||
# ensure the latest image has been pulled
|
||||
docker pull docker.elastic.co/infra/release-manager:latest
|
||||
|
||||
info "Running the release manager ..."
|
||||
|
||||
# collect the artifacts for use with the unified build
|
||||
docker run --rm \
|
||||
--name release-manager \
|
||||
-e VAULT_ADDR="${VAULT_ADDR_SECRET}" \
|
||||
-e VAULT_ROLE_ID \
|
||||
-e VAULT_SECRET_ID \
|
||||
--mount type=bind,readonly=false,src="$PWD",target=/artifacts \
|
||||
docker.elastic.co/infra/release-manager:latest \
|
||||
cli collect \
|
||||
--project logstash \
|
||||
--branch ${RELEASE_BRANCH} \
|
||||
--commit "$(git rev-parse HEAD)" \
|
||||
--workflow "${WORKFLOW_TYPE}" \
|
||||
--version "${PLAIN_STACK_VERSION}" \
|
||||
--artifact-set main \
|
||||
${DRA_DRY_RUN}
|
||||
|
||||
info "Teardown logins"
|
||||
$(dirname "$0")/docker-env-teardown.sh
|
||||
|
||||
echo "####################################################################"
|
||||
echo "##################### Finishing $0"
|
||||
echo "####################################################################"
|
11
.buildkite/dra_pipeline.yml
Normal file
11
.buildkite/dra_pipeline.yml
Normal file
|
@ -0,0 +1,11 @@
|
|||
# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json
|
||||
|
||||
steps:
|
||||
- label: ":pipeline: Generate steps"
|
||||
command: |
|
||||
set -euo pipefail
|
||||
|
||||
echo "--- Building [${WORKFLOW_TYPE}] artifacts"
|
||||
python3 -m pip install pyyaml
|
||||
echo "--- Building dynamic pipeline steps"
|
||||
python3 .buildkite/scripts/dra/generatesteps.py | buildkite-agent pipeline upload
|
Loading…
Add table
Add a link
Reference in a new issue