image: php:8.2 stages: - setup - build - build-docker - publish - publish-docker before_script: - apt update -yqq - apt install -yqq git libzip-dev zip make wget gnupg2 libonig-dev libcurl4-openssl-dev - apt-get clean # Prepare the environment setup: stage: setup script: - docker-php-ext-install mbstring ctype posix zip curl fileinfo # Build the project using the Makefile build: stage: build script: - wget -O phive.phar https://phar.io/releases/phive.phar - wget -O phive.phar.asc https://phar.io/releases/phive.phar.asc - chmod +x phive.phar - mv phive.phar /usr/local/bin/phive - phive install phpab --global --trust-gpg-keys 0x2A8299CE842DD38C - make autoload - make redist - make tar artifacts: paths: - build/*.tar.gz # Build the Alpine Docker image ncc-docker-build: image: docker:latest stage: build-docker services: - docker:dind before_script: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY script: - | if [[ ! -z "$CI_COMMIT_TAG" ]]; then DOCKER_TAG="$CI_COMMIT_TAG-alpine" else DOCKER_TAG="$CI_COMMIT_REF_SLUG-alpine" fi - docker build -f Dockerfile -t $CI_REGISTRY_IMAGE:$DOCKER_TAG . - docker push $CI_REGISTRY_IMAGE:$DOCKER_TAG rules: - if: $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_BRANCH == 'dev' exists: - Dockerfile # Build the Debian Docker image ncc-docker-build-debian: image: docker:latest stage: build-docker services: - docker:dind before_script: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY script: - | if [[ ! -z "$CI_COMMIT_TAG" ]]; then DOCKER_TAG="$CI_COMMIT_TAG-debian" else DOCKER_TAG="$CI_COMMIT_REF_SLUG-debian" fi - docker build -f Dockerfile.debian -t $CI_REGISTRY_IMAGE:$DOCKER_TAG . - docker push $CI_REGISTRY_IMAGE:$DOCKER_TAG rules: - if: $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_BRANCH == 'dev' exists: - Dockerfile.debian # Publish the package publish: stage: publish script: - | if [[ ! -z "$CI_COMMIT_TAG" ]]; then PACKAGE_NAME=$CI_COMMIT_TAG FILE_NAME="ncc-$CI_COMMIT_TAG.tar.gz" else PACKAGE_NAME=$CI_COMMIT_REF_NAME FILE_NAME="ncc-$CI_COMMIT_REF_NAME.tar.gz" fi mv build/*.tar.gz build/$FILE_NAME echo "Package Name: $PACKAGE_NAME" echo "File Name: $FILE_NAME" curl --header "JOB-TOKEN: $CI_JOB_TOKEN" \ --upload-file build/$FILE_NAME \ "https://$CI_SERVER_HOST/api/v4/projects/$CI_PROJECT_ID/packages/generic/$PACKAGE_NAME/$CI_PIPELINE_ID/$FILE_NAME" only: - branches - tags