Переглянути джерело

Build system: Use 'picocms/pico-composer' to create release archives

Daniel Rudolf 7 роки тому
батько
коміт
1dee2c1cf6
3 змінених файлів з 78 додано та 17 видалено
  1. 2 2
      .travis.yml
  2. 76 0
      _build/create-release.sh
  3. 0 15
      _build/install.sh

+ 2 - 2
.travis.yml

@@ -34,11 +34,11 @@ jobs:
     - stage: release
       install:
         - '[ -n "$TRAVIS_TAG" ] || travis_terminate 0'
-        - install.sh --release
+        - install.sh
       script:
         - deploy-release.sh
       before_deploy:
-        - create-release-archive.sh "pico-release-$TRAVIS_TAG.tar.gz"
+        - create-release.sh "pico-release-$TRAVIS_TAG.tar.gz"
       deploy:
         provider: releases
         api_key: ${GITHUB_OAUTH_TOKEN}

+ 76 - 0
_build/create-release.sh

@@ -0,0 +1,76 @@
+#!/usr/bin/env bash
+set -e
+
+. "$(dirname "$0")/functions/parse-version.sh.inc"
+export PATH="$(dirname "$0")/tools:$PATH"
+
+DEPLOYMENT_ID="${TRAVIS_TAG//\//_}"
+DEPLOYMENT_DIR="$TRAVIS_BUILD_DIR/_build/release-$DEPLOYMENT_ID.git"
+
+[ -n "$RELEASE_REPO_SLUG" ] || export RELEASE_REPO_SLUG="$TRAVIS_REPO_SLUG"
+[ -n "$RELEASE_REPO_BRANCH" ] || export RELEASE_REPO_BRANCH="master"
+
+# parameters
+ARCHIVE="$1"    # release archive file name
+
+if [ -z "$ARCHIVE" ]; then
+    echo "Unable to create release archive: No file name specified" >&2
+    exit 1
+fi
+
+# parse version
+if ! parse_version "$TRAVIS_TAG"; then
+    echo "Unable to create release archive: Invalid version '$TRAVIS_TAG'" >&2
+    exit 1
+fi
+
+# clone repo
+github-clone.sh "$DEPLOYMENT_DIR" "https://github.com/$RELEASE_REPO_SLUG.git" "$RELEASE_REPO_BRANCH"
+
+cd "$DEPLOYMENT_DIR"
+
+# force Pico version
+echo "Updating composer dependencies..."
+composer require --no-update \
+    "picocms/pico $VERSION_FULL@$VERSION_STABILITY" \
+    "picocms/pico-theme $VERSION_FULL@$VERSION_STABILITY" \
+    "picocms/pico-deprecated $VERSION_FULL@$VERSION_STABILITY"
+echo
+
+# install dependencies
+echo "Running \`composer install\`..."
+composer install --no-suggest --prefer-dist --no-dev --optimize-autoloader
+echo
+
+# prepare release
+echo "Replacing 'index.php'..."
+cp vendor/picocms/pico/index.php.dist index.php
+
+echo "Preparing 'composer.json' for release..."
+composer require --no-update \
+    "picocms/pico ^$VERSION_MILESTONE" \
+    "picocms/pico-theme ^$VERSION_MILESTONE" \
+    "picocms/pico-deprecated ^$VERSION_MILESTONE"
+
+echo "Removing '.git' directory and '.gitignore' file..."
+rm -f .gitignore
+rm -rf .git
+
+echo "Removing '.git' directories of dependencies..."
+find vendor/ -type d -path 'vendor/*/*/.git' -print0 | xargs -0 rm -rf
+find themes/ -type d -path 'themes/*/.git' -print0 | xargs -0 rm -rf
+find plugins/ -type d -path 'plugins/*/.git' -print0 | xargs -0 rm -rf
+
+echo
+
+# create release archive
+echo "Creating release archive '$ARCHIVE'..."
+
+if [ -e "$ARCHIVE" ]; then
+    echo "Unable to create release archive: File exists" >&2
+    exit 1
+fi
+
+find . -mindepth 1 -maxdepth 1 -printf '%f\0' \
+    | xargs -0 -- tar -czf "$ARCHIVE" --
+echo

+ 0 - 15
_build/install.sh

@@ -5,21 +5,6 @@ if [ -n "$GITHUB_OAUTH_TOKEN" ]; then
     composer config --global github-oauth.github.com "$GITHUB_OAUTH_TOKEN"
 fi
 
-if [ "$1" == "--release" ]; then
-    # install dependencies
-    echo "Running \`composer install\`..."
-    composer install --no-dev --optimize-autoloader
-    [ $? -eq 0 ] || exit 1
-    echo
-
-    # remove .git dirs
-    echo "Removing '.git' directories of dependencies..."
-    find vendor/ -type d -path 'vendor/*/*/.git' -print0 | xargs -0 rm -rf
-    echo
-
-    exit 0
-fi
-
 # set COMPOSER_ROOT_VERSION when necessary
 if [ -z "$COMPOSER_ROOT_VERSION" ] && [ -z "$TRAVIS_TAG" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
     PICO_VERSION_PATTERN="$(php -r "