132 lines
No EOL
3.8 KiB
YAML
132 lines
No EOL
3.8 KiB
YAML
image: php:8.2
|
|
|
|
stages:
|
|
- setup
|
|
- build
|
|
- docker
|
|
- publish
|
|
|
|
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 debian package using the Makefile
|
|
build-debian:
|
|
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 deb
|
|
artifacts:
|
|
paths:
|
|
- build/*.deb
|
|
|
|
# Build the Alpine Docker image
|
|
docker-alpine:
|
|
image: docker:latest
|
|
stage: docker
|
|
services:
|
|
- docker:dind
|
|
before_script:
|
|
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
|
|
script:
|
|
- |
|
|
if [[ "$CI_COMMIT_BRANCH" == "master" ]]; then
|
|
DOCKER_TAG="latest"
|
|
elif [[ ! -z "$CI_COMMIT_TAG" ]]; then
|
|
DOCKER_TAG="$CI_COMMIT_TAG"
|
|
else
|
|
DOCKER_TAG="$CI_COMMIT_REF_SLUG"
|
|
fi
|
|
- docker build -f Dockerfile -t $CI_REGISTRY_IMAGE:$DOCKER_TAG .
|
|
- docker push $CI_REGISTRY_IMAGE:$DOCKER_TAG
|
|
rules:
|
|
- exists:
|
|
- Dockerfile
|
|
|
|
# Build the Debian Docker image
|
|
docker-debian:
|
|
image: docker:latest
|
|
stage: docker
|
|
services:
|
|
- docker:dind
|
|
before_script:
|
|
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
|
|
script:
|
|
- |
|
|
if [[ "$CI_COMMIT_BRANCH" == "master" ]]; then
|
|
DOCKER_TAG="debian"
|
|
elif [[ ! -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:
|
|
- exists:
|
|
- Dockerfile.debian
|
|
|
|
# Publish the tarball and Debian package to the GitLab Package Registry
|
|
publish:
|
|
stage: publish
|
|
script:
|
|
- |
|
|
if [[ ! -z "$CI_COMMIT_TAG" ]]; then
|
|
PACKAGE_NAME=$CI_COMMIT_TAG
|
|
FILE_NAME_TAR="ncc-$CI_COMMIT_TAG.tar.gz"
|
|
FILE_NAME_DEB="ncc-$CI_COMMIT_TAG.deb"
|
|
else
|
|
BRANCH_NAME=$(echo $CI_COMMIT_REF_NAME | sed 's/\//-/g')
|
|
COMMIT_ID=${CI_COMMIT_SHORT_SHA}
|
|
PACKAGE_NAME="$BRANCH_NAME-$COMMIT_ID"
|
|
FILE_NAME_TAR="ncc-$PACKAGE_NAME.tar.gz"
|
|
FILE_NAME_DEB="ncc-$PACKAGE_NAME.deb"
|
|
fi
|
|
|
|
mv build/*.tar.gz build/$FILE_NAME_TAR
|
|
mv build/*.deb build/$FILE_NAME_DEB
|
|
echo "Package Name: $PACKAGE_NAME"
|
|
echo "Tarball File Name: $FILE_NAME_TAR"
|
|
echo "Debian Package File Name: $FILE_NAME_DEB"
|
|
|
|
# Upload the tarball
|
|
curl --header "JOB-TOKEN: $CI_JOB_TOKEN" \
|
|
--upload-file build/$FILE_NAME_TAR \
|
|
"https://$CI_SERVER_HOST/api/v4/projects/$CI_PROJECT_ID/packages/generic/$PACKAGE_NAME/$CI_PIPELINE_ID/$FILE_NAME_TAR"
|
|
|
|
# Upload the Debian package
|
|
curl --header "JOB-TOKEN: $CI_JOB_TOKEN" \
|
|
--upload-file build/$FILE_NAME_DEB \
|
|
"https://$CI_SERVER_HOST/api/v4/projects/$CI_PROJECT_ID/packages/generic/$PACKAGE_NAME/$CI_PIPELINE_ID/$FILE_NAME_DEB"
|
|
only:
|
|
- branches
|
|
- tags |