Added gitea CI/CD configuration

This commit is contained in:
Deon George 2024-04-05 16:30:21 +11:00
parent 853f0b69d1
commit 44777f7856
6 changed files with 87 additions and 147 deletions

View File

@ -0,0 +1,87 @@
name: Create Docker Image
run-name: ${{ gitea.actor }} Building Docker Image 🚀
on: [push]
jobs:
build:
name: Build Docker Image
runs-on: docker-x86
container:
image: docker:dind
privileged: true
env:
BRANCH: master
VERSION: 8.3-fpm
DOCKER_HOST: tcp://127.0.0.1:2375
VERSIONARCH: ${VERSION}-${ARCH}
steps:
- name: Environment
run: |
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 nodejs jq
( dockerd --host=tcp://0.0.0.0:2375 --tls=false & ) && sleep 3
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
echo "++ PS" && ps -Af
echo "++ Environment" && env|sort
echo "++ PWD" && pwd
echo "++ ls" && ls -al
- name: Checkout Code
uses: actions/checkout@v4
- name: Prepare Registry FQDN
id: registry
run: |
registry=${{ github.server_url }}
registry=${registry##http*://}
echo "registry=${registry}" >> "$GITHUB_OUTPUT"
#- name: Environment part 2
# run: |
# echo "++ Environment" && env|sort
# echo "++ PWD" && pwd
# echo "++ ls" && ls -al
# echo "++ workspace" && ls ${{ gitea.workspace }}
# echo "++ host is ${{ gitea.repository }}"
# echo "++ registry is ${{ steps.registry.outputs.registry }}"
# echo "++ container ${{ steps.registry.outputs.registry }}/${{ env.GITHUB_REPOSITORY }}:${{ env.VERSION }}"
# echo "++ gitea server/domain ${{ gitea.server }}/${{ gitea.domain }}:latest"
# echo "++ github token ${{ gitea.TOKEN }}"
# echo "++ runtime token ${{ env.ACTIONS_RUNTIME_TOKEN }}"
#- name: Build
# run: |
# set -x
# if [ -f init ]; then chmod 500 init; fi
# docker build ${HTTP_PROXY:+--build-arg HTTP_PROXY=${HTTP_PROXY}} -t ${{ steps.registry.outputs.registry }}/${{ env.GITHUB_REPOSITORY }}:${{ env.VERSION }}
# docker push ${{ steps.registry.outputs.registry }}/${{ env.GITHUB_REPOSITORY }}:${{ env.VERSION }}
# name: Set up Docker Buildx
# uses: https://github.com/docker/setup-buildx-action@v3
# with:
# config-inline: |
# [registry."<my-private-unsecure-git-repository-ip-address>:5000"]
# http = true
# insecure = true
- name: Login to Container Registry
uses: docker/login-action@v2
with:
registry: ${{ steps.registry.outputs.registry }}
username: ${{ gitea.actor }}
password: ${{ secrets.PKG_WRITE_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
# env:
# GIT_AUTH_TOKEN: ${{ secrets.PKG_WRITE_TOKEN }}
with:
context: .
file: ./Dockerfile
push: true
tags: "${{ steps.registry.outputs.registry }}/${{ env.GITHUB_REPOSITORY }}:${{ env.VERSION }}"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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