diff --git a/.github/workflows/build-job-image.yml b/.github/workflows/build-job-image.yml new file mode 100644 index 0000000..ac7b2fd --- /dev/null +++ b/.github/workflows/build-job-image.yml @@ -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 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5cfd6f0..5ab8bce 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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 }} diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 95446ff..bb7225d 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -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": [] } ] diff --git a/Connor Bell CV.tex b/Connor Bell CV.tex index 43f4a49..03bb14a 100644 --- a/Connor Bell CV.tex +++ b/Connor Bell CV.tex @@ -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} @@ -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. @@ -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 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..611492c --- /dev/null +++ b/Dockerfile @@ -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 diff --git a/bump-my-version.toml b/bump-my-version.toml new file mode 100644 index 0000000..379c05e --- /dev/null +++ b/bump-my-version.toml @@ -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" diff --git a/page1sidebar.tex b/page1sidebar.tex index 3717ee1..2d9fae3 100644 --- a/page1sidebar.tex +++ b/page1sidebar.tex @@ -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}{}