diff --git a/drone/GiteaComposerPackage.yml b/drone/GiteaComposerPackage.yml new file mode 100644 index 0000000..97611aa --- /dev/null +++ b/drone/GiteaComposerPackage.yml @@ -0,0 +1,48 @@ +.GiteaComposerPackage: &GiteaComposerPackage + name: GiteaComposerPackage + image: composer:2 + + environment: + VERSION_COMMIT_ENABLE: "true" + VERSION_REF_NORMALIZED_ENABLE: "true" + commands: + # drone does not support expanding vars in environment values, set defaults via bash + - if [[ -z "$COMPOSER_PACKAGE_DIR" ]]; then COMPOSER_PACKAGE_DIR=$DRONE_WORKSPACE_BASE; fi + - TEMP_DIR=$(mktemp -d) + - COMPOSER_PACKAGE_FILE=$TEMP_DIR/package.zip + + # unset ".version" in composer.json as it interfers with setting version via GET param ?version= + - | + apk add --no-cache jq + jq 'del(.version)' $COMPOSER_PACKAGE_DIR/composer.json > $COMPOSER_PACKAGE_DIR/composer.json.tmp + mv $COMPOSER_PACKAGE_DIR/composer.json.tmp $COMPOSER_PACKAGE_DIR/composer.json + + # create zip + - zip -r $COMPOSER_PACKAGE_FILE $COMPOSER_PACKAGE_DIR + + # prepare upload helper function + - | + function upload_composer_package() { + VERSION=$1 + echo "# uploading package to $GITEA_PACKAGES_API/$CI_PROJECT_NAMESPACE/composer?version=$VERSION" + curl --user "$CI_REGISTRY_USER:$CI_REGISTRY_PASSWORD" \ + --upload-file $COMPOSER_PACKAGE_FILE \ + $GITEA_PACKAGES_API/$CI_PROJECT_NAMESPACE/composer?version=$VERSION + } + + # add tag for reference if available using normalization + # - attempt to build tag first + # - attempt to build branch if not a PR (if not PR for extra security, variable description on drone unclear) + - | + if [[ "$VERSION_REF_NORMALIZED_ENABLE" == "true" ]] && [[ ! -z $DRONE_TAG ]]; then + REF_TAG_NORMALIZED=$(echo $DRONE_TAG | sed s:/:-:g | sed -e "s/^v//") + upload_composer_package "$REF_TAG_NORMALIZED" + elif [[ "$VERSION_REF_NORMALIZED_ENABLE" == "true" ]] && [[ -z "$DRONE_PULL_REQUEST" ]] && [[ ! -z $DRONE_BRANCH ]]; then + REF_TAG_NORMALIZED=$(echo $DRONE_BRANCH | sed s:/:-:g) + upload_composer_package "0.0.0-dev-$REF_TAG_NORMALIZED" + + # version based on commit + if [[ "$VERSION_COMMIT_ENABLE" == "true" ]]; then + upload_composer_package "0.0.0-dev-$REF_TAG_NORMALIZED-commit-$CI_COMMIT_SHA" + fi + fi