 1050fa5546
			
		
	
	1050fa5546
	
	
	
		
			
			- improve mirror git repo management - minio s3 implementation needs endpoint_url - Remove image key from rebuild-index job - Remove image, rely on tags instead
		
			
				
	
	
		
			92 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #! /usr/bin/env bash
 | |
| 
 | |
| # Remember where we are initially, it's the repo cloned by gitlab-ci
 | |
| original_directory=$(pwd)
 | |
| . "${original_directory}/share/spack/setup-env.sh"
 | |
| 
 | |
| # Create a temporary working directory
 | |
| temp_dir=$(mktemp -d)
 | |
| trap 'rm -rf "$temp_dir"' INT TERM QUIT EXIT
 | |
| 
 | |
| if [ -z "${DOWNSTREAM_CI_REPO}" ] ; then
 | |
|     echo "ERROR: missing variable: DOWNSTREAM_CI_REPO" >&2
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| if [ -z "${SPACK_RELEASE_ENVIRONMENT_PATH}" ] ; then
 | |
|     echo "ERROR: missing variable: SPACK_RELEASE_ENVIRONMENT_PATH" >&2
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| if [ -z "${CDASH_AUTH_TOKEN}" ] ; then
 | |
|     echo "WARNING: missing variable: CDASH_AUTH_TOKEN" >&2
 | |
| else
 | |
|     token_file="${temp_dir}/cdash_auth_token"
 | |
|     echo ${CDASH_AUTH_TOKEN} > ${token_file}
 | |
| fi
 | |
| 
 | |
| if [ -z "${SPACK_RELEASE_ENVIRONMENT_REPO}" ] ; then
 | |
|     echo "Assuming spack repo contains environment" >&2
 | |
|     env_repo_dir=${original_directory}
 | |
| else
 | |
|     echo "Cloning ${SPACK_RELEASE_ENVIRONMENT_REPO} into ${temp_dir}/envrepo" >&2
 | |
|     cd ${temp_dir}
 | |
|     git clone ${SPACK_RELEASE_ENVIRONMENT_REPO} envrepo
 | |
|     cd envrepo
 | |
|     env_repo_dir=$(pwd)
 | |
| fi
 | |
| 
 | |
| current_branch="$CI_COMMIT_REF_NAME"
 | |
| 
 | |
| # Because want to see generated gitlab-ci file as an artifact,
 | |
| # we need to write it within the spack repo cloned by gitlab-ci.
 | |
| gen_ci_dir="${original_directory}/ci-generation"
 | |
| gen_ci_file="${gen_ci_dir}/.gitlab-ci.yml"
 | |
| mkdir -p ${gen_ci_dir}
 | |
| 
 | |
| env_dir="${env_repo_dir}/${SPACK_RELEASE_ENVIRONMENT_PATH}"
 | |
| 
 | |
| if [ ! -f "${env_dir}/spack.yaml" ] ; then
 | |
|     echo "ERROR: Cannot find spack environment file in ${env_dir}"
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| cd $env_dir
 | |
| 
 | |
| # The next commands generates the .gitlab-ci.yml (and optionally creates a
 | |
| # buildgroup in cdash)
 | |
| RELEASE_JOBS_ARGS=("--output-file" "${gen_ci_file}")
 | |
| if [ ! -z "${token_file}" ]; then
 | |
|     RELEASE_JOBS_ARGS+=("--cdash-credentials" "${token_file}")
 | |
| fi
 | |
| 
 | |
| spack release-jobs "${RELEASE_JOBS_ARGS[@]}"
 | |
| 
 | |
| if [[ $? -ne 0 ]]; then
 | |
|     echo "spack release-jobs command failed"
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| cd "$original_directory"
 | |
| mv .git "$temp_dir/original-git-dir"
 | |
| git init .
 | |
| 
 | |
| git config user.email "robot@spack.io"
 | |
| git config user.name "Spack Build Bot"
 | |
| 
 | |
| cp ${gen_ci_file} "${original_directory}/.gitlab-ci.yml"
 | |
| git add .
 | |
| 
 | |
| echo "git commit"
 | |
| commit_message="Auto-generated commit testing"
 | |
| commit_message="${commit_message} ${current_branch} (${CI_COMMIT_SHA})"
 | |
| git commit --message="${commit_message}"
 | |
| 
 | |
| echo "git push"
 | |
| git remote add origin "$DOWNSTREAM_CI_REPO"
 | |
| git push --force origin "master:multi-ci-${current_branch}"
 | |
| 
 | |
| rm -rf .git
 | |
| mv "$temp_dir/original-git-dir" .git
 | |
| git reset --hard HEAD
 |