Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions .github/workflows/build-job-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Build and Push Job Image

on:
workflow_dispatch:
push:

jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
id: buildx

- name: Generate Docker metadata
id: docker-metadata
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}/pdflatex
tags: |
type=raw,value=latest

- name: Build & Push Image
uses: docker/build-push-action@v6
with:
file: Dockerfile
tags: ${{ steps.docker-metadata.outputs.tags }}
labels: ${{ steps.docker-metadata.outputs.labels }}
builder: ${{ steps.buildx.outputs.name }}
push: true
pull: true
59 changes: 46 additions & 13 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,29 +1,62 @@
name: Build & Publish
on:
push:
tags:
- '**'
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest
container: ghcr.io/makeshift/cv/pdflatex
steps:
- uses: actions/checkout@v4

- run:
docker run --rm -e 'version=${{ github.ref_name }}' -e 'shortversion=${{ github.ref_name }}' -v
"$(pwd):/data" blang/latex pdflatex "Connor Bell CV.tex"
- name: Bump Version
id: bump
if: github.ref_name == 'master'
run: |
last_tag="$(git describe --tags "$(git rev-list --tags --max-count=1)")"
commit_messages="$(git log --pretty=format:'%s' "$last_tag"..HEAD | tr '[:upper:]' '[:lower:]')"
bump_type="patch"
if [[ $commit_messages == *"minor"* ]]; then
bump_type="minor"
fi
if [[ $commit_messages == *"major"* ]]; then
bump_type="major"
fi

bump-my-version bump "$bump_type" -vv
echo "release=true" >> "$GITHUB_OUTPUT"

- name: Get Version
id: get-version
run: |
version=$(bump-my-version show current_version)
echo "version=$version" >> "$GITHUB_OUTPUT"
echo "tag=v$version" >> "$GITHUB_OUTPUT"
echo "version=$version" >> "$GITHUB_ENV"
echo "shortversion=$(echo "$version" | tr -d '.')" >> "$GITHUB_ENV"

- name: Build PDF
id: pdf
run: |
pdflatex "Connor Bell CV.tex"
pdf_name="Connor Bell CV v${{ steps.get-version.outputs.version }}.pdf"
mv "Connor Bell CV.pdf" "$pdf_name"
echo "name=$pdf_name" >> "$GITHUB_OUTPUT"

- uses: actions/upload-artifact@v4
with:
name: Connor Bell CV.pdf
path: Connor Bell CV.pdf
path: ${{ steps.pdf.outputs.name }}

- uses: ncipollo/release-action@v1.14.0
- uses: ad-m/github-push-action@v0.8.0
if: steps.bump.outputs.release == 'true'
with:
tag: ${{ github.ref_name }}
name: CV Version ${{ github.ref_name }}
artifacts: Connor Bell CV.pdf
branch: ${{ github.base_ref }}
tags: true

- name: Latest tag
uses: EndBug/latest-tag@v1.6.2
- uses: ncipollo/release-action@v1.14.0
if: steps.bump.outputs.release == 'true'
with:
tag: ${{ steps.get-version.outputs.tag }}
name: CV ${{ steps.get-version.outputs.tag }}
artifacts: ${{ steps.pdf.outputs.name }}
2 changes: 1 addition & 1 deletion .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
{
"label": "Build PDF",
"type": "shell",
"command": "docker run --rm -e 'version=1.0.0' -e 'shortversion=100' -v \"${workspaceFolder}:/data\" blang/latex pdflatex \"Connor Bell CV.tex\"",
"command": "docker run --rm -e 'version=1.0.0' -e 'shortversion=100' -v \"${workspaceFolder}:/home/latex\" --user=\"$(id -u):$(id -g)\" leplusorg/latex:latest-alpine pdflatex \"Connor Bell CV.tex\"",
"problemMatcher": []
}
]
Expand Down
15 changes: 7 additions & 8 deletions Connor Bell CV.tex
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,13 @@
Supporting a large group of developers, I am the primary architect and engineer for cloud infrastructure within Echobox, focusing on AWS \& EKS. I pride myself on providing engineers a fast and smooth experience getting their code into production.
\smallskip
\begin{itemize}
\item Designed and maintained Infrastructure as Code in CDK \& Pulumi targetting AWS and Kubernetes for a variety of workloads
\item Designed and maintained Infrastructure as Code in TypeScript using CDK \& Pulumi for a variety of workloads across AWS and Kubernetes
\item Migrated CI and CD pipelines from CodeBuild/CodePipeline to GitHub Actions, resulting in significant improvements to quality of life for developers along with a 8x decrease in average end-to-end run-time and an overall reduction in cost with smart utilisation of self-hosted runners
\item Authored reusable modules following best-practice recommendations to enable developers to easily deploy MongoDB clusters, EKS clusters and GitHub Actions workflows
\item Implemented Helm libraries for standard patterns, significantly reducing duplicate code and maintenance requirements, as well as consistency over the org
\item Revamped monitoring and metrics aggregation from a variety of methods into a hub-and-spoke style multi-cluster Prometheus + Thanos implementation, allowing both cluster-level and global-level visibility without sacrificing availability
\item Maintained a large collection of reusable components for GitHub Actions, Pulumi and Helm with a focus on good documentation, best-practices and ease of use, allowing developers to easily deploy MongoDB clusters, EKS clusters, Actions workflows and their workloads with minimal friction
\item Implemented Helm libraries for standard patterns, significantly reducing duplicate code and maintenance requirements.
\item Revamped monitoring, metrics \& logging aggregation into a multi-cluster Loki, Prometheus and Grafana stack, allowing both cluster-level and global-level observability
\item Gave 'deep-dive' presentations to technical teams on best-practice AWS and Kubernetes recommendations and worked with them to ensure their workloads were being ran in a scalable, maintainable way
\item Helped plan and orchestrate org-wide migrations of MongoDB and EKS clusters to new regions, ensuring minimal downtime and impact to customers
\item Orchestrated org-wide migrations of MongoDB and EKS clusters to new regions, ensuring minimal downtime and impact to customers
\end{itemize}

\cvsection{Key Skills}
Expand All @@ -97,7 +97,7 @@
\item Significant experience with various {\bf AWS} products, including EC2, ECS, Route53, CloudFormation, Step Functions, S3 and more.
\item Experience and knowledge of {\bf continuous integration systems} (Github Actions, CircleCI, Jenkins, AWS Code Suite, Drone) and common testing frameworks.
\item Experience developing both internal and customer-facing bespoke {\bf Node.js} solutions. Some of my personal projects can be found on GitHub.
\item Extensive knowledge of {\bf Docker} \& Docker-Compose, focusing on converting existing services to serverless.
\item Extensive knowledge of {\bf Docker} \& container orchestration with {\bf Kubernetes}
\item Experience with designing and maintaining {\bf Kubernetes} clusters for production usage, both in AWS EKS and self-hosted.
\item Extensive knowledge of {\bf Terraform}, {\bf CDK} \& {\bf Pulumi} (with {\bf TypeScript \& NodeJS}), having designed and developed a large number of bespoke modules for a myriad of workloads and usecases.
\item Experience with {\bf VMware ESXi} and {\bf Xen} Hypervisor as virtualisation platforms, and administration of these systems.
Expand All @@ -106,8 +106,7 @@
\clearpage

\cvsection{Personal Experience}
I run a homelab for learning new software and practicing, containing a myriad of devices such as a pfSense router, Cisco switches and firewalls, HP and Dell rack servers running Xenserver and Docker, Ubiquiti hardware and a multitude of Raspberry Pi's.
I've recently delved into running a Kubernetes cluster at home and am in the process of moving personal workloads to it.
I run a homelab for learning new software and practicing, containing a myriad of devices such as a pfSense router, Cisco switches and firewalls, HP and Dell rack servers, Ubiquiti hardware and a multitude of Raspberry Pi's. This includes a small Kubernetes cluster with a mix of nodes including the Pi's and Dell servers, which I use to run internal services and Home Assistant.

\smallskip

Expand Down
8 changes: 8 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
FROM leplusorg/latex:latest-alpine

USER root

RUN apk add --no-cache python3 py3-pip \
&& pip3 install --no-cache-dir --break-system-packages bump-my-version

USER latex
7 changes: 7 additions & 0 deletions bump-my-version.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# ref: https://callowayproject.github.io/bump-my-version/reference/configuration/
[tool.bumpversion]
commit = true
message = "Bump Version v{current_version} -> v{new_version}"
tag = true
tag_name = "{new_version}"
current_version = "1.1.1"
2 changes: 1 addition & 1 deletion page1sidebar.tex
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@
\cvschool{A Levels}{Hewett High School, Norwich}{Animation: {\bf A}}{Secretarial IT: {\bf C}}{Music Tech: {\bf D}}

\cvsection{Personal\newline Development Goals}
\cvref{Short Term}{Get involved with\newline interesting projects}{Learn more about Kubernetes\newline under-the-hood}
\cvref{Short Term}{Get involved with\newline interesting projects}
\divider
\cvref{Longer Term}{Manage a team}{}