An CI image for updating image tags using kustomize.
Drone plugin settings (when used without Drone please add PLUGIN_ as the environment variable prefix):
GIT_TOKEN: Personal Access Token from Gitea or GitHub, etc.SSH_KEY: Base64-encoded private ssh key ofMANIFEST_USERMANIFEST_HOST: Manifest git server hostMANIFEST_USER: Manifest git user nameMANIFEST_USER_EMAIL: Manifest git user emailMANIFEST_NAMESPACE: Manifest git repository namespace or organization nameMANIFEST_REPO: Manifest git repositoryMANIFEST_BRANCH: Manifest repository branchIMAGES: Updated images (comma-separated list)IMAGE_TAG: Image tag generated in current buildKUSTOMIZATION: Kustomization path relative to the project root
kind: pipeline name: publish-mysvc1 steps: - name: publish image: plugins/docker settings: context: mysvc1 dockerfile: mysvc1/Dockerfile username: from_secret: docker_username password: from_secret: docker_password registry: harbor.mycompany.com repo: harbor.mycompany.com/myuser/mysvc1 tags: - ${DRONE_COMMIT_BRANCH}-${DRONE_COMMIT_SHA:0:7} - latest when: event: push --- kind: pipeline name: publish-mysvc2 steps: - name: publish image: plugins/docker settings: context: mysvc2 dockerfile: mysvc2/Dockerfile username: from_secret: docker_username password: from_secret: docker_password registry: harbor.mycompany.com repo: harbor.mycompany.com/myuser/mysvc2 tags: - ${DRONE_COMMIT_BRANCH}-${DRONE_COMMIT_SHA:0:7} - latest when: event: push --- kind: pipeline name: update-kustomization steps: - name: kustomization pull: if-not-exists image: andyhan/update-kustomization settings: GIT_TOKEN: from_secret: git_token_ci_robot MANIFEST_HOST: git.mycompany.com MANIFEST_USER: myuser MANIFEST_USER_EMAIL: myuser@mycompany.com MANIFEST_NAMESPACE: myuser MANIFEST_REPO: myapp-manifests MANIFEST_BRANCH: main IMAGES: harbor.mycompany.com/myuser/mysvc1,harbor.mycompany.com/myuser/mysvc2 IMAGE_TAG: ${DRONE_COMMIT_BRANCH}-${DRONE_COMMIT_SHA:0:7} KUSTOMIZATION: overlays/production when: event: push depends_on: - publish-mysvc1 - publish-mysvc2In the above example, the image tag is in the form of ${DRONE_COMMIT_BRANCH}-${DRONE_COMMIT_SHA:0:7}, where DRONE_COMMIT_BRANCH and DRONE_COMMIT_SHA are environment variables provided by Drone at run time.