commit
ea262f213b
30 changed files with 684 additions and 0 deletions
@ -0,0 +1,3 @@ |
|||
[submodule "kubespray"] |
|||
path = kubespray |
|||
url = https://github.com/kubernetes-sigs/kubespray.git |
|||
@ -0,0 +1 @@ |
|||
argocd_cli_version: "2.3.3" |
|||
@ -0,0 +1,11 @@ |
|||
collections: |
|||
- name: containers.podman |
|||
version: '>=1.4.1' # 1.4.1 is the minimum when working with podman 2.2 |
|||
- name: ansible.posix |
|||
- name: community.general |
|||
version: '>=2.2.0' # fix a bug with nmcli and bridge interfaces |
|||
- name: community.libvirt |
|||
- name: ansible.netcommon |
|||
- name: community.kubernetes |
|||
- name: openvswitch.openvswitch |
|||
|
|||
@ -0,0 +1,27 @@ |
|||
- name: Create the argocd namespace |
|||
k8s: |
|||
state: present |
|||
definition: |
|||
apiVersion: v1 |
|||
kind: Namespace |
|||
metadata: |
|||
name: argocd |
|||
spec: {} |
|||
|
|||
- name: Add the ArgoCD Helm repository |
|||
kubernetes.core.helm_repository: |
|||
name: argo |
|||
repo_url: "https://argoproj.github.io/argo-helm" |
|||
|
|||
- name: Deploy ArgoCD |
|||
kubernetes.core.helm: |
|||
name: argocd |
|||
chart_ref: argo/argo-cd |
|||
update_repo_cache: yes |
|||
release_namespace: argocd |
|||
release_values: |
|||
configs: |
|||
secret: |
|||
argocdServerAdminPassword: '{{ "secret" | password_hash("bcrypt") }}' |
|||
release_state: present |
|||
chart_version: '4.5.7' |
|||
@ -0,0 +1,2 @@ |
|||
helm_version: "3.8.2" |
|||
tkn_version: "0.23.1" |
|||
@ -0,0 +1,34 @@ |
|||
- name: Download Helm |
|||
get_url: |
|||
url: '{{ helm_download_url }}' |
|||
dest: /usr/local/src/{{ helm_download_url | basename }} |
|||
|
|||
- name: Install Helm |
|||
unarchive: |
|||
src: /usr/local/src/{{ helm_download_url | basename }} |
|||
dest: /usr/local/sbin |
|||
remote_src: yes |
|||
# In Ansible 2.11, it will be possible to use "include" instead... |
|||
exclude: |
|||
- linux-amd64/README.md |
|||
- linux-amd64/LICENSE |
|||
extra_opts: |
|||
- --strip-components=1 |
|||
owner: root |
|||
group: root |
|||
mode: 0755 |
|||
|
|||
- name: Download the Tekton CLI |
|||
get_url: |
|||
url: '{{ tkn_download_url }}' |
|||
dest: /usr/local/src/{{ tkn_download_url | basename }} |
|||
|
|||
- name: Install the Tekton CLI |
|||
unarchive: |
|||
src: /usr/local/src/{{ tkn_download_url | basename }} |
|||
dest: /usr/local/sbin |
|||
remote_src: yes |
|||
# In Ansible 2.11, it will be possible to use "include" instead... |
|||
owner: root |
|||
group: root |
|||
mode: 0755 |
|||
@ -0,0 +1,2 @@ |
|||
helm_download_url: "https://get.helm.sh/helm-v{{ helm_version }}-linux-amd64.tar.gz" |
|||
tkn_download_url: "https://github.com/tektoncd/cli/releases/download/v{{ tkn_version }}/tkn_{{ tkn_version }}_Linux_x86_64.tar.gz" |
|||
@ -0,0 +1 @@ |
|||
centos_version: "20221005" |
|||
@ -0,0 +1,9 @@ |
|||
- name: Fetch the CentOS Stream 8 ISO image |
|||
get_url: |
|||
url: '{{ centos_download_url }}' |
|||
dest: /var/lib/libvirt/images/{{ centos_download_url | basename }} |
|||
|
|||
- name: Start the installation |
|||
command: |
|||
cmd: virt-install --name foo --autostart --noautoconsole --cpu host-passthrough --vcpus 2 --ram 2048 --os-variant centos-stream8 --disk path=/var/lib/libvirt/images/foo.qcow2,size=50 --console pty,target.type=virtio --serial pty --location "/var/lib/libvirt/images/{{ centos_download_url | basename }}" |
|||
creates: /var/lib/libvirt/images/foo.qcow2 |
|||
@ -0,0 +1 @@ |
|||
centos_download_url: http://ftp.pasteur.fr/mirrors/CentOS/8-stream/isos/x86_64/CentOS-Stream-8-x86_64-{{ centos_version }}-boot.iso |
|||
@ -0,0 +1,6 @@ |
|||
dependencies: |
|||
- name: gitea |
|||
repository: https://dl.gitea.io/charts/ |
|||
version: 5.0.0 |
|||
digest: sha256:fb8e51d5b3ebac99aab6e5190e3a3b46dfbd5f014d5b3019feb825af995bae53 |
|||
generated: "2022-10-08T06:22:43.958560969Z" |
|||
@ -0,0 +1,8 @@ |
|||
apiVersion: v2 |
|||
name: itix-gitea |
|||
version: 0.0.1 |
|||
description: ITIX Customizations for Gitea |
|||
dependencies: |
|||
- name: gitea |
|||
version: 5.0.0 |
|||
repository: https://dl.gitea.io/charts/ |
|||
@ -0,0 +1,11 @@ |
|||
gitea: |
|||
postgresql: |
|||
enabled: false |
|||
memcached: |
|||
enabled: false |
|||
service: |
|||
ssh: |
|||
type: NodePort |
|||
nodePort: 32022 |
|||
ingress: |
|||
enabled: false |
|||
@ -0,0 +1,12 @@ |
|||
FROM quay.io/centos/centos:stream8 |
|||
|
|||
ARG GH_VERSION=2.3.0 |
|||
|
|||
RUN dnf install -y git curl tar gzip shadow-utils \ |
|||
&& curl -sLo /tmp/gh.tgz https://github.com/cli/cli/releases/download/v${GH_VERSION}/gh_${GH_VERSION}_linux_amd64.tar.gz \ |
|||
&& tar -xf /tmp/gh.tgz -C /tmp \ |
|||
&& mv /tmp/gh_${GH_VERSION}_linux_amd64/bin/gh /usr/local/bin \ |
|||
&& rm -rf /tmp/gh_${GH_VERSION}_linux_amd64 /tmp/gh.tgz \ |
|||
&& dnf clean all |
|||
|
|||
RUN git config --global advice.detachedHead false |
|||
@ -0,0 +1,4 @@ |
|||
FROM quay.io/fedora/fedora:35 |
|||
|
|||
RUN dnf install -y mqttcli \ |
|||
&& dnf clean all |
|||
@ -0,0 +1,6 @@ |
|||
# The following line will be rewritten by the custom builder |
|||
FROM docker.io/library/nextcloud |
|||
RUN set -ex \ |
|||
&& apk add --no-cache ffmpeg samba-client \ |
|||
&& touch /usr/local/etc/php/conf.d/redis-session.ini \ |
|||
&& chmod 666 /usr/local/etc/php/conf.d/redis-session.ini # Overwritten by entrypoint.sh on startup |
|||
@ -0,0 +1,15 @@ |
|||
FROM docker.io/nginxinc/nginx-unprivileged:1.20-alpine |
|||
|
|||
ARG SOURCE_TAG |
|||
|
|||
USER root |
|||
|
|||
RUN curl -Lo /tmp/aeneria-app.tgz https://statics.aeneria.com/aeneria-app-${SOURCE_TAG}.tar.gz \ |
|||
&& mkdir -p /var/www/html \ |
|||
&& tar -C /var/www/html --strip-components=1 -zxf /tmp/aeneria-app.tgz \ |
|||
&& chown -R root:root /var/www/html \ |
|||
&& chmod -R go+rX-w /var/www/html |
|||
|
|||
ADD nginx.conf /etc/nginx/nginx.conf |
|||
|
|||
USER nginx |
|||
@ -0,0 +1,38 @@ |
|||
FROM docker.io/library/php:7.3-fpm-alpine |
|||
|
|||
ARG SOURCE_TAG |
|||
|
|||
RUN apk add libpq libpq-dev \ |
|||
&& docker-php-ext-configure pgsql \ |
|||
&& docker-php-ext-install pdo pdo_pgsql |
|||
|
|||
RUN curl -Lo /tmp/aeneria-app.tgz https://statics.aeneria.com/aeneria-app-${SOURCE_TAG}.tar.gz \ |
|||
&& mkdir -p /var/www/html \ |
|||
&& tar -C /var/www/html --strip-components=1 -zxf /tmp/aeneria-app.tgz \ |
|||
&& chown -R root:root /var/www/html \ |
|||
&& chmod -R go+rX-w /var/www/html \ |
|||
&& mkdir -p /var/www/html/private /var/www/html/var \ |
|||
&& chmod 777 /var/www/html/private /var/www/html/var |
|||
|
|||
ADD entrypoint.sh /entrypoint.sh |
|||
|
|||
ENV APP_ENV=prod \ |
|||
AENERIA_USER_MAX_PLACES=-1 \ |
|||
AENERIA_USER_CAN_SHARE_PLACE=1 \ |
|||
AENERIA_USER_CAN_FETCH=1 \ |
|||
AENERIA_USER_CAN_EXPORT=1 \ |
|||
AENERIA_USER_CAN_IMPORT=1 \ |
|||
AENERIA_PLACE_CAN_BE_PUBLIC=1 \ |
|||
AENERIA_DEMO_MODE=0 \ |
|||
ENEDIS_CLIENT_ID= \ |
|||
ENEDIS_CLIENT_SECRET= \ |
|||
ENEDIS_REDIRECT_URI= \ |
|||
ENEDIS_ENDPOINT_AUTH=https://proxy.aeneria.com/enedis-data-connect \ |
|||
ENEDIS_ENDPOINT_TOKEN=https://proxy.aeneria.com/enedis-data-connect \ |
|||
ENEDIS_ENDPOINT_DATA=https://gw.prd.api.enedis.fr \ |
|||
AENERIA_WELCOME_MESSAGE="Bienvenue !" |
|||
|
|||
VOLUME [ "/var/www/html/private", "/var/www/html/var" ] |
|||
|
|||
ENTRYPOINT [ "/entrypoint.sh" ] |
|||
CMD [ ] |
|||
@ -0,0 +1,64 @@ |
|||
apiVersion: apps/v1 |
|||
kind: DaemonSet |
|||
metadata: |
|||
name: minio |
|||
namespace: minio |
|||
spec: |
|||
selector: |
|||
matchLabels: |
|||
name: minio |
|||
template: |
|||
metadata: |
|||
labels: |
|||
name: minio |
|||
spec: |
|||
containers: |
|||
- name: minio |
|||
image: quay.io/minio/minio:latest |
|||
args: |
|||
- server |
|||
- --console-address |
|||
- :8080 |
|||
- --address |
|||
- :8090 |
|||
- /data |
|||
env: |
|||
- name: MINIO_ROOT_USER |
|||
value: admin |
|||
- name: MINIO_ROOT_PASSWORD |
|||
valueFrom: |
|||
secretKeyRef: |
|||
name: minio-admin |
|||
key: password |
|||
ports: |
|||
- containerPort: 8080 |
|||
readinessProbe: |
|||
failureThreshold: 1 |
|||
httpGet: |
|||
path: /minio/health/live |
|||
port: 8080 |
|||
scheme: HTTP |
|||
initialDelaySeconds: 10 |
|||
periodSeconds: 30 |
|||
successThreshold: 1 |
|||
timeoutSeconds: 20 |
|||
volumeMounts: |
|||
- name: data |
|||
mountPath: /data |
|||
- name: config |
|||
mountPath: /.minio |
|||
securityContext: |
|||
runAsGroup: 10000 |
|||
runAsUser: 10002 |
|||
capabilities: |
|||
drop: [ALL] |
|||
readOnlyRootFilesystem: true |
|||
runAsNonRoot: true |
|||
allowPrivilegeEscalation: false |
|||
terminationGracePeriodSeconds: 30 |
|||
volumes: |
|||
- name: data |
|||
persistentVolumeClaim: |
|||
claimName: minio-data |
|||
- name: config |
|||
emptyDir: {} |
|||
@ -0,0 +1,5 @@ |
|||
resources: |
|||
- daemonset.yaml |
|||
images: |
|||
- name: quay.io/minio/minio |
|||
newTag: RELEASE.2022-04-29T01-27-09Z |
|||
@ -0,0 +1,7 @@ |
|||
namespace: nextcloud |
|||
|
|||
helmCharts: |
|||
- releaseName: nextcloud |
|||
repo: https://nextcloud.github.io/helm/ |
|||
name: nextcloud |
|||
version: 3.0.0 |
|||
@ -0,0 +1,26 @@ |
|||
apiVersion: kustomize.config.k8s.io/v1beta1 |
|||
kind: Kustomization |
|||
|
|||
resources: |
|||
- https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.29.0/release.yaml |
|||
- https://storage.googleapis.com/tekton-releases/triggers/previous/v0.17.1/release.yaml |
|||
- https://storage.googleapis.com/tekton-releases/triggers/previous/v0.17.1/interceptors.yaml |
|||
- https://storage.googleapis.com/tekton-releases/dashboard/previous/v0.21.0/tekton-dashboard-release.yaml |
|||
|
|||
patchesStrategicMerge: |
|||
- | |
|||
$patch: delete |
|||
apiVersion: autoscaling/v2beta1 |
|||
kind: HorizontalPodAutoscaler |
|||
metadata: |
|||
name: tekton-pipelines-webhook |
|||
namespace: tekton-pipelines |
|||
- | |
|||
apiVersion: v1 |
|||
kind: ConfigMap |
|||
metadata: |
|||
name: config-artifact-pvc |
|||
namespace: tekton-pipelines |
|||
data: |
|||
size: 1Gi |
|||
storageClassName: tekton |
|||
@ -0,0 +1,60 @@ |
|||
Name: gitea |
|||
Version: 1.13.1 |
|||
Release: itix1 |
|||
Summary: Git with a cup of tea, painless self-hosted git service |
|||
License: MIT |
|||
Source0: https://github.com/go-gitea/%{name}/releases/download/v%{version}/%{name}-%{version}-linux-amd64.xz |
|||
ExclusiveArch: x86_64 |
|||
Source1: gitea.service |
|||
Requires(pre): shadow-utils |
|||
Requires: postgresql-server |
|||
BuildRequires: systemd |
|||
|
|||
%description |
|||
|
|||
The goal of this project is to make the easiest, fastest, and most painless |
|||
way of setting up a self-hosted Git service. Using Go, this can be done with |
|||
an independent binary distribution across all platforms which Go supports, |
|||
including Linux, macOS, and Windows on x86, amd64, ARM and PowerPC |
|||
architectures. |
|||
|
|||
# Since we don't recompile from source, disable the build_id checking |
|||
%global _missing_build_ids_terminate_build 0 |
|||
%global _build_id_links none |
|||
%global debug_package %{nil} |
|||
|
|||
%prep |
|||
%setup -q -c -T |
|||
xz -dc %{S:0} > gitea |
|||
cp %{S:1} %{name}.service |
|||
|
|||
%build |
|||
|
|||
%install |
|||
install -d %{buildroot}/opt/%{name}/etc/ |
|||
install -d %{buildroot}/srv/%{name}/custom |
|||
install -d %{buildroot}/srv/%{name}/git |
|||
install -D gitea %{buildroot}/opt/%{name}/bin/gitea |
|||
install -D -m 0644 %{name}.service %{buildroot}/%{_unitdir}/%{name}.service |
|||
|
|||
%files |
|||
%defattr(0644, root, root, 0755) |
|||
%dir /opt/%{name}/bin |
|||
%dir /opt/%{name}/etc |
|||
%dir /srv/%{name} |
|||
%dir /srv/%{name}/custom |
|||
%dir /srv/%{name}/git |
|||
%attr(0755, root, root) /opt/%{name}/bin/gitea |
|||
%{_unitdir}/%{name}.service |
|||
|
|||
%pre |
|||
getent group itix-svc >/dev/null || groupadd -r itix-svc |
|||
getent passwd git >/dev/null || useradd -r -g itix-svc \ |
|||
-d /srv/%{name} -s /sbin/nologin -c "Git with a cup of tea" \ |
|||
git |
|||
|
|||
exit 0 |
|||
|
|||
%changelog |
|||
* Mon Feb 22 2021 Nicolas MASSE <nicolas.masse@itix.fr> - 1.13.1-itix1 |
|||
- First release |
|||
@ -0,0 +1,5 @@ |
|||
apiVersion: v2 |
|||
name: hugo |
|||
type: application |
|||
version: 0.0.1 |
|||
appVersion: "0.0.1" |
|||
@ -0,0 +1,3 @@ |
|||
{{- define "release.name" -}} |
|||
{{- .Release.Name | trunc 63 | trimSuffix "-" }} |
|||
{{- end }} |
|||
@ -0,0 +1,131 @@ |
|||
apiVersion: tekton.dev/v1beta1 |
|||
kind: Pipeline |
|||
metadata: |
|||
name: {{ include "release.name" . }} |
|||
spec: |
|||
workspaces: |
|||
- name: scratch |
|||
params: |
|||
- name: hugoVersion |
|||
type: string |
|||
default: {{ .Values.hugo.version | quote }} |
|||
- name: gitRepositoryURL |
|||
type: string |
|||
- name: gitBranch |
|||
type: string |
|||
default: "" |
|||
- name: gitRevision |
|||
type: string |
|||
tasks: |
|||
# Clone the git repository |
|||
- name: git-clone |
|||
params: |
|||
- name: gitRepositoryURL |
|||
value: "$(params.gitRepositoryURL)" |
|||
- name: gitBranch |
|||
value: "$(params.gitBranch)" |
|||
- name: gitRevision |
|||
value: "$(params.gitRevision)" |
|||
- name: ciVersion |
|||
value: {{ .Values.itixCi.version | quote }} |
|||
workspaces: |
|||
- name: src |
|||
workspace: scratch |
|||
subPath: src |
|||
taskRef: |
|||
name: git-clone |
|||
|
|||
# Build the Hugo site |
|||
- name: hugo |
|||
runAfter: |
|||
- git-clone |
|||
params: |
|||
- name: hugoVersion |
|||
value: "$(params.hugoVersion)" |
|||
workspaces: |
|||
- name: src |
|||
workspace: scratch |
|||
subPath: src |
|||
taskRef: |
|||
name: hugo |
|||
|
|||
# Build and push the container images |
|||
- name: buildah |
|||
runAfter: |
|||
- hugo |
|||
params: |
|||
- name: buildahVersion |
|||
value: {{ .Values.buildah.version | quote }} |
|||
- name: containerfilePath |
|||
value: {{ .Values.buildah.containerfilePath | quote }} |
|||
- name: outputContainerImage |
|||
value: {{ .Values.buildah.outputContainerImage | quote }} |
|||
- name: gitRevision |
|||
value: "$(tasks.git-clone.results.gitRevision)" |
|||
- name: gitCurrentTag |
|||
value: "$(tasks.git-clone.results.gitCurrentTag)" |
|||
workspaces: |
|||
- name: src |
|||
workspace: scratch |
|||
subPath: src |
|||
- name: containers |
|||
workspace: scratch |
|||
subPath: containers |
|||
taskRef: |
|||
name: buildah |
|||
|
|||
{{ if gt (len (keys .Values.deployment.environments)) 0 }} |
|||
- name: git-clone-cd |
|||
runAfter: |
|||
- buildah |
|||
params: |
|||
- name: gitRepositoryURL |
|||
value: {{ .Values.deployment.git.url | quote }} |
|||
- name: gitBranch |
|||
value: {{ .Values.deployment.git.branch | quote }} |
|||
- name: gitRevision |
|||
value: "" |
|||
- name: ciVersion |
|||
value: {{ .Values.itixCi.version | quote }} |
|||
workspaces: |
|||
- name: src |
|||
workspace: scratch |
|||
subPath: k8s |
|||
taskRef: |
|||
name: git-clone |
|||
|
|||
- name: kustomize-set-image |
|||
runAfter: |
|||
- git-clone-cd |
|||
params: |
|||
- name: gitBranch |
|||
value: {{ .Values.deployment.git.branch | quote }} |
|||
- name: gitCurrentTag |
|||
value: "$(tasks.git-clone.results.gitCurrentTag)" |
|||
- name: kustomizeVersion |
|||
value: {{ .Values.deployment.kustomizeVersion | quote }} |
|||
- name: gitVersion |
|||
value: {{ .Values.git.version | quote }} |
|||
- name: imageDigest |
|||
value: "$(tasks.buildah.results.imageDigest)" |
|||
- name: imageName |
|||
value: {{ .Values.buildah.outputContainerImage | quote }} |
|||
- name: testManifestsDir |
|||
{{- if hasKey .Values.deployment.environments "test" }} |
|||
value: {{ .Values.deployment.environments.test.path | quote }} |
|||
{{- else }} |
|||
value: "" |
|||
{{- end }} |
|||
- name: prodManifestsDir |
|||
{{- if hasKey .Values.deployment.environments "prod" }} |
|||
value: {{ .Values.deployment.environments.prod.path | quote }} |
|||
{{- else }} |
|||
value: "" |
|||
{{- end }} |
|||
workspaces: |
|||
- name: src |
|||
workspace: scratch |
|||
subPath: k8s |
|||
taskRef: |
|||
name: kustomize-set-image |
|||
{{ end }} |
|||
@ -0,0 +1,69 @@ |
|||
apiVersion: triggers.tekton.dev/v1beta1 |
|||
kind: Trigger |
|||
metadata: |
|||
name: {{ include "release.name" . }} |
|||
spec: |
|||
interceptors: |
|||
- name: {{ .Values.tekton.interceptor }} interceptor |
|||
ref: |
|||
name: {{ .Values.tekton.interceptor | quote }} |
|||
kind: ClusterInterceptor |
|||
apiVersion: triggers.tekton.dev |
|||
params: |
|||
- name: secretRef |
|||
value: |
|||
secretName: {{ .Values.tekton.interceptor }}-webhook |
|||
secretKey: sharedSecret |
|||
- name: eventTypes |
|||
value: ["push"] |
|||
- name: Filter on repository name |
|||
ref: |
|||
name: "cel" |
|||
kind: ClusterInterceptor |
|||
apiVersion: triggers.tekton.dev |
|||
params: |
|||
- name: filter |
|||
value: body.repository.full_name == '{{ .Values.tekton.repositoryName }}' |
|||
bindings: |
|||
{{ if eq .Values.tekton.interceptor "github" }} |
|||
- name: gitRevision |
|||
value: $(body.head_commit.id) |
|||
{{ else if eq .Values.tekton.interceptor "gitea" }} |
|||
- name: gitRevision |
|||
value: $(body.after) |
|||
{{ end }} |
|||
- name: gitRepositoryUrl |
|||
value: "$(body.repository.clone_url)" |
|||
template: |
|||
spec: |
|||
params: |
|||
- name: gitRevision |
|||
description: The git revision |
|||
- name: gitRepositoryUrl |
|||
description: The git repository url |
|||
resourcetemplates: |
|||
- apiVersion: tekton.dev/v1beta1 |
|||
kind: PipelineRun |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-options: Prune=false |
|||
generateName: {{ include "release.name" . }}- |
|||
spec: |
|||
pipelineRef: |
|||
name: {{ include "release.name" . }} |
|||
params: |
|||
- name: gitRepositoryURL |
|||
value: $(tt.params.gitRepositoryUrl) |
|||
- name: gitRevision |
|||
value: $(tt.params.gitRevision) |
|||
serviceAccountName: itix-push-robot |
|||
workspaces: |
|||
- name: scratch |
|||
volumeClaimTemplate: |
|||
spec: |
|||
storageClassName: tekton |
|||
accessModes: |
|||
- ReadWriteMany |
|||
resources: |
|||
requests: |
|||
storage: 1Gi |
|||
@ -0,0 +1,13 @@ |
|||
tekton: |
|||
interceptor: gitea # gitea or github |
|||
repositoryName: user/repo # github or gitea repo's full_name |
|||
hugo: |
|||
version: "v0.104.3" |
|||
buildah: |
|||
containerfilePath: "Containerfile" |
|||
outputContainerImage: "" |
|||
deployment: |
|||
git: |
|||
url: "" |
|||
branch: "main" |
|||
environments: {} |
|||
@ -0,0 +1,109 @@ |
|||
apiVersion: tekton.dev/v1beta1 |
|||
kind: Task |
|||
metadata: |
|||
name: kustomize-set-image |
|||
spec: |
|||
params: |
|||
- name: imageDigest |
|||
type: string |
|||
- name: gitCurrentTag |
|||
type: string |
|||
- name: gitBranch |
|||
type: string |
|||
- name: imageName |
|||
type: string |
|||
- name: testManifestsDir |
|||
type: string |
|||
- name: prodManifestsDir |
|||
type: string |
|||
workspaces: |
|||
- name: src |
|||
mountPath: /src |
|||
steps: |
|||
- name: kustomize |
|||
image: k8s.gcr.io/kustomize/kustomize:v4.5.5 |
|||
workingDir: /src |
|||
env: |
|||
- name: HOME |
|||
value: /home/tekton |
|||
- name: GIT_CURRENT_TAG |
|||
value: "$(params.gitCurrentTag)" |
|||
- name: GIT_BRANCH |
|||
value: "$(params.gitBranch)" |
|||
- name: IMAGE_NAME |
|||
value: "$(params.imageName)" |
|||
- name: IMAGE_DIGEST |
|||
value: "$(params.imageDigest)" |
|||
- name: TEST_MANIFESTS_DIR |
|||
value: "$(params.testManifestsDir)" |
|||
- name: PROD_MANIFESTS_DIR |
|||
value: "$(params.prodManifestsDir)" |
|||
volumeMounts: |
|||
- name: home |
|||
mountPath: /home/tekton |
|||
script: | |
|||
#!/bin/sh |
|||
set -euo pipefail |
|||
echo "=========================================================" |
|||
echo " kustomize edit set image $IMAGE_NAME" |
|||
echo "=========================================================" |
|||
echo |
|||
if [ -n "$TEST_MANIFESTS_DIR" ]; then |
|||
echo "Setting image tag to digest $IMAGE_DIGEST for environment test..." |
|||
cd "$TEST_MANIFESTS_DIR" |
|||
kustomize edit set image "$IMAGE_NAME@$IMAGE_DIGEST" |
|||
cd - |
|||
echo |
|||
fi |
|||
if [[ -n "$PROD_MANIFESTS_DIR" && -n "$GIT_CURRENT_TAG" ]]; then |
|||
echo "Setting image tag to digest $IMAGE_DIGEST for environment prod..." |
|||
cd "$PROD_MANIFESTS_DIR" |
|||
kustomize edit set image "$IMAGE_NAME@$IMAGE_DIGEST" |
|||
cd - |
|||
echo |
|||
fi |
|||
echo |
|||
exit 0 |
|||
- name: git-push |
|||
image: docker.io/alpine/git:v2.26.2 |
|||
workingDir: /src |
|||
env: |
|||
- name: HOME |
|||
value: /home/tekton |
|||
- name: GIT_CURRENT_TAG |
|||
value: "$(params.gitCurrentTag)" |
|||
- name: GIT_BRANCH |
|||
value: "$(params.gitBranch)" |
|||
- name: IMAGE_NAME |
|||
value: "$(params.imageName)" |
|||
- name: IMAGE_DIGEST |
|||
value: "$(params.imageDigest)" |
|||
- name: TEST_MANIFESTS_DIR |
|||
value: "$(params.testManifestsDir)" |
|||
- name: PROD_MANIFESTS_DIR |
|||
value: "$(params.prodManifestsDir)" |
|||
volumeMounts: |
|||
- name: home |
|||
mountPath: /home/tekton |
|||
script: | |
|||
#!/bin/sh |
|||
set -euo pipefail |
|||
git config --global user.email "nicolas.masse@itix.fr" |
|||
git config --global user.name "GitOps Tekton Bot" |
|||
echo "=========================================================" |
|||
echo " git add, commit & push" |
|||
echo "=========================================================" |
|||
echo |
|||
if [ -n "$TEST_MANIFESTS_DIR" ]; then |
|||
git add "$TEST_MANIFESTS_DIR" |
|||
git commit -m "deploy image $IMAGE_NAME@$IMAGE_DIGEST in test" |
|||
fi |
|||
if [[ -n "$PROD_MANIFESTS_DIR" && -n "$GIT_CURRENT_TAG" ]]; then |
|||
git add "$PROD_MANIFESTS_DIR" |
|||
git commit -m "deploy image $IMAGE_NAME@$IMAGE_DIGEST in prod" |
|||
fi |
|||
git push origin "HEAD:$GIT_BRANCH" |
|||
exit 0 |
|||
volumes: |
|||
- name: home |
|||
emptyDir: {} |
|||
Loading…
Reference in new issue