From edbe1937e16a968dfad2ab4b1bb6cfb80a99ef7d Mon Sep 17 00:00:00 2001 From: badPointer Date: Wed, 1 Mar 2023 19:03:14 +0000 Subject: [PATCH] feat: add dockerfile, add it to CI pipeline --- .gitlab-ci.yml | 81 ++++++++++++++++++++++++++++++++------------------ Dockerfile | 43 +++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 29 deletions(-) create mode 100644 Dockerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 97fc0fc..0b13edc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,34 +1,57 @@ -image: php:8.1 +ncc-build: + image: php:8.1 -before_script: - # Install some stuff that the image doesn't come with - - apt update -yqq - - apt install git libpq-dev libzip-dev zip make wget gnupg -yqq + before_script: + # Install some stuff that the image doesn't come with + - apt update -yqq + - apt install git libpq-dev libzip-dev zip make wget gnupg -yqq - # Install phive - - wget -O phive.phar https://phar.io/releases/phive.phar - - wget -O phive.phar.asc https://phar.io/releases/phive.phar.asc - - gpg --keyserver hkps://keys.openpgp.org --recv-keys 0x9D8A98B29B2D5D79 - - gpg --verify phive.phar.asc phive.phar - - chmod +x phive.phar - - mv phive.phar /usr/local/bin/phive + # Install phive + - wget -O phive.phar https://phar.io/releases/phive.phar + - wget -O phive.phar.asc https://phar.io/releases/phive.phar.asc + - gpg --keyserver hkps://keys.openpgp.org --recv-keys 0x9D8A98B29B2D5D79 + - gpg --verify phive.phar.asc phive.phar + - chmod +x phive.phar + - mv phive.phar /usr/local/bin/phive - # install phpab - - phive install phpab --global --trust-gpg-keys 0x2A8299CE842DD38C + # install phpab + - phive install phpab --global --trust-gpg-keys 0x2A8299CE842DD38C -build: - script: - - make tar - rules: - - if: $CI_COMMIT_BRANCH + build: + script: + - make tar + rules: + - if: $CI_COMMIT_BRANCH -release: - script: - - make redist - - mkdir ncc_$CI_COMMIT_TAG - - cp -r build/src/* ncc_$CI_COMMIT_TAG/ - artifacts: - paths: - - ncc_$CI_COMMIT_TAG/ - rules: - - if: $CI_COMMIT_TAG \ No newline at end of file + release: + script: + - make redist + - mkdir ncc_$CI_COMMIT_TAG + - cp -r build/src/* ncc_$CI_COMMIT_TAG/ + artifacts: + paths: + - ncc_$CI_COMMIT_TAG/ + rules: + - if: $CI_COMMIT_TAG + +ncc-docker-build: + image: docker:latest + services: + - docker:dind + before_script: + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + script: + - | + if [[ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]]; then + tag="" + echo "Running on default branch '$CI_DEFAULT_BRANCH': tag = 'latest'" + else + tag=":$CI_COMMIT_REF_SLUG" + echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag" + fi + - docker build --pull -t "$CI_REGISTRY_IMAGE${tag}" . + - docker push "$CI_REGISTRY_IMAGE${tag}" + rules: + - if: $CI_COMMIT_BRANCH + exists: + - Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..bb7043f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,43 @@ +# Copyright 2022-2023 Nosial - All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +# documentation files (the "Software"), to deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the +# Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# ncc in Docker +# +# This image is intended to be used as a base for projects using ncc. +# + +FROM php:8.1 + +# Install some stuff the default image doesn't come with +RUN apt update -yqq; \ + apt install git libpq-dev libzip-dev zip make wget gnupg -yqq + +# Install phive... +RUN wget -O phive.phar https://phar.io/releases/phive.phar; \ + wget -O phive.phar.asc https://phar.io/releases/phive.phar.asc; \ + gpg --keyserver hkps://keys.openpgp.org --recv-keys 0x9D8A98B29B2D5D79; \ + gpg --verify phive.phar.asc phive.phar; \ + chmod +x phive.phar; \ + mv phive.phar /usr/local/bin/phive; \ + + # ... and phab + phive install phpab --global --trust-gpg-keys 0x2A8299CE842DD38C + +# Install the latest version of ncc (Nosial Code Compiler) +RUN git clone https://git.n64.cc/nosial/ncc.git; \ + cd ncc; \ + make redist; \ + php build/src/INSTALL --auto --install-composer; \ + cd .. && rm -rf ncc