Merge branch 'docker'
This commit is contained in:
		
						commit
						52c564d4fd
					
				
							
								
								
									
										3
									
								
								.dockerignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.dockerignore
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
**/.git
 | 
			
		||||
target/
 | 
			
		||||
org_test_documents/
 | 
			
		||||
							
								
								
									
										152
									
								
								.lighthouse/pipeline-build-natter.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										152
									
								
								.lighthouse/pipeline-build-natter.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,152 @@
 | 
			
		||||
apiVersion: tekton.dev/v1beta1
 | 
			
		||||
kind: PipelineRun
 | 
			
		||||
metadata:
 | 
			
		||||
  name: build-natter
 | 
			
		||||
spec:
 | 
			
		||||
  pipelineSpec:
 | 
			
		||||
    params:
 | 
			
		||||
      - name: image-name
 | 
			
		||||
        description: The name for the built image
 | 
			
		||||
        type: string
 | 
			
		||||
      - name: path-to-image-context
 | 
			
		||||
        description: The path to the build context
 | 
			
		||||
        type: string
 | 
			
		||||
      - name: path-to-dockerfile
 | 
			
		||||
        description: The path to the Dockerfile
 | 
			
		||||
        type: string
 | 
			
		||||
    tasks:
 | 
			
		||||
      - name: report-pending
 | 
			
		||||
        taskRef:
 | 
			
		||||
          name: gitea-set-status
 | 
			
		||||
        runAfter:
 | 
			
		||||
          - fetch-repository
 | 
			
		||||
        params:
 | 
			
		||||
          - name: CONTEXT
 | 
			
		||||
            value: "$(params.JOB_NAME)"
 | 
			
		||||
          - name: REPO_FULL_NAME
 | 
			
		||||
            value: "$(params.REPO_OWNER)/$(params.REPO_NAME)"
 | 
			
		||||
          - name: GITEA_HOST_URL
 | 
			
		||||
            value: code.fizz.buzz
 | 
			
		||||
          - name: SHA
 | 
			
		||||
            value: "$(tasks.fetch-repository.results.commit)"
 | 
			
		||||
          - name: DESCRIPTION
 | 
			
		||||
            value: "Build $(params.JOB_NAME) has started"
 | 
			
		||||
          - name: STATE
 | 
			
		||||
            value: pending
 | 
			
		||||
          - name: TARGET_URL
 | 
			
		||||
            value: "https://tekton.fizz.buzz/#/namespaces/$(context.pipelineRun.namespace)/pipelineruns/$(context.pipelineRun.name)"
 | 
			
		||||
      - name: fetch-repository
 | 
			
		||||
        taskRef:
 | 
			
		||||
          name: git-clone
 | 
			
		||||
        workspaces:
 | 
			
		||||
          - name: output
 | 
			
		||||
            workspace: git-source
 | 
			
		||||
        params:
 | 
			
		||||
          - name: url
 | 
			
		||||
            value: $(params.REPO_URL)
 | 
			
		||||
          - name: revision
 | 
			
		||||
            value: $(params.PULL_BASE_SHA)
 | 
			
		||||
          - name: deleteExisting
 | 
			
		||||
            value: "true"
 | 
			
		||||
      - name: build-image-runner
 | 
			
		||||
        taskRef:
 | 
			
		||||
          name: kaniko
 | 
			
		||||
        params:
 | 
			
		||||
          - name: IMAGE
 | 
			
		||||
            value: "$(params.image-name):$(tasks.fetch-repository.results.commit)"
 | 
			
		||||
          - name: CONTEXT
 | 
			
		||||
            value: $(params.path-to-image-context)
 | 
			
		||||
          - name: DOCKERFILE
 | 
			
		||||
            value: $(params.path-to-dockerfile)
 | 
			
		||||
          - name: BUILDER_IMAGE
 | 
			
		||||
            value: "gcr.io/kaniko-project/executor:v1.12.1"
 | 
			
		||||
          - name: EXTRA_ARGS
 | 
			
		||||
            value:
 | 
			
		||||
              - "--destination=$(params.image-name)" # Also write the :latest image
 | 
			
		||||
              - --cache=true
 | 
			
		||||
              - --cache-copy-layers
 | 
			
		||||
              - --cache-repo=harbor.fizz.buzz/kanikocache/cache
 | 
			
		||||
              - --use-new-run # Should result in a speed-up
 | 
			
		||||
              - --reproducible # To remove timestamps so layer caching works.
 | 
			
		||||
              - --snapshot-mode=redo
 | 
			
		||||
              - --skip-unused-stages=true
 | 
			
		||||
              - --registry-mirror=dockerhub.dockerhub.svc.cluster.local
 | 
			
		||||
        workspaces:
 | 
			
		||||
          - name: source
 | 
			
		||||
            workspace: git-source
 | 
			
		||||
          - name: dockerconfig
 | 
			
		||||
            workspace: docker-credentials
 | 
			
		||||
        runAfter:
 | 
			
		||||
          - fetch-repository
 | 
			
		||||
    finally:
 | 
			
		||||
      - name: report-success
 | 
			
		||||
        when:
 | 
			
		||||
          - input: "$(tasks.status)"
 | 
			
		||||
            operator: in
 | 
			
		||||
            values: ["Succeeded", "Completed"]
 | 
			
		||||
        taskRef:
 | 
			
		||||
          name: gitea-set-status
 | 
			
		||||
        params:
 | 
			
		||||
          - name: CONTEXT
 | 
			
		||||
            value: "$(params.JOB_NAME)"
 | 
			
		||||
          - name: REPO_FULL_NAME
 | 
			
		||||
            value: "$(params.REPO_OWNER)/$(params.REPO_NAME)"
 | 
			
		||||
          - name: GITEA_HOST_URL
 | 
			
		||||
            value: code.fizz.buzz
 | 
			
		||||
          - name: SHA
 | 
			
		||||
            value: "$(tasks.fetch-repository.results.commit)"
 | 
			
		||||
          - name: DESCRIPTION
 | 
			
		||||
            value: "Build $(params.JOB_NAME) has succeeded"
 | 
			
		||||
          - name: STATE
 | 
			
		||||
            value: success
 | 
			
		||||
          - name: TARGET_URL
 | 
			
		||||
            value: "https://tekton.fizz.buzz/#/namespaces/$(context.pipelineRun.namespace)/pipelineruns/$(context.pipelineRun.name)"
 | 
			
		||||
      - name: report-failure
 | 
			
		||||
        when:
 | 
			
		||||
          - input: "$(tasks.status)"
 | 
			
		||||
            operator: in
 | 
			
		||||
            values: ["Failed"]
 | 
			
		||||
        taskRef:
 | 
			
		||||
          name: gitea-set-status
 | 
			
		||||
        params:
 | 
			
		||||
          - name: CONTEXT
 | 
			
		||||
            value: "$(params.JOB_NAME)"
 | 
			
		||||
          - name: REPO_FULL_NAME
 | 
			
		||||
            value: "$(params.REPO_OWNER)/$(params.REPO_NAME)"
 | 
			
		||||
          - name: GITEA_HOST_URL
 | 
			
		||||
            value: code.fizz.buzz
 | 
			
		||||
          - name: SHA
 | 
			
		||||
            value: "$(tasks.fetch-repository.results.commit)"
 | 
			
		||||
          - name: DESCRIPTION
 | 
			
		||||
            value: "Build $(params.JOB_NAME) has failed"
 | 
			
		||||
          - name: STATE
 | 
			
		||||
            value: failure
 | 
			
		||||
          - name: TARGET_URL
 | 
			
		||||
            value: "https://tekton.fizz.buzz/#/namespaces/$(context.pipelineRun.namespace)/pipelineruns/$(context.pipelineRun.name)"
 | 
			
		||||
    workspaces:
 | 
			
		||||
      - name: git-source
 | 
			
		||||
      - name: docker-credentials
 | 
			
		||||
      - name: cargo-cache
 | 
			
		||||
  workspaces:
 | 
			
		||||
    - name: git-source
 | 
			
		||||
      volumeClaimTemplate:
 | 
			
		||||
        spec:
 | 
			
		||||
          storageClassName: "nfs-client"
 | 
			
		||||
          accessModes:
 | 
			
		||||
            - ReadWriteOnce
 | 
			
		||||
          resources:
 | 
			
		||||
            requests:
 | 
			
		||||
              storage: 10Gi
 | 
			
		||||
      subPath: rust-source
 | 
			
		||||
    - name: docker-credentials
 | 
			
		||||
      secret:
 | 
			
		||||
        secretName: harbor-plain
 | 
			
		||||
  serviceAccountName: build-bot
 | 
			
		||||
  timeout: 240h0m0s
 | 
			
		||||
  params:
 | 
			
		||||
    - name: image-name
 | 
			
		||||
      value: "harbor.fizz.buzz/private/natter"
 | 
			
		||||
    - name: path-to-image-context
 | 
			
		||||
      value: .
 | 
			
		||||
    - name: path-to-dockerfile
 | 
			
		||||
      value: docker/natter/Dockerfile
 | 
			
		||||
							
								
								
									
										11
									
								
								.lighthouse/triggers.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								.lighthouse/triggers.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
			
		||||
apiVersion: config.lighthouse.jenkins-x.io/v1alpha1
 | 
			
		||||
kind: TriggerConfig
 | 
			
		||||
spec:
 | 
			
		||||
  postsubmits:
 | 
			
		||||
    - name: build-natter
 | 
			
		||||
      source: "pipeline-build-natter.yaml"
 | 
			
		||||
      # Override https-based url from lighthouse events.
 | 
			
		||||
      clone_uri: "git@code.fizz.buzz:talexander/natter.git"
 | 
			
		||||
      branches:
 | 
			
		||||
        - ^main$
 | 
			
		||||
        - ^master$
 | 
			
		||||
@ -32,3 +32,9 @@ serde_json = "1.0.107"
 | 
			
		||||
tokio = { version = "1.30.0", default-features = false, features = ["rt", "rt-multi-thread", "fs", "io-util"] }
 | 
			
		||||
toml = "0.8.2"
 | 
			
		||||
walkdir = "2.4.0"
 | 
			
		||||
 | 
			
		||||
# Optimized build for any sort of release.
 | 
			
		||||
[profile.release-lto]
 | 
			
		||||
inherits = "release"
 | 
			
		||||
lto = true
 | 
			
		||||
strip = "symbols"
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										13
									
								
								docker/natter/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								docker/natter/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,13 @@
 | 
			
		||||
FROM rustlang/rust:nightly-alpine3.17 AS builder
 | 
			
		||||
 | 
			
		||||
RUN apk add --no-cache musl-dev
 | 
			
		||||
 | 
			
		||||
RUN mkdir /root/natter
 | 
			
		||||
WORKDIR /root/natter
 | 
			
		||||
COPY . .
 | 
			
		||||
# TODO: Add static build, which currently errors due to proc_macro. RUSTFLAGS="-C target-feature=+crt-static"
 | 
			
		||||
RUN CARGO_TARGET_DIR=/target cargo build --profile release-lto
 | 
			
		||||
 | 
			
		||||
FROM alpine:3.17 AS runner
 | 
			
		||||
 | 
			
		||||
COPY --from=builder /target/release-lto/natter /usr/bin/
 | 
			
		||||
							
								
								
									
										32
									
								
								docker/natter/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								docker/natter/Makefile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
			
		||||
SHELL := bash
 | 
			
		||||
.ONESHELL:
 | 
			
		||||
.SHELLFLAGS := -eu -o pipefail -c
 | 
			
		||||
.DELETE_ON_ERROR:
 | 
			
		||||
MAKEFLAGS += --warn-undefined-variables
 | 
			
		||||
MAKEFLAGS += --no-builtin-rules
 | 
			
		||||
OS:=$(shell uname -s)
 | 
			
		||||
 | 
			
		||||
ifeq ($(origin .RECIPEPREFIX), undefined)
 | 
			
		||||
  $(error This Make does not support .RECIPEPREFIX. Please use GNU Make 4.0 or later)
 | 
			
		||||
endif
 | 
			
		||||
.RECIPEPREFIX = >
 | 
			
		||||
 | 
			
		||||
IMAGE_NAME:=natter
 | 
			
		||||
TARGET :=
 | 
			
		||||
 | 
			
		||||
.PHONY: help
 | 
			
		||||
help:
 | 
			
		||||
> @grep -h "##" $(MAKEFILE_LIST) | grep -v grep | sed -E 's/^([^:]*): *## */\1:  /'
 | 
			
		||||
 | 
			
		||||
.PHONY: build
 | 
			
		||||
build: ## Build the docker image.
 | 
			
		||||
> docker build --tag $(IMAGE_NAME) --target=$(TARGET) --file Dockerfile ../../
 | 
			
		||||
 | 
			
		||||
.PHONY: shell
 | 
			
		||||
shell: ## Launch an interactive shell inside the docker image.
 | 
			
		||||
shell: build
 | 
			
		||||
> docker run --rm -i -t --entrypoint /bin/sh --mount type=tmpfs,destination=/tmp $(IMAGE_NAME)
 | 
			
		||||
 | 
			
		||||
.PHONY: clean
 | 
			
		||||
clean:
 | 
			
		||||
> docker rmi $(IMAGE_NAME)
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user