ci: delete obsolete files and move scripts/ci-lite/ to scripts/ci/
This commit is contained in:
147
scripts/ci/publish-build-artifacts.sh
Executable file
147
scripts/ci/publish-build-artifacts.sh
Executable file
@ -0,0 +1,147 @@
|
||||
#!/bin/bash
|
||||
set -e -x
|
||||
|
||||
|
||||
# Find the most recent tag that is reachable from the current commit.
|
||||
# This is shallow clone of the repo, so we might need to fetch more commits to
|
||||
# find the tag.
|
||||
function getLatestTag {
|
||||
local depth=`git log --oneline | wc -l`
|
||||
local latestTag=`git describe --tags --abbrev=0 || echo NOT_FOUND`
|
||||
|
||||
while [ "$latestTag" == "NOT_FOUND" ]; do
|
||||
# Avoid infinite loop.
|
||||
if [ "$depth" -gt "1000" ]; then
|
||||
echo "Error: Unable to find the latest tag." 1>&2
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
# Increase the clone depth and look for a tag.
|
||||
depth=$((depth + 50))
|
||||
git fetch --depth=$depth
|
||||
latestTag=`git describe --tags --abbrev=0 || echo NOT_FOUND`
|
||||
done
|
||||
|
||||
echo $latestTag;
|
||||
}
|
||||
|
||||
function publishRepo {
|
||||
COMPONENT=$1
|
||||
ARTIFACTS_DIR=$2
|
||||
|
||||
BUILD_REPO="${COMPONENT}-builds"
|
||||
REPO_DIR="tmp/${BUILD_REPO}"
|
||||
|
||||
if [ -n "$CREATE_REPOS" ]; then
|
||||
curl -u "$ORG:$TOKEN" https://api.github.com/user/repos \
|
||||
-d '{"name":"'$BUILD_REPO'", "auto_init": true}'
|
||||
fi
|
||||
|
||||
echo "Pushing build artifacts to ${ORG}/${BUILD_REPO}"
|
||||
|
||||
# create local repo folder and clone build repo into it
|
||||
rm -rf $REPO_DIR
|
||||
mkdir -p $REPO_DIR
|
||||
(
|
||||
cd $REPO_DIR && \
|
||||
git init && \
|
||||
git remote add origin $REPO_URL && \
|
||||
# use the remote branch if it exists
|
||||
if git ls-remote --exit-code origin ${BRANCH}; then
|
||||
git fetch origin ${BRANCH} --depth=1 && \
|
||||
git checkout origin/${BRANCH}
|
||||
fi
|
||||
git checkout -b "${BRANCH}"
|
||||
)
|
||||
|
||||
# copy over build artifacts into the repo directory
|
||||
rm -rf $REPO_DIR/*
|
||||
cp -R $ARTIFACTS_DIR/* $REPO_DIR/
|
||||
|
||||
# Replace $$ANGULAR_VERSION$$ with the build version.
|
||||
BUILD_VER="${LATEST_TAG}+${SHORT_SHA}"
|
||||
if [[ ${TRAVIS} ]]; then
|
||||
find $REPO_DIR/ -type f -name package.json -print0 | xargs -0 sed -i "s/\\\$\\\$ANGULAR_VERSION\\\$\\\$/${BUILD_VER}/g"
|
||||
|
||||
# Find umd.js and umd.min.js
|
||||
UMD_FILES=$(find $REPO_DIR/ -type f -name "*.umd*.js" -print)
|
||||
for UMD_FILE in ${UMD_FILES}; do
|
||||
sed -i "s/\\\$\\\$ANGULAR_VERSION\\\$\\\$/${BUILD_VER}/g" ${UMD_FILE}
|
||||
done
|
||||
|
||||
(
|
||||
cd $REPO_DIR && \
|
||||
git config credential.helper "store --file=.git/credentials" && \
|
||||
echo "https://${GITHUB_TOKEN_ANGULAR}:@github.com" > .git/credentials
|
||||
)
|
||||
fi
|
||||
echo `date` > $REPO_DIR/BUILD_INFO
|
||||
echo $SHA >> $REPO_DIR/BUILD_INFO
|
||||
|
||||
(
|
||||
cd $REPO_DIR && \
|
||||
git config user.name "${COMMITTER_USER_NAME}" && \
|
||||
git config user.email "${COMMITTER_USER_EMAIL}" && \
|
||||
git add --all && \
|
||||
git commit -m "${COMMIT_MSG}" && \
|
||||
git tag "${BUILD_VER}" && \
|
||||
git push origin "${BRANCH}" --tags --force
|
||||
)
|
||||
}
|
||||
|
||||
# Publish all individual packages from packages-dist.
|
||||
function publishPackages {
|
||||
GIT_SCHEME=$1
|
||||
PKGS_DIST=$2
|
||||
BRANCH=$3
|
||||
|
||||
for dir in $PKGS_DIST/*/ dist/tools/@angular/tsc-wrapped
|
||||
do
|
||||
COMPONENT="$(basename ${dir})"
|
||||
|
||||
# Replace _ with - in component name.
|
||||
COMPONENT="${COMPONENT//_/-}"
|
||||
JS_BUILD_ARTIFACTS_DIR="${dir}"
|
||||
|
||||
if [[ "$GIT_SCHEME" == "ssh" ]]; then
|
||||
REPO_URL="git@github.com:${ORG}/${COMPONENT}-builds.git"
|
||||
elif [[ "$GIT_SCHEME" == "http" ]]; then
|
||||
REPO_URL="https://github.com/${ORG}/${COMPONENT}-builds.git"
|
||||
else
|
||||
die "Don't have a way to publish to scheme $GIT_SCHEME"
|
||||
fi
|
||||
SHA=`git rev-parse HEAD`
|
||||
SHORT_SHA=`git rev-parse --short HEAD`
|
||||
COMMIT_MSG=`git log --oneline | head -n1`
|
||||
COMMITTER_USER_NAME=`git --no-pager show -s --format='%cN' HEAD`
|
||||
COMMITTER_USER_EMAIL=`git --no-pager show -s --format='%cE' HEAD`
|
||||
LATEST_TAG=`getLatestTag`
|
||||
|
||||
publishRepo "${COMPONENT}" "${JS_BUILD_ARTIFACTS_DIR}"
|
||||
done
|
||||
|
||||
echo "Finished publishing build artifacts"
|
||||
}
|
||||
|
||||
# See DEVELOPER.md for help
|
||||
CUR_BRANCH=${TRAVIS_BRANCH:-$(git symbolic-ref --short HEAD)}
|
||||
if [ $# -gt 0 ]; then
|
||||
ORG=$1
|
||||
publishPackages "ssh" dist/packages-dist $CUR_BRANCH
|
||||
if [[ -e dist/packages-dist-es2015 ]]; then
|
||||
publishPackages "ssh" dist/packages-dist-es2015 ${CUR_BRANCH}-es2015
|
||||
fi
|
||||
|
||||
elif [[ \
|
||||
"$TRAVIS_REPO_SLUG" == "angular/angular" && \
|
||||
"$TRAVIS_PULL_REQUEST" == "false" && \
|
||||
"$CI_MODE" == "e2e" ]]; then
|
||||
ORG="angular"
|
||||
publishPackages "http" dist/packages-dist $CUR_BRANCH
|
||||
if [[ -e dist/packages-dist-es2015 ]]; then
|
||||
publishPackages "http" dist/packages-dist-es2015 ${CUR_BRANCH}-es2015
|
||||
fi
|
||||
|
||||
else
|
||||
echo "Not building the upstream/${CUR_BRANCH} branch, build artifacts won't be published."
|
||||
fi
|
Reference in New Issue
Block a user