From 39872c7b5683b0a7f30b3cf9a4afc041d632bdad Mon Sep 17 00:00:00 2001 From: Deon George Date: Fri, 5 Apr 2024 16:30:21 +1100 Subject: [PATCH] Added gitea CI/CD configuration --- .gitea/workflows/build_docker.yaml | 191 ++++++++++++++++++ .gitlab-ci.yml | 35 ---- .gitlab-docker-arm64.yml | 29 --- .gitlab-docker-armv7l.yml | 29 --- .gitlab-docker-manifest.yml | 25 --- .gitlab-docker-x86_64.yml | 29 --- Dockerfile => docker/Dockerfile | 2 +- .../Dockerfile.phptest | 4 +- 8 files changed, 194 insertions(+), 150 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 rename Dockerfile => docker/Dockerfile (99%) rename Dockerfile.phptest => docker/Dockerfile.phptest (68%) diff --git a/.gitea/workflows/build_docker.yaml b/.gitea/workflows/build_docker.yaml new file mode 100644 index 0000000..f73dd2e --- /dev/null +++ b/.gitea/workflows/build_docker.yaml @@ -0,0 +1,191 @@ +name: Create Docker Image +run-name: ${{ gitea.actor }} Building Docker Image 🐳 +on: [push] +env: + VERSION: 8.3-fpm + DOCKER_HOST: tcp://127.0.0.1:2375 + +jobs: + build: + strategy: + matrix: + arch: + - x86_64 + - arm64 + + 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: 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 }} + + test: + strategy: + matrix: + arch: + - x86_64 + # arm64 + + name: Build Docker Test Image + runs-on: docker-${{ matrix.arch }} + container: + image: docker:dind + privileged: true + env: + VERSION: ${{ env.VERSION }}-test + ARCH: ${{ matrix.arch }} + VERSIONARCH: ${{ env.VERSION }}-${{ env.ARCH }} + needs: [manifest] + + 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: Build and Push Docker Image + uses: docker/build-push-action@v5 + with: + context: . + file: docker/Dockerfile.phptest + push: true + tags: "${{ steps.registry.outputs.registry }}/${{ env.GITHUB_REPOSITORY }}:${{ env.VERSIONARCH }}" + + manifest-test: + name: Final Docker Test Image Manifest + runs-on: docker-x86_64 + container: + image: docker:dind + privileged: true + needs: [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 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 6c8dbd0..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,35 +0,0 @@ -stages: -- build -- build-manifest -- build-test -- build-manifest-test - -variables: - BRANCH: master - VERSION: 8.3-fpm - DOCKER_HOST: tcp://docker:2375 - VERSIONARCH: ${VERSION}-${ARCH} - -cache: - key: ${CI_JOB_NAME_SLUG}-${CI_COMMIT_REF_SLUG} - paths: - - build-cache - -image: docker:latest -services: -- docker:dind - -before_script: -- if [ ! -d build-cache ]; then mkdir build-cache; fi -- if [ -n "${HTTP_PROXY}" ]; then echo "HTTP PROXY [${HTTP_PROXY}]"; sed -i -e s'/https/http/' /etc/apk/repositories; fi -- apk add git curl -- docker info && docker version -# env|sort -# docker login -u "$CI_DEPENDENCY_PROXY_USER" -p "$CI_DEPENDENCY_PROXY_PASSWORD" "$CI_SERVER_HOST" -- echo "$CI_JOB_TOKEN" | docker login -u "$CI_REGISTRY_USER" "$CI_REGISTRY" --password-stdin - -include: -- .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 f6a04a4..0000000 --- a/.gitlab-docker-arm64.yml +++ /dev/null @@ -1,29 +0,0 @@ -arm64:build: - variables: - ARCH: arm64 - stage: build - script: - - if [ -f init ]; then chmod 500 init; fi - - ([ -z "$REFRESH" -a -f build-cache/${CI_COMMIT_REF_SLUG} ]) && docker load < build-cache/${CI_COMMIT_REF_SLUG} || true - - rm build-cache/* || true - - docker build ${HTTP_PROXY:+--build-arg HTTP_PROXY=${HTTP_PROXY}} --cache-from ${CI_REGISTRY_IMAGE}:${VERSIONARCH} -t ${CI_REGISTRY_IMAGE}:${VERSIONARCH} . - - docker push ${CI_REGISTRY_IMAGE}:${VERSIONARCH} - - docker save ${CI_REGISTRY_IMAGE}:${VERSIONARCH} > build-cache/${CI_COMMIT_REF_SLUG} - tags: - - docker - - arm64 - only: - - master - -#arm64:build-test: -# variables: -# ARCH: arm64 -# stage: build-test -# script: -# - docker build ${HTTP_PROXY:+--build-arg HTTP_PROXY=${HTTP_PROXY}} --file Dockerfile.phptest -t ${CI_REGISTRY_IMAGE}:${VERSIONARCH}-test . -# - docker push ${CI_REGISTRY_IMAGE}:${VERSIONARCH}-test -# tags: -# - docker -# - arm64 -# only: -# - master diff --git a/.gitlab-docker-armv7l.yml b/.gitlab-docker-armv7l.yml deleted file mode 100644 index 7ef70fb..0000000 --- a/.gitlab-docker-armv7l.yml +++ /dev/null @@ -1,29 +0,0 @@ -armv7l:build: - variables: - ARCH: armv7l - stage: build - script: - - if [ -f init ]; then chmod 500 init; fi - - ([ -z "$REFRESH" -a -f build-cache/${CI_COMMIT_REF_SLUG} ]) && docker load < build-cache/${CI_COMMIT_REF_SLUG} || true - - rm build-cache/* || true - - docker build ${HTTP_PROXY:+--build-arg HTTP_PROXY=${HTTP_PROXY}} --cache-from ${CI_REGISTRY_IMAGE}:${VERSIONARCH} -t ${CI_REGISTRY_IMAGE}:${VERSIONARCH} . - - docker push ${CI_REGISTRY_IMAGE}:${VERSIONARCH} - - docker save ${CI_REGISTRY_IMAGE}:${VERSIONARCH} > build-cache/${CI_COMMIT_REF_SLUG} - tags: - - docker - - armv7l - only: - - master - -#armv7l:build-test: -# variables: -# ARCH: armv7l -# stage: build-test -# script: -# - docker build ${HTTP_PROXY:+--build-arg HTTP_PROXY=${HTTP_PROXY}} --file Dockerfile.phptest -t ${CI_REGISTRY_IMAGE}:${VERSIONARCH}-test . -# - docker push ${CI_REGISTRY_IMAGE}:${VERSIONARCH}-test -# tags: -# - docker -# - armv7l -# only: -# - master diff --git a/.gitlab-docker-manifest.yml b/.gitlab-docker-manifest.yml deleted file mode 100644 index c184e69..0000000 --- a/.gitlab-docker-manifest.yml +++ /dev/null @@ -1,25 +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}-arm64 ${CI_REGISTRY_IMAGE}:${VERSION}-armv7l - - docker manifest push --purge ${CI_REGISTRY_IMAGE}:${VERSION} - - apk add --no-cache curl - - if [ -n "${AUTO_BUILD}" ]; then curl -LX POST --post301 -F token=${TRIGGER_TOKEN} -F ref=pgsql ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/trigger/pipeline; fi - - if [ -n "${AUTO_BUILD}" ]; then curl -LX POST --post301 -F token=${TRIGGER_TOKEN} -F ref=mysql ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/trigger/pipeline; fi - - if [ -n "${AUTO_BUILD}" ]; then curl -LX POST --post301 -F token=${TRIGGER_TOKEN} -F ref=ldap ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/trigger/pipeline; fi - tags: - - docker - - x86_64 - only: - - master - -x86_64:build-manifest-test: - stage: build-manifest-test - script: - - docker manifest create ${CI_REGISTRY_IMAGE}:${VERSION}-test ${CI_REGISTRY_IMAGE}:${VERSION}-x86_64-test #${CI_REGISTRY_IMAGE}:${VERSION}-arm64-test #${CI_REGISTRY_IMAGE}:${VERSION}-armv7l-test - - docker manifest push --purge ${CI_REGISTRY_IMAGE}:${VERSION}-test - 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 d3ee776..0000000 --- a/.gitlab-docker-x86_64.yml +++ /dev/null @@ -1,29 +0,0 @@ -x86_64:build: - variables: - ARCH: x86_64 - stage: build - script: - - if [ -f init ]; then chmod 500 init; fi - - ([ -z "$REFRESH" -a -f build-cache/${CI_COMMIT_REF_SLUG} ]) && docker load < build-cache/${CI_COMMIT_REF_SLUG} || true - - rm build-cache/* || true - - docker build ${HTTP_PROXY:+--build-arg HTTP_PROXY=${HTTP_PROXY}} --cache-from ${CI_REGISTRY_IMAGE}:${VERSIONARCH} -t ${CI_REGISTRY_IMAGE}:${VERSIONARCH} . - - docker push ${CI_REGISTRY_IMAGE}:${VERSIONARCH} - - docker save ${CI_REGISTRY_IMAGE}:${VERSIONARCH} > build-cache/${CI_COMMIT_REF_SLUG} - tags: - - docker - - x86_64 - only: - - master - -x86_64:build-test: - variables: - ARCH: x86_64 - stage: build-test - script: - - docker build ${HTTP_PROXY:+--build-arg HTTP_PROXY=${HTTP_PROXY}} --file Dockerfile.phptest -t ${CI_REGISTRY_IMAGE}:${VERSIONARCH}-test . - - docker push ${CI_REGISTRY_IMAGE}:${VERSIONARCH}-test - tags: - - docker - - x86_64 - only: - - master diff --git a/Dockerfile b/docker/Dockerfile similarity index 99% rename from Dockerfile rename to docker/Dockerfile index 31f2988..3c9920b 100644 --- a/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -# NAME leenooks/php +# NAME docker/php # VERSION 8.3-fpm-alpine FROM php:8.3-fpm-alpine diff --git a/Dockerfile.phptest b/docker/Dockerfile.phptest similarity index 68% rename from Dockerfile.phptest rename to docker/Dockerfile.phptest index 2fe35de..832e640 100644 --- a/Dockerfile.phptest +++ b/docker/Dockerfile.phptest @@ -1,7 +1,7 @@ -# NAME leenooks/php +# NAME docker/php # VERSION 8.3-fpm-test -FROM registry.dege.au/leenooks/php:8.3-fpm +FROM gitea.dege.au/docker/php:8.3-fpm # Add xdebug RUN apk --no-cache add linux-headers \