From 706e698fdc5574c40de7da45874f67a07be80de3 Mon Sep 17 00:00:00 2001 From: Yoshino-s Date: Tue, 6 Jun 2023 00:39:18 +0800 Subject: [PATCH] feat: fast ci --- .gitlab-ci.yml | 46 ++++++++++++++++++++---------------- .vscode/settings.json | 5 ++++ gci-templates/.gitlab-ci.yml | 19 --------------- update.py | 17 +------------ 4 files changed, 32 insertions(+), 55 deletions(-) create mode 100644 .vscode/settings.json delete mode 100644 gci-templates/.gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 22724d3..a0d66d6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..51d2650 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "cSpell.words": [ + "KANIKO" + ] +} diff --git a/gci-templates/.gitlab-ci.yml b/gci-templates/.gitlab-ci.yml deleted file mode 100644 index 51a4b31..0000000 --- a/gci-templates/.gitlab-ci.yml +++ /dev/null @@ -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 diff --git a/update.py b/update.py index bb16c00..036e608 100755 --- a/update.py +++ b/update.py @@ -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))