ncc/.gitlab-ci.yml

132 lines
3.8 KiB
YAML
Raw Permalink Normal View History

2023-08-16 15:47:53 -04:00
image: php:8.2
stages:
- setup
- build
2023-10-07 12:30:22 +00:00
- docker
- publish
2023-08-16 15:47:53 -04:00
before_script:
- apt update -yqq
2023-08-16 15:58:07 -04:00
- apt install -yqq git libzip-dev zip make wget gnupg2 libonig-dev libcurl4-openssl-dev
- apt-get clean
2023-08-16 15:47:53 -04:00
# Prepare the environment
setup:
stage: setup
2023-08-16 12:20:16 -04:00
script:
2023-08-16 15:17:48 -04:00
- docker-php-ext-install mbstring ctype posix zip curl fileinfo
2023-03-01 19:08:18 +00:00
2023-08-16 16:50:35 -04:00
# Build the project using the Makefile
build:
stage: build
script:
2023-08-16 12:22:30 -04:00
- 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
2023-08-16 15:52:36 -04:00
- phive install phpab --global --trust-gpg-keys 0x2A8299CE842DD38C
- make autoload
2023-08-16 12:22:30 -04:00
- make redist
- make tar
2023-08-16 12:20:16 -04:00
artifacts:
paths:
- build/*.tar.gz
2023-08-16 12:20:16 -04:00
2023-10-06 23:36:25 -04:00
# 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
2023-10-07 12:30:22 +00:00
docker-alpine:
2023-08-16 20:31:36 -04:00
image: docker:latest
2023-10-07 12:30:22 +00:00
stage: docker
2023-08-16 20:40:01 -04:00
services:
- docker:dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- |
2023-10-07 04:35:46 -04:00
if [[ "$CI_COMMIT_BRANCH" == "master" ]]; then
2023-10-07 12:30:22 +00:00
DOCKER_TAG="latest"
2023-10-07 04:35:46 -04:00
elif [[ ! -z "$CI_COMMIT_TAG" ]]; then
2023-10-07 12:30:22 +00:00
DOCKER_TAG="$CI_COMMIT_TAG"
else
2023-10-07 12:30:22 +00:00
DOCKER_TAG="$CI_COMMIT_REF_SLUG"
fi
2023-10-07 12:30:22 +00:00
- docker build -f Dockerfile -t $CI_REGISTRY_IMAGE:$DOCKER_TAG .
2023-08-16 20:40:01 -04:00
- docker push $CI_REGISTRY_IMAGE:$DOCKER_TAG
rules:
2023-10-07 04:35:46 -04:00
- exists:
2023-10-07 12:30:22 +00:00
- Dockerfile
# Build the Debian Docker image
2023-10-07 12:30:22 +00:00
docker-debian:
2023-08-16 20:31:36 -04:00
image: docker:latest
2023-10-07 12:30:22 +00:00
stage: docker
2023-08-16 20:40:01 -04:00
services:
- docker:dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- |
2023-10-07 04:35:46 -04:00
if [[ "$CI_COMMIT_BRANCH" == "master" ]]; then
2023-10-07 12:30:22 +00:00
DOCKER_TAG="debian"
2023-10-07 04:35:46 -04:00
elif [[ ! -z "$CI_COMMIT_TAG" ]]; then
DOCKER_TAG="$CI_COMMIT_TAG-debian"
else
DOCKER_TAG="$CI_COMMIT_REF_SLUG-debian"
fi
2023-08-16 20:40:01 -04:00
- docker build -f Dockerfile.debian -t $CI_REGISTRY_IMAGE:$DOCKER_TAG .
- docker push $CI_REGISTRY_IMAGE:$DOCKER_TAG
rules:
2023-10-07 04:35:46 -04:00
- exists:
2023-08-16 20:40:01 -04:00
- Dockerfile.debian
2023-10-06 23:36:25 -04:00
# Publish the tarball and Debian package to the GitLab Package Registry
publish:
stage: publish
2023-08-16 12:20:16 -04:00
script:
2023-08-16 12:22:30 -04:00
- |
2023-08-16 15:09:24 -04:00
if [[ ! -z "$CI_COMMIT_TAG" ]]; then
2023-08-16 17:02:09 -04:00
PACKAGE_NAME=$CI_COMMIT_TAG
2023-10-06 23:36:25 -04:00
FILE_NAME_TAR="ncc-$CI_COMMIT_TAG.tar.gz"
FILE_NAME_DEB="ncc-$CI_COMMIT_TAG.deb"
2023-08-16 12:22:30 -04:00
else
2023-08-16 20:53:18 -04:00
BRANCH_NAME=$(echo $CI_COMMIT_REF_NAME | sed 's/\//-/g')
COMMIT_ID=${CI_COMMIT_SHORT_SHA}
PACKAGE_NAME="$BRANCH_NAME-$COMMIT_ID"
2023-10-06 23:36:25 -04:00
FILE_NAME_TAR="ncc-$PACKAGE_NAME.tar.gz"
FILE_NAME_DEB="ncc-$PACKAGE_NAME.deb"
2023-08-16 12:22:30 -04:00
fi
2023-08-16 17:02:09 -04:00
2023-10-06 23:36:25 -04:00
mv build/*.tar.gz build/$FILE_NAME_TAR
mv build/*.deb build/$FILE_NAME_DEB
2023-08-16 17:02:09 -04:00
echo "Package Name: $PACKAGE_NAME"
2023-10-06 23:36:25 -04:00
echo "Tarball File Name: $FILE_NAME_TAR"
echo "Debian Package File Name: $FILE_NAME_DEB"
2023-08-16 17:02:09 -04:00
2023-10-06 23:36:25 -04:00
# 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" \
2023-10-06 23:36:25 -04:00
--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
2023-10-06 23:36:25 -04:00
- tags