From d264d27bef90629457aedeca4452d99ec60aab2f Mon Sep 17 00:00:00 2001 From: Deon George Date: Sun, 7 Apr 2024 19:50:46 +1000 Subject: [PATCH] Added gitea CI/CD configuration --- .gitea/workflows/build_docker.yaml | 208 +++++++++++++++++------- .gitea/workflows/build_docker_test.yaml | 99 ----------- 2 files changed, 150 insertions(+), 157 deletions(-) delete mode 100644 .gitea/workflows/build_docker_test.yaml diff --git a/.gitea/workflows/build_docker.yaml b/.gitea/workflows/build_docker.yaml index 14dc6da..a88733b 100644 --- a/.gitea/workflows/build_docker.yaml +++ b/.gitea/workflows/build_docker.yaml @@ -10,8 +10,8 @@ jobs: strategy: matrix: arch: - - x86_64 - - arm64 + - x86_64 + - arm64 name: Build Docker Image runs-on: docker-${{ matrix.arch }} @@ -23,41 +23,41 @@ jobs: 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: 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: 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: 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: 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 }}" + - 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 @@ -68,31 +68,123 @@ jobs: 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: 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: 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: 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 }} + - 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: + ARCH: ${{ matrix.arch }} + VERSIONARCH: ${{ env.VERSION }}-test-${{ 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/.gitea/workflows/build_docker_test.yaml b/.gitea/workflows/build_docker_test.yaml deleted file mode 100644 index 8c7bcb1..0000000 --- a/.gitea/workflows/build_docker_test.yaml +++ /dev/null @@ -1,99 +0,0 @@ -name: Create Docker Test Image -run-name: ${{ gitea.actor }} Building Docker Test Image 🚀 -on: [push] -env: - VERSION: 8.3-fpm-test - DOCKER_HOST: tcp://127.0.0.1:2375 -depends-on: build_docker - -jobs: - build: - strategy: - matrix: - arch: - - x86_64 - # arm64 - - name: Build Docker ${{ matrix.arch }} 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.phptest - 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 }}