init monorepo
CI Feature / Load example-gitea-env.conf to pipeline env (push) Successful in 22s
unit-tests Link to Bats reports
CI Feature / Bats tests (push) Successful in 1m38s
acc-tests Link to Cucumber reports
CI Feature / Cucumber tests (push) Successful in 1m2s
CI Feature / Report Summary (push) Successful in 5s
CI Feature / Load example-gitea-env.conf to pipeline env (push) Successful in 22s
unit-tests Link to Bats reports
CI Feature / Bats tests (push) Successful in 1m38s
acc-tests Link to Cucumber reports
CI Feature / Cucumber tests (push) Successful in 1m2s
CI Feature / Report Summary (push) Successful in 5s
This commit is contained in:
@@ -16,6 +16,8 @@ on:
|
||||
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
GIT_TAG_PREFIX: ${{ fromJson(inputs.env_json).GIT_TAG_PREFIX || '' }}
|
||||
VERSION_FILE: ${{ fromJson(inputs.env_json).VERSION_FILE || '' }}
|
||||
|
||||
jobs:
|
||||
check:
|
||||
@@ -28,7 +30,13 @@ jobs:
|
||||
|
||||
- name: Check existing artifact and calculate version
|
||||
run: |
|
||||
if [ -f VERSION ]; then
|
||||
if [ -n "${VERSION_FILE}" ]; then
|
||||
if echo "${VERSION_FILE}" | grep -q '\.json$'; then
|
||||
RAW_VERSION=$(jq -r '.version' "${VERSION_FILE}")
|
||||
else
|
||||
RAW_VERSION=$(cat "${VERSION_FILE}" | tr -d '[:space:]')
|
||||
fi
|
||||
elif [ -f VERSION ]; then
|
||||
RAW_VERSION=$(cat VERSION | tr -d '[:space:]')
|
||||
elif [ -f package.json ]; then
|
||||
RAW_VERSION=$(jq -r '.version' package.json)
|
||||
@@ -44,7 +52,10 @@ jobs:
|
||||
TAGS_JSON=$(curl -s -f -H "Authorization: token $GITEA_TOKEN" \
|
||||
"${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/tags")
|
||||
|
||||
TAG=$(echo "$TAGS_JSON" | jq -r 'if type == "array" then .[] | select(.commit.sha == "${{ github.sha }}") | .name else empty end' | head -1)
|
||||
TAG=$(echo "$TAGS_JSON" | jq -r --arg prefix "${GIT_TAG_PREFIX}" '
|
||||
if type == "array" then
|
||||
.[] | select(.commit.sha == "${{ github.sha }}" and (.name | startswith($prefix))) | .name
|
||||
else empty end' | head -1)
|
||||
|
||||
mkdir -p /tmp/build-ctx
|
||||
|
||||
@@ -55,7 +66,7 @@ jobs:
|
||||
else
|
||||
echo "ARTIFACT_EXISTS=false" > /tmp/build-ctx/build.env
|
||||
|
||||
HIGHEST_PATCH=$(echo "$TAGS_JSON" | jq -r --arg bv "$BASE_VERSION." '
|
||||
HIGHEST_PATCH=$(echo "$TAGS_JSON" | jq -r --arg prefix "${GIT_TAG_PREFIX}" --arg bv "${GIT_TAG_PREFIX}${BASE_VERSION}." '
|
||||
if type == "array" then .[] | .name | select(startswith($bv)) | sub($bv; "") | tonumber else empty end' | sort -rn | head -1)
|
||||
|
||||
if [ -z "$HIGHEST_PATCH" ]; then NEXT_PATCH=0; else NEXT_PATCH=$((HIGHEST_PATCH + 1)); fi
|
||||
|
||||
@@ -23,6 +23,7 @@ env:
|
||||
DOCKER_IMAGE_NAME: ${{ fromJson(inputs.env_json).DOCKER_IMAGE_NAME || '' }}
|
||||
DOCKER_UI_URL: ${{ fromJson(inputs.env_json).DOCKER_UI_URL || '' }}
|
||||
DOCKERFILE: ${{ fromJson(inputs.env_json).DOCKERFILE || 'Dockerfile' }}
|
||||
GIT_TAG_PREFIX: ${{ fromJson(inputs.env_json).GIT_TAG_PREFIX || '' }}
|
||||
VERSION: ${{ inputs.version }}
|
||||
|
||||
concurrency:
|
||||
@@ -50,7 +51,8 @@ jobs:
|
||||
--label "git.commitBy=${{ github.actor }}" \
|
||||
--label "build.date=${NOW}" \
|
||||
-f "${DOCKERFILE}" \
|
||||
-t "${DOCKER_IMAGE_NAME}:${VERSION}" .
|
||||
-t "${DOCKER_IMAGE_NAME}:${VERSION}" \
|
||||
-t "${DOCKER_IMAGE_NAME}:latest" .
|
||||
|
||||
REGISTRY="${DOCKER_REGISTRY:?DOCKER_REGISTRY not set in env.conf}"
|
||||
IMAGE="${DOCKER_IMAGE_NAME:?DOCKER_IMAGE_NAME not set in env.conf}"
|
||||
@@ -62,6 +64,12 @@ jobs:
|
||||
docker tag "${DOCKER_IMAGE_NAME}:${VERSION}" "$FULL_IMAGE"
|
||||
echo "$DOCKER_PASSWORD" | docker login "$REGISTRY_HOST" -u "$DOCKER_USERNAME" --password-stdin
|
||||
docker push "$FULL_IMAGE"
|
||||
|
||||
FULL_LATEST="${REGISTRY}/${IMAGE}:latest"
|
||||
echo "Pushing ${FULL_LATEST} ..."
|
||||
docker tag "${DOCKER_IMAGE_NAME}:latest" "$FULL_LATEST"
|
||||
docker push "$FULL_LATEST"
|
||||
|
||||
docker logout "$REGISTRY_HOST"
|
||||
|
||||
- name: Report status SUCCESS
|
||||
@@ -69,7 +77,7 @@ jobs:
|
||||
run: |
|
||||
CONTAINER_URL=""
|
||||
if [ -n "${DOCKER_UI_URL:-}" ] && [ -n "${VERSION:-}" ]; then
|
||||
CONTAINER_URL="${DOCKER_UI_URL}/${VERSION}"
|
||||
CONTAINER_URL="${DOCKER_UI_URL}/${DOCKER_IMAGE_NAME}/${VERSION}"
|
||||
fi
|
||||
bash .ci/scripts/report-status.sh success "Docker build & push ${VERSION} OK" ci-docker-build-push "" "$CONTAINER_URL"
|
||||
|
||||
@@ -94,7 +102,7 @@ jobs:
|
||||
"$SERVER_URL/api/v1/repos/${{ github.repository }}/tags" \
|
||||
-H "Authorization: token $GITEA_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"tag_name\": \"${VERSION}\", \"message\": \"Build #$RUN_NUMBER\", \"target\": \"$SHA\"}")
|
||||
-d "{\"tag_name\": \"${GIT_TAG_PREFIX}${VERSION}\", \"message\": \"Build #$RUN_NUMBER\", \"target\": \"$SHA\"}")
|
||||
|
||||
if [ "$HTTP_CODE" = "201" ] || [ "$HTTP_CODE" = "409" ]; then
|
||||
exit 0
|
||||
|
||||
@@ -2,5 +2,5 @@ GITEA_API_URL=https://gitea.app.keskikuja.site
|
||||
GIT_PAGES_URL=https://ci-reports.helm-dev.keskikuja.site
|
||||
DOCKER_REGISTRY=gitea.app.keskikuja.site/niko
|
||||
DOCKER_IMAGE_NAME=gitea-ci-library-test-image
|
||||
DOCKER_UI_URL=https://gitea.app.keskikuja.site/niko/-/packages/container/gitea-ci-library-test-image
|
||||
DOCKER_UI_URL=https://gitea.app.keskikuja.site/niko/-/packages/container
|
||||
#DOCKERFILE=Dockerfile.platform
|
||||
|
||||
Reference in New Issue
Block a user