From 3f2cd5688422c4ff5ad7ef4f8d9de540553e2e52 Mon Sep 17 00:00:00 2001 From: Deon George Date: Wed, 1 Jan 2025 19:27:52 +1100 Subject: [PATCH] Change CI/CD build from gitlab to gitea --- .dockerignore | 3 +- .gitea/workflows/build_docker.yaml | 144 +++++++++++++++++++++++++++++ .gitlab-ci.yml | 38 -------- .gitlab-docker-arm64.yml | 18 ---- .gitlab-docker-armv7l.yml | 18 ---- .gitlab-docker-manifest.yml | 10 -- .gitlab-docker-x86_64.yml | 18 ---- .gitlab-test.yml | 52 ----------- docker/Dockerfile | 2 +- 9 files changed, 147 insertions(+), 156 deletions(-) create mode 100644 .gitea/workflows/build_docker.yaml delete mode 100644 .gitlab-ci.yml delete mode 100644 .gitlab-docker-arm64.yml delete mode 100644 .gitlab-docker-armv7l.yml delete mode 100644 .gitlab-docker-manifest.yml delete mode 100644 .gitlab-docker-x86_64.yml delete mode 100644 .gitlab-test.yml diff --git a/.dockerignore b/.dockerignore index 9dabfc4..3d667aa 100644 --- a/.dockerignore +++ b/.dockerignore @@ -3,7 +3,8 @@ .env.testing .idea .git* -docker/ +.phpunit.result.cache +.styleci.yml node_modules/ storage/debugbar storage/framework/cache/data diff --git a/.gitea/workflows/build_docker.yaml b/.gitea/workflows/build_docker.yaml new file mode 100644 index 0000000..0d3a49a --- /dev/null +++ b/.gitea/workflows/build_docker.yaml @@ -0,0 +1,144 @@ +name: Create Docker Image +run-name: ${{ gitea.actor }} Building Docker Image 🐳 +on: [push] +env: + VERSION: latest + DOCKER_HOST: tcp://127.0.0.1:2375 + +jobs: +# test: +# strategy: +# matrix: +# arch: +# - x86_64 +# # arm64 +# +# name: Test Application +# runs-on: docker-${{ matrix.arch }} +# container: +# image: gitea.dege.au/docker/php:8.3-fpm-ldap-test +# +# steps: +# - name: Environment Setup +# run: | +# # If we have a proxy use it +# if [ -n "${HTTP_PROXY}" ]; then echo "HTTP PROXY [${HTTP_PROXY}]"; sed -i -e s'/https/http/' /etc/apk/repositories; fi +# # Some pre-reqs +# apk add git nodejs +# ## Some debugging info +# # env|sort +# +# - name: Code Checkout +# uses: actions/checkout@v4 +# +# - name: Run Tests +# run: | +# mv .env.testing .env +# # Install Composer and project dependencies. +# mkdir -p ${COMPOSER_HOME} +# if [ -n "${{ secrets.COMPOSER_GITHUB_TOKEN }}" ]; then echo ${{ secrets.COMPOSER_GITHUB_TOKEN }} > ${COMPOSER_HOME}/auth.json; fi +# composer install +# # Generate an application key. Re-cache. +# php artisan key:generate +# php artisan migrate +# php artisan db:seed +# # run laravel tests +# touch storage/app/test/*ZIP storage/app/test/file/* +# XDEBUG_MODE=coverage php vendor/bin/phpunit --coverage-text --colors=never + + build: + strategy: + matrix: + arch: + - x86_64 + - arm64 +# needs: [test] + + name: Build Docker Image + runs-on: docker-${{ matrix.arch }} + container: + image: docker:dind + privileged: true + env: + ARCH: ${{ matrix.arch }} + VERSIONARCH: ${{ env.VERSION }}-${{ env.ARCH }} + + steps: + - name: Environment Setup + run: | + # If we have a proxy use it + if [ -n "${HTTP_PROXY}" ]; then echo "HTTP PROXY [${HTTP_PROXY}]"; sed -i -e s'/https/http/' /etc/apk/repositories; fi + # Some pre-reqs + apk add git curl nodejs + # Start docker + ( dockerd --host=tcp://0.0.0.0:2375 --tls=false & ) && sleep 3 + ## Some debugging info + # docker info && docker version + # env|sort + + - name: Registry FQDN Setup + id: registry + run: | + registry=${{ github.server_url }} + echo "registry=${registry##http*://}" >> "$GITHUB_OUTPUT" + + - name: Container Registry Login + uses: docker/login-action@v2 + with: + registry: ${{ steps.registry.outputs.registry }} + username: ${{ gitea.actor }} + password: ${{ secrets.PKG_WRITE_TOKEN }} + + - name: Code Checkout + uses: actions/checkout@v4 + + - name: Record version and Delete Unnecessary files + run: | + echo ${GITHUB_SHA::8} > VERSION + rm -rf .git* tests/ storage/app/test/ + + - name: Build and Push Docker Image + uses: docker/build-push-action@v5 + with: + context: . + file: docker/Dockerfile + push: true + tags: "${{ steps.registry.outputs.registry }}/${{ env.GITHUB_REPOSITORY }}:${{ env.VERSIONARCH }}" + + manifest: + name: Final Docker Image Manifest + runs-on: docker-x86_64 + container: + image: docker:dind + privileged: true + needs: [build] + + steps: + - name: Environment Setup + run: | + # If we have a proxy use it + if [ -n "${HTTP_PROXY}" ]; then echo "HTTP PROXY [${HTTP_PROXY}]"; sed -i -e s'/https/http/' /etc/apk/repositories; fi + # Some pre-reqs + apk add git curl nodejs + # Start docker + ( dockerd --host=tcp://0.0.0.0:2375 --tls=false & ) && sleep 3 + + - name: Registry FQDN Setup + id: registry + run: | + registry=${{ github.server_url }} + echo "registry=${registry##http*://}" >> "$GITHUB_OUTPUT" + + - name: Container Registry Login + uses: docker/login-action@v2 + with: + registry: ${{ steps.registry.outputs.registry }} + username: ${{ gitea.actor }} + password: ${{ secrets.PKG_WRITE_TOKEN }} + + - name: Build Docker Manifest + run: | + docker manifest create ${{ steps.registry.outputs.registry }}/${{ env.GITHUB_REPOSITORY }}:${{ env.VERSION }} \ + ${{ steps.registry.outputs.registry }}/${{ env.GITHUB_REPOSITORY }}:${{ env.VERSION }}-x86_64 + # ${{ steps.registry.outputs.registry }}/${{ env.GITHUB_REPOSITORY }}:${{ env.VERSION }}-arm64 + docker manifest push --purge ${{ steps.registry.outputs.registry }}/${{ env.GITHUB_REPOSITORY }}:${{ env.VERSION }} diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 3187a1f..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,38 +0,0 @@ -stages: -- test -- build -- build-manifest - -variables: - DOCKER_HOST: tcp://docker:2375 - VERSION: latest - VERSIONARCH: ${VERSION}-${ARCH} - -# This folder is cached between builds -# http://docs.gitlab.com/ce/ci/yaml/README.html#cache -cache: - key: ${CI_COMMIT_REF_SLUG} - paths: - - public/css/app.css - - public/js/app.js - - public/js/manifest.js - - public/js/vendor.js - - public/*/vendor/ - - node_modules/ - - vendor/ - -image: docker:latest -services: -- docker:dind - -before_script: -- docker info && docker version -- echo "$CI_JOB_TOKEN" | docker login -u "$CI_REGISTRY_USER" "$CI_REGISTRY" --password-stdin -- if [ -n "$GITHUB_TOKEN" ]; then cat $GITHUB_TOKEN |base64 -d > auth.json; fi - -include: -- .gitlab-test.yml -- .gitlab-docker-x86_64.yml -- .gitlab-docker-armv7l.yml -- .gitlab-docker-arm64.yml -- .gitlab-docker-manifest.yml diff --git a/.gitlab-docker-arm64.yml b/.gitlab-docker-arm64.yml deleted file mode 100644 index 6a1306e..0000000 --- a/.gitlab-docker-arm64.yml +++ /dev/null @@ -1,18 +0,0 @@ -arm64:build: - variables: - ARCH: arm64 - - stage: build - - script: - - if [ -f init ]; then chmod 500 init; fi - - echo -n ${CI_COMMIT_SHORT_SHA} > VERSION - - rm -rf node_modules database/seeds database/schema database/factories/* - - docker build -f docker/Dockerfile -t ${CI_REGISTRY_IMAGE}:${VERSIONARCH} . - - docker push ${CI_REGISTRY_IMAGE}:${VERSIONARCH} - - tags: - - docker - - arm64 - only: - - master diff --git a/.gitlab-docker-armv7l.yml b/.gitlab-docker-armv7l.yml deleted file mode 100644 index 4a232fa..0000000 --- a/.gitlab-docker-armv7l.yml +++ /dev/null @@ -1,18 +0,0 @@ -armv7l:build: - variables: - ARCH: armv7l - - stage: build - - script: - - if [ -f init ]; then chmod 500 init; fi - - echo -n ${CI_COMMIT_SHORT_SHA} > VERSION - - rm -rf node_modules database/seeds database/schema database/factories/* - - docker build -f docker/Dockerfile -t ${CI_REGISTRY_IMAGE}:${VERSIONARCH} . - - docker push ${CI_REGISTRY_IMAGE}:${VERSIONARCH} - - tags: - - docker - - armv7l - only: - - master diff --git a/.gitlab-docker-manifest.yml b/.gitlab-docker-manifest.yml deleted file mode 100644 index 27285b4..0000000 --- a/.gitlab-docker-manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -x86_64:build-manifest: - stage: build-manifest - script: - - docker manifest create ${CI_REGISTRY_IMAGE}:${VERSION} ${CI_REGISTRY_IMAGE}:${VERSION}-x86_64 ${CI_REGISTRY_IMAGE}:${VERSION}-armv7l ${CI_REGISTRY_IMAGE}:${VERSION}-arm64 - - docker manifest push --purge ${CI_REGISTRY_IMAGE}:${VERSION} - tags: - - docker - - x86_64 - only: - - master diff --git a/.gitlab-docker-x86_64.yml b/.gitlab-docker-x86_64.yml deleted file mode 100644 index 53c2722..0000000 --- a/.gitlab-docker-x86_64.yml +++ /dev/null @@ -1,18 +0,0 @@ -x86_64:build: - variables: - ARCH: x86_64 - - stage: build - - script: - - if [ -f init ]; then chmod 500 init; fi - - echo -n ${CI_COMMIT_SHORT_SHA} > VERSION - - rm -rf node_modules database/seeds database/schema database/factories/* - - docker build -f docker/Dockerfile -t ${CI_REGISTRY_IMAGE}:${VERSIONARCH} . - - docker push ${CI_REGISTRY_IMAGE}:${VERSIONARCH} - - tags: - - docker - - x86_64 - only: - - master diff --git a/.gitlab-test.yml b/.gitlab-test.yml deleted file mode 100644 index 8572e47..0000000 --- a/.gitlab-test.yml +++ /dev/null @@ -1,52 +0,0 @@ -test: - image: ${CI_REGISTRY}/leenooks/php:8.3-fpm-ldap-test - - stage: test - - # NOTE: This service is dependant on project file configuration, which is not there if the cache was deleted - # resulting in the testing to fail on the first run. - services: - - name: osixia/openldap:latest - alias: test_ldap - command: ["--loglevel","debug"] - - variables: - LDAP_SEED_INTERNAL_LDIF_PATH: "${CI_PROJECT_DIR}/tests/server/openldap/data" - LDAP_SEED_INTERNAL_SCHEMA_PATH: "${CI_PROJECT_DIR}/tests/server/openldap/schema" - LDAP_BASE_DN: "dc=Test" - LDAP_DOMAIN: "Test" - LDAP_ADMIN_PASSWORD: test - #CI_DEBUG_SERVICES: "true" - - tags: - - php - only: - - master - - before_script: - - mv .env.testing .env - - # Install npm and dependancies - - apk add --no-cache npm - - npm i - - npm run prod - - # Install Composer and project dependencies. - - mkdir -p ${COMPOSER_HOME} - - if [ -n "$GITHUB_TOKEN" ]; then cat $GITHUB_TOKEN |base64 -d > ${COMPOSER_HOME}/auth.json; fi - - composer install - - # Generate an application key. Re-cache. - - php artisan key:generate - - script: - # Sleep if we need to, in case we want to jump in and see what is going on during the test - - if [ -n "$DEBUG_PAUSE" ]; then echo "Pausing for $DEBUG_PAUSE seconds, so you can jump into the containers"; sleep $DEBUG_PAUSE; fi - # run laravel tests - - XDEBUG_MODE=coverage php vendor/bin/phpunit --coverage-text --colors=never - - # run frontend tests - # if you have any task for testing frontend - # set it in your package.json script - # comment this out if you don't have a frontend test - # npm test diff --git a/docker/Dockerfile b/docker/Dockerfile index bf74fc1..5204624 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -13,7 +13,7 @@ ENV COMPOSER_HOME=/var/cache/composer ENV SITE_USER=www-data -COPY init-docker /sbin/init-docker +COPY docker/init-docker /sbin/init-docker RUN chmod 550 /sbin/init-docker && chown ${SITE_USER}:0 /sbin/init-docker COPY . /var/www/html/