Compare commits
42 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f62ab35fa8 | ||
|
|
a2a6cccd93 | ||
|
|
523c4fd9a6 | ||
|
|
fb68fce267 | ||
|
|
95c4253e26 | ||
|
|
8e246d07be | ||
|
|
76ea44a124 | ||
|
|
a3f7753a71 | ||
|
|
e23d61a4f0 | ||
|
|
155bba7b5a | ||
|
|
143ae9ba04 | ||
|
|
0512028c40 | ||
|
|
78e6af29ed | ||
|
|
fce00bad38 | ||
|
|
be5671616f | ||
|
|
e8bd522a52 | ||
|
|
30fdbe31f9 | ||
|
|
6c9d11f035 | ||
|
|
47c11b8fba | ||
|
|
de9d53f494 | ||
|
|
712881ad02 | ||
|
|
41cee6f459 | ||
|
|
e3e14d6ed0 | ||
|
|
8ae43a6356 | ||
|
|
9068fa6647 | ||
|
|
c72098a66c | ||
|
|
3d2c4ef882 | ||
|
|
ddf2af808c | ||
|
|
a66222e143 | ||
|
|
5570e6edbe | ||
|
|
5b3106f981 | ||
|
|
5f51d1564e | ||
|
|
e295b06efe | ||
|
|
143dabb7d9 | ||
|
|
cc81b47e49 | ||
|
|
e7ed323f2c | ||
|
|
507f3436c7 | ||
|
|
077a03c35e | ||
|
|
a504c357c5 | ||
|
|
c24ab809a5 | ||
|
|
76aa1a20cf | ||
|
|
d4560d05fd |
@@ -5,6 +5,10 @@ spec:
|
|||||||
- name: build
|
- name: build
|
||||||
type: ci
|
type: ci
|
||||||
spec:
|
spec:
|
||||||
|
volumes:
|
||||||
|
- name: dockersock
|
||||||
|
spec: {}
|
||||||
|
type: temp
|
||||||
steps:
|
steps:
|
||||||
- name: debug
|
- name: debug
|
||||||
type: run
|
type: run
|
||||||
@@ -13,15 +17,58 @@ spec:
|
|||||||
container: alpine/git
|
container: alpine/git
|
||||||
shell: sh
|
shell: sh
|
||||||
script: |
|
script: |
|
||||||
echo build.event = ${{ build.event }}
|
export build_event=${{ build.event }}
|
||||||
echo build.target = ${{ build.target }}
|
export build_target=${{ build.target }}
|
||||||
|
export build_before=${{ build.before }}
|
||||||
|
export build_after=${{ build.after }}
|
||||||
|
env | grep ^build_
|
||||||
|
git --no-pager diff --name-only $build_before..$build_after
|
||||||
|
- name: dind
|
||||||
|
when: build.event == "push" && build.target == "main"
|
||||||
|
type: background
|
||||||
|
spec:
|
||||||
|
container:
|
||||||
|
image: registry-app.inhome.blapointe.com:5001/docker:latest
|
||||||
|
privileged: true
|
||||||
|
mount:
|
||||||
|
- name: dockersock
|
||||||
|
path: /var/run
|
||||||
|
- name: docker
|
||||||
|
type: run
|
||||||
|
when: build.event == "push" && build.target == "main"
|
||||||
|
spec:
|
||||||
|
name: docker
|
||||||
|
container: registry-app.inhome.blapointe.com:5001/docker:latest
|
||||||
|
mount:
|
||||||
|
- name: dockersock
|
||||||
|
path: /var/run
|
||||||
|
shell: sh
|
||||||
|
script: |
|
||||||
|
set -ueo pipefail
|
||||||
|
|
||||||
|
export build_before=${{ build.before }}
|
||||||
|
export build_after=${{ build.after }}
|
||||||
|
|
||||||
|
apk add --no-cache git
|
||||||
|
t=registry-app.inhome.blapointe.com:5001/portfolio/resume/builder:latest
|
||||||
|
if git diff --name-only $build_before..$build_after | grep Dockerfile.cicd; then
|
||||||
|
until docker ps; do
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
docker build -t "$t" -f ./Dockerfile.cicd .
|
||||||
|
docker push "$t"
|
||||||
|
fi
|
||||||
- name: build
|
- name: build
|
||||||
type: run
|
type: run
|
||||||
when: build.event == "push" && build.target == "main"
|
when: build.event == "push" && build.target == "main"
|
||||||
spec:
|
spec:
|
||||||
name: build
|
name: build
|
||||||
container: andreysenov/firebase-tools
|
container:
|
||||||
|
image: registry-app.inhome.blapointe.com:5001/portfolio/resume/builder:latest
|
||||||
|
user: root
|
||||||
|
envs:
|
||||||
|
FIREBASE_CI_TOKEN: ${{ secrets.get("resume-firebase-squeaky2x3-gmail-token") }}
|
||||||
|
GITLAB_PAT: ${{ secrets.get("resume-gitlab-gitlab-breel-dev-token") }}
|
||||||
shell: sh
|
shell: sh
|
||||||
script: >
|
script: |
|
||||||
bash ./deploy.firebase.sh '${{
|
bash ./deploy.firebase.sh
|
||||||
secrets.get("resume-firebase-squeaky2x3-gmail-token") }}'
|
|
||||||
|
|||||||
9
.vale.ini
Normal file
9
.vale.ini
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
StylesPath = styles
|
||||||
|
|
||||||
|
MinAlertLevel = suggestion
|
||||||
|
|
||||||
|
Packages = proselint, write-good, Readability, Joblint
|
||||||
|
|
||||||
|
[*]
|
||||||
|
BasedOnStyles = Vale, proselint, write-good, Readability, Joblint
|
||||||
|
|
||||||
11
Dockerfile.cicd
Normal file
11
Dockerfile.cicd
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
FROM jdkato/vale:latest as vale
|
||||||
|
|
||||||
|
FROM andreysenov/firebase-tools:latest
|
||||||
|
|
||||||
|
RUN echo installing dependencies...
|
||||||
|
RUN apt -y install git woff2 bash
|
||||||
|
|
||||||
|
RUN echo copying vale...
|
||||||
|
COPY --from=vale /bin/vale /bin/vale
|
||||||
|
|
||||||
|
RUN echo OK
|
||||||
11
README.md
11
README.md
@@ -10,3 +10,14 @@
|
|||||||
1. `pbpaste > ./open-resume.com.d/resume.html`
|
1. `pbpaste > ./open-resume.com.d/resume.html`
|
||||||
1. `cd ./open-resume.com.d/; bash ./clean_resume_html.sh; cd ..`
|
1. `cd ./open-resume.com.d/; bash ./clean_resume_html.sh; cd ..`
|
||||||
1. `bash ./deploy.firebase.sh`
|
1. `bash ./deploy.firebase.sh`
|
||||||
|
|
||||||
|
# Today
|
||||||
|
|
||||||
|
1. `gitness.inhome.blapointe.com` has a `./.harness` pipeline
|
||||||
|
1. the pipeline
|
||||||
|
1. renders [Resume](#resume) as `$(mktemp -d)/public`
|
||||||
|
1. clones [gitlab](https://gitlab.com/breel/resume.git)
|
||||||
|
1. replaces [gitlab](https://gitlab.com/breel/resume.git) with `.../public/`
|
||||||
|
1. pushes [gitlab](https://gitlab.com/breel/resume.git)
|
||||||
|
1. [render](https://dashboard.render.com/static/srv-cklkk8o710pc73d7fn7g) detects public repo event and updates its static site hosting for [breel.dev](https://breel.dev)
|
||||||
|
1. [firebase](https://console.firebase.google.com/u/0/project/blapointe-com/overview) deploys `.../public/` for [blapointe.com](https://blapointe.com)
|
||||||
|
|||||||
@@ -4,6 +4,13 @@ set -o pipefail
|
|||||||
set -e
|
set -e
|
||||||
set -u
|
set -u
|
||||||
|
|
||||||
|
if which vale; then
|
||||||
|
f=$(mktemp)
|
||||||
|
cat open-resume.com.d/local-storage-about-srcdoc-open-resume.json | sed 's/"[^"]*":/"."/g' > $f
|
||||||
|
vale sync
|
||||||
|
vale $f || true
|
||||||
|
fi
|
||||||
|
|
||||||
if tty && ! which firebase; then
|
if tty && ! which firebase; then
|
||||||
f="$(mktemp)"
|
f="$(mktemp)"
|
||||||
wget https://firebase.tools -O - > "$f"
|
wget https://firebase.tools -O - > "$f"
|
||||||
@@ -24,15 +31,61 @@ cp ./open-resume.com.d/resume.html.2 $outdir/public/index.html
|
|||||||
cp ./open-resume.com.d/resume.pdf $outdir/public/BreeLaPointeResume.pdf
|
cp ./open-resume.com.d/resume.pdf $outdir/public/BreeLaPointeResume.pdf
|
||||||
cp -r ./open-resume.com.d/fonts $outdir/public/
|
cp -r ./open-resume.com.d/fonts $outdir/public/
|
||||||
|
|
||||||
|
(
|
||||||
|
if ! which woff2_compress; then
|
||||||
|
sudo apt -y install woff2
|
||||||
|
fi
|
||||||
|
set -ueo pipefail
|
||||||
|
for f in "$outdir"/public/fonts/*.ttf; do
|
||||||
|
echo ttf to woff2 for "$f"
|
||||||
|
if [ -f "$f" ]; then
|
||||||
|
woff2_compress "$f"
|
||||||
|
rm "$f"
|
||||||
|
fi
|
||||||
|
basename_f="${f##*/}"
|
||||||
|
find "$outdir/public" -type f | grep -v public.fonts | while read -r f2; do
|
||||||
|
sed -i "s#$basename_f#${basename_f%.ttf}.woff2#g" "$f2"
|
||||||
|
done
|
||||||
|
echo asserting no $basename_f
|
||||||
|
! grep -R "$basename_f" "$outdir/public"
|
||||||
|
echo asserting ${basename_f%.ttf}.woff2
|
||||||
|
grep -R "${basename_f%.ttf}.woff2" "$outdir/public"
|
||||||
|
done
|
||||||
|
du -sh "$outdir/public/fonts/"*
|
||||||
|
)
|
||||||
|
|
||||||
cp -r ./firebase.json ./.firebaserc ./.firebase $outdir/
|
cp -r ./firebase.json ./.firebaserc ./.firebase $outdir/
|
||||||
sed -i "s#deploy/public#public#" $outdir/firebase.json
|
sed -i "s#deploy/public#public#" $outdir/firebase.json
|
||||||
cd $outdir
|
cd $outdir
|
||||||
|
|
||||||
|
(
|
||||||
|
set -ueo pipefail
|
||||||
|
if [ -n "$GITLAB_PAT" ]; then
|
||||||
|
export HOME="$(mktemp -d)"
|
||||||
|
git clone https://gitlab%40breel.dev:"$GITLAB_PAT"@gitlab.com/breel/resume.git gitlab-resume.d
|
||||||
|
git config --global user.name "gitlab@breel.dev"
|
||||||
|
git config --global user.email "gitlab@breel.dev"
|
||||||
|
rm -rf ./gitlab-resume.d/*
|
||||||
|
cp -r ./public/* ./gitlab-resume.d/
|
||||||
|
cd ./gitlab-resume.d/
|
||||||
|
git add -A :/
|
||||||
|
git commit -m "$(date -u +%Y-%m-%dT%H:%M:%S)"
|
||||||
|
git push origin main
|
||||||
|
fi
|
||||||
|
) || true
|
||||||
|
|
||||||
|
(
|
||||||
|
set -ueo pipefail
|
||||||
echo firebase uses squeaky2x3@gmail.com
|
echo firebase uses squeaky2x3@gmail.com
|
||||||
! tty || firebase login
|
! tty || firebase login
|
||||||
echo firebase init
|
echo firebase init
|
||||||
args=()
|
args=()
|
||||||
|
log_args=()
|
||||||
if ! tty; then
|
if ! tty; then
|
||||||
args+=("--token" "$1")
|
args+=("--token" "$FIREBASE_CI_TOKEN")
|
||||||
|
log_args+=("--token" "${FIREBASE_CI_TOKEN:0:1}")
|
||||||
|
test "${FIREBASE_CI_TOKEN:0:1}" != "$"
|
||||||
fi
|
fi
|
||||||
|
echo firebase deploy "${log_args[@]}"
|
||||||
firebase deploy "${args[@]}"
|
firebase deploy "${args[@]}"
|
||||||
|
)
|
||||||
|
|||||||
@@ -1,102 +0,0 @@
|
|||||||
resume:
|
|
||||||
custom:
|
|
||||||
descriptions: []
|
|
||||||
educations:
|
|
||||||
- date: Dec 2017
|
|
||||||
degree: Master of Science in Computer Science
|
|
||||||
descriptions: []
|
|
||||||
gpa: 3.88/4.00
|
|
||||||
school: Wake Forest University
|
|
||||||
- date: Dec 2015
|
|
||||||
degree: Bachelor of Arts in Computer Science
|
|
||||||
descriptions: []
|
|
||||||
gpa: 3.91/4.00
|
|
||||||
school: High Point University
|
|
||||||
profile:
|
|
||||||
email: contact@blapointe.com
|
|
||||||
location: Provo, UT
|
|
||||||
name: Bree LaPointe
|
|
||||||
phone: (336) 701-6159
|
|
||||||
summary: Senior Software Engineer
|
|
||||||
url: linkedin.com/in/lapoba16
|
|
||||||
projects:
|
|
||||||
- date: June 2018
|
|
||||||
descriptions:
|
|
||||||
- Refactored to correct bugs and improve efficiency by orders of magnitude
|
|
||||||
project: Arabidopsis thaliana computationally-generated next-state gene interaction models
|
|
||||||
skills:
|
|
||||||
descriptions:
|
|
||||||
- 'Languages: Golang, Bash, Python3'
|
|
||||||
- 'Platforms: Docker, Hashicorp, Linux/Unix, AWS, Jenkins, REST, Microservices, Git'
|
|
||||||
- 'Datastores: MongoDB, Redis, S3, Couchbase, DynamoDB'
|
|
||||||
featuredSkills:
|
|
||||||
- rating: 4
|
|
||||||
skill: ""
|
|
||||||
- rating: 4
|
|
||||||
skill: ""
|
|
||||||
- rating: 4
|
|
||||||
skill: ""
|
|
||||||
- rating: 4
|
|
||||||
skill: ""
|
|
||||||
- rating: 4
|
|
||||||
skill: ""
|
|
||||||
- rating: 4
|
|
||||||
skill: ""
|
|
||||||
notfeaturedSkills:
|
|
||||||
- rating: 4
|
|
||||||
skill: Golang
|
|
||||||
- rating: 4
|
|
||||||
skill: Bash
|
|
||||||
- rating: 3
|
|
||||||
skill: Python3
|
|
||||||
workExperiences:
|
|
||||||
- company: Qualtrics
|
|
||||||
date: May 2022 - Present
|
|
||||||
descriptions:
|
|
||||||
- Mentored entry and mid-level engineers on stability, clean code, and distributed systems.
|
|
||||||
- Hosted engineering book and white paper clubs for continuous improvement and cross-team experience sharing for 2 years.
|
|
||||||
- Recovered 98% of data lost in critical incident via coordinating cross team efforts and dissecting native database operation logs.
|
|
||||||
jobTitle: Senior Software Engineer, Team Lead
|
|
||||||
- company: Qualtrics
|
|
||||||
date: Oct 2019 - May 2022
|
|
||||||
descriptions:
|
|
||||||
- Developed and owned highly available and reliable data storage and operational tooling.
|
|
||||||
- Mentored 2 interns, 2 new hires, and 3 mid-level cross team engineers on operational tools, maintainable software, and career development.
|
|
||||||
- Genericized AWS asset management tooling ahead of company-wide mass migration initiative.
|
|
||||||
- Championed disaster recovery by supporting training runs with documentation, tools, and live support across teams and enforced continuous compliance for 17 database clusters with monitoring and alerting.
|
|
||||||
- Lent expertise owning MongoDB across teams by advising on configuration and data models and genericizing disaster recovery tooling for 21 teams.
|
|
||||||
jobTitle: Software Engineer II
|
|
||||||
- company: Qualtrics
|
|
||||||
date: Feb 2018 - Oct 2019
|
|
||||||
descriptions:
|
|
||||||
- Automated no-downtime system patching for 30 services and 25 database clusters by creating a modular and testable scripting framework.
|
|
||||||
- Raised backend service's availability to 99.99% and reduced hardware costs by 40% by selecting, training team on, and live migrating to a different datastore.
|
|
||||||
jobTitle: Software Engineer I
|
|
||||||
settings:
|
|
||||||
documentSize: Letter
|
|
||||||
fontFamily: Lato
|
|
||||||
fontSize: "11"
|
|
||||||
formToHeading:
|
|
||||||
custom: PUBLICATIONS
|
|
||||||
educations: EDUCATION
|
|
||||||
projects: PUBLICATIONS
|
|
||||||
skills: SKILLS
|
|
||||||
workExperiences: WORK EXPERIENCE
|
|
||||||
formToShow:
|
|
||||||
custom: false
|
|
||||||
educations: true
|
|
||||||
projects: true
|
|
||||||
skills: true
|
|
||||||
workExperiences: true
|
|
||||||
formsOrder:
|
|
||||||
- workExperiences
|
|
||||||
- educations
|
|
||||||
- projects
|
|
||||||
- skills
|
|
||||||
- custom
|
|
||||||
showBulletPoints:
|
|
||||||
custom: false
|
|
||||||
educations: false
|
|
||||||
projects: true
|
|
||||||
skills: true
|
|
||||||
themeColor: '#818cf8'
|
|
||||||
Reference in New Issue
Block a user