feat: fast ci

This commit is contained in:
Yoshino-s
2023-06-06 00:39:18 +08:00
parent c276b9549e
commit 706e698fdc
4 changed files with 32 additions and 55 deletions

View File

@@ -1,28 +1,34 @@
---
stages:
- generate
- build
job-generator:
variables:
#CI_DEBUG_TRACE: "true"
CACHE_TTL: 2190h0m0s
generate:
stage: generate
image: python:3.11-alpine
script:
- pip install -r requirements.txt
- ./update.py > generated-pipeline.yml
artifacts:
expire_in: 1 hour
paths:
- generated-pipeline.yml
rules:
- if: '$CI_COMMIT_TAG =~ "/^$/"'
- ./update.py > tags.txt
update-jobs:
stage: generate
needs:
- job-generator
trigger:
include:
- artifact: generated-pipeline.yml
job: job-generator
strategy: depend
rules:
- if: '$CI_COMMIT_TAG =~ "/^$/"'
build:
stage: build
variables:
KANIKO_ARGS: "--cache=true --cache-repo $CI_REGISTRY_IMAGE --cache-ttl $CACHE_TTL"
KANIKO_BUILD_CONTEXT: $CI_PROJECT_DIR
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
script:
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(echo -n ${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD} | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json
- 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
View File

@@ -0,0 +1,5 @@
{
"cSpell.words": [
"KANIKO"
]
}

View File

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

View File

@@ -20,19 +20,4 @@ except:
update_tags = set(tags) - set(local_tags)
print("""\
include: '/gci-templates/.gitlab-ci.yml'
stages:
- build
""")
for tag in update_tags:
print(f"""\
build-{tag}:
stage: build
extends: .kaniko
variables:
VERSION: {tag}
""")
print(' '.join(update_tags))