feat: fast ci
This commit is contained in:
@@ -1,28 +1,34 @@
|
|||||||
---
|
|
||||||
stages:
|
stages:
|
||||||
- generate
|
- generate
|
||||||
|
- build
|
||||||
|
|
||||||
job-generator:
|
variables:
|
||||||
|
#CI_DEBUG_TRACE: "true"
|
||||||
|
CACHE_TTL: 2190h0m0s
|
||||||
|
|
||||||
|
generate:
|
||||||
stage: generate
|
stage: generate
|
||||||
image: python:3.11-alpine
|
image: python:3.11-alpine
|
||||||
script:
|
script:
|
||||||
- pip install -r requirements.txt
|
- pip install -r requirements.txt
|
||||||
- ./update.py > generated-pipeline.yml
|
- ./update.py > tags.txt
|
||||||
artifacts:
|
|
||||||
expire_in: 1 hour
|
|
||||||
paths:
|
|
||||||
- generated-pipeline.yml
|
|
||||||
rules:
|
|
||||||
- if: '$CI_COMMIT_TAG =~ "/^$/"'
|
|
||||||
|
|
||||||
update-jobs:
|
build:
|
||||||
stage: generate
|
stage: build
|
||||||
needs:
|
variables:
|
||||||
- job-generator
|
KANIKO_ARGS: "--cache=true --cache-repo $CI_REGISTRY_IMAGE --cache-ttl $CACHE_TTL"
|
||||||
trigger:
|
KANIKO_BUILD_CONTEXT: $CI_PROJECT_DIR
|
||||||
include:
|
image:
|
||||||
- artifact: generated-pipeline.yml
|
name: gcr.io/kaniko-project/executor:debug
|
||||||
job: job-generator
|
entrypoint: [""]
|
||||||
strategy: depend
|
script:
|
||||||
rules:
|
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(echo -n ${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD} | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json
|
||||||
- if: '$CI_COMMIT_TAG =~ "/^$/"'
|
- mkdir -p /kaniko/.docker
|
||||||
|
- |
|
||||||
|
for tag in $(cat tags.txt); do
|
||||||
|
export IMAGE_TAG=$CI_REGISTRY_IMAGE:$tag
|
||||||
|
echo $IMAGE_TAG
|
||||||
|
DOCKERFILE_PATH=$KANIKO_BUILD_CONTEXT/Dockerfile
|
||||||
|
sed "s/latest/$tag/g" $DOCKERFILE_PATH > $DOCKERFILE_PATH.tmp
|
||||||
|
/kaniko/executor --context $KANIKO_BUILD_CONTEXT --dockerfile $DOCKERFILE_PATH.tmp --destination $IMAGE_TAG $KANIKO_ARGS
|
||||||
|
done
|
||||||
|
|||||||
5
.vscode/settings.json
vendored
Normal file
5
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"cSpell.words": [
|
||||||
|
"KANIKO"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
.kaniko:
|
|
||||||
variables:
|
|
||||||
KANIKO_ARGS: ""
|
|
||||||
VERSION: latest
|
|
||||||
KANIKO_BUILD_CONTEXT: $CI_PROJECT_DIR
|
|
||||||
image:
|
|
||||||
name: gcr.io/kaniko-project/executor:debug
|
|
||||||
entrypoint: [""]
|
|
||||||
script:
|
|
||||||
- |
|
|
||||||
if [ -z ${IMAGE_TAG+x} ]; then
|
|
||||||
export IMAGE_TAG=$CI_REGISTRY_IMAGE:$VERSION
|
|
||||||
fi
|
|
||||||
- echo $IMAGE_TAG
|
|
||||||
- mkdir -p /kaniko/.docker
|
|
||||||
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(echo -n ${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD} | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json
|
|
||||||
- DOCKERFILE_PATH=${DOCKERFILE_PATH:-"$KANIKO_BUILD_CONTEXT/Dockerfile"}
|
|
||||||
- sed -i "s/latest/$VERSION/g" $DOCKERFILE_PATH
|
|
||||||
- /kaniko/executor --context $KANIKO_BUILD_CONTEXT --dockerfile $DOCKERFILE_PATH --destination $IMAGE_TAG $KANIKO_ARGS
|
|
||||||
17
update.py
17
update.py
@@ -20,19 +20,4 @@ except:
|
|||||||
|
|
||||||
update_tags = set(tags) - set(local_tags)
|
update_tags = set(tags) - set(local_tags)
|
||||||
|
|
||||||
print("""\
|
print(' '.join(update_tags))
|
||||||
include: '/gci-templates/.gitlab-ci.yml'
|
|
||||||
|
|
||||||
|
|
||||||
stages:
|
|
||||||
- build
|
|
||||||
""")
|
|
||||||
|
|
||||||
for tag in update_tags:
|
|
||||||
print(f"""\
|
|
||||||
build-{tag}:
|
|
||||||
stage: build
|
|
||||||
extends: .kaniko
|
|
||||||
variables:
|
|
||||||
VERSION: {tag}
|
|
||||||
""")
|
|
||||||
|
|||||||
Reference in New Issue
Block a user