23 Commits

Author SHA1 Message Date
bel
f62ab35fa8 use variable findings to set build_before/after to varaible for checking if should docker build 2023-10-15 08:16:30 -06:00
bel
a2a6cccd93 whitespace dockerfile 2023-10-15 08:16:11 -06:00
bel
523c4fd9a6 only docker build if push to main 2023-10-15 08:16:02 -06:00
bel
fb68fce267 whitespace to GO 2023-10-15 08:13:45 -06:00
bel
95c4253e26 hm weird syntax parsing i guess 2023-10-15 08:13:21 -06:00
bel
8e246d07be add debug git diff name only 2023-10-15 08:11:52 -06:00
bel
76ea44a124 add echoes to dockerfile.cicd 2023-10-15 08:09:30 -06:00
bel
a3f7753a71 move vale to inside deploy.firebase.sh 2023-10-15 08:09:01 -06:00
bel
e23d61a4f0 un-debug building portfolio/resume/builder 2023-10-15 08:08:49 -06:00
bel
155bba7b5a sleep until docker ready 2023-10-15 08:05:32 -06:00
bel
143ae9ba04 sleep 2023-10-15 08:04:00 -06:00
bel
0512028c40 copy https://docs.gitness.com/pipelines/samples/docker_dind 2023-10-15 08:01:59 -06:00
bel
78e6af29ed mount dockersock for docker in docker 2023-10-15 07:58:58 -06:00
bel
fce00bad38 force build 2023-10-15 07:56:40 -06:00
bel
be5671616f install git for docker change detection 2023-10-15 07:55:42 -06:00
bel
e8bd522a52 rename portfolio/resume:latest to portfolio/resume/builder:latest 2023-10-15 07:54:08 -06:00
bel
30fdbe31f9 self-host registry for one portfolio/resume:latest builder 2023-10-15 07:48:07 -06:00
bel
6c9d11f035 change all ttf fonts to woff2 and replace in public 2023-10-15 07:25:13 -06:00
bel
47c11b8fba rm debug 2023-10-14 20:49:19 -06:00
bel
de9d53f494 readme 2023-10-14 20:44:34 -06:00
bel
712881ad02 Updated pipeline firebase-deploy 2023-10-15 02:39:56 +00:00
bel
41cee6f459 noninteractive and not home killing 2023-10-14 20:30:59 -06:00
bel
e3e14d6ed0 deploy.firebase.sh pushes static files to gitlab.com/breel/resume for render 2023-10-14 20:22:10 -06:00
4 changed files with 153 additions and 49 deletions

View File

@@ -2,40 +2,73 @@ version: 1
kind: pipeline kind: pipeline
spec: spec:
stages: stages:
- name: build - name: build
type: ci type: ci
spec: spec:
steps: volumes:
- name: debug - name: dockersock
type: run spec: {}
spec: type: temp
name: debug steps:
container: alpine/git - name: debug
shell: sh type: run
script: | spec:
echo build.event = ${{ build.event }} name: debug
echo build.target = ${{ build.target }} container: alpine/git
- name: lint shell: sh
type: run script: |
spec: export build_event=${{ build.event }}
name: lint export build_target=${{ build.target }}
container: jdkato/vale export build_before=${{ build.before }}
shell: sh export build_after=${{ build.after }}
script: | env | grep ^build_
set -x git --no-pager diff --name-only $build_before..$build_after
set -e - name: dind
f=$(mktemp) when: build.event == "push" && build.target == "main"
cat open-resume.com.d/local-storage-about-srcdoc-open-resume.json | sed 's/"[^"]*":/"."/g' > $f type: background
vale sync spec:
vale $f || true container:
- name: build image: registry-app.inhome.blapointe.com:5001/docker:latest
type: run privileged: true
when: build.event == "push" && build.target == "main" mount:
spec: - name: dockersock
name: build path: /var/run
container: andreysenov/firebase-tools - name: docker
envs: type: run
FIREBASE_CI_TOKEN: '${{ secrets.get("resume-firebase-squeaky2x3-gmail-token") }}' when: build.event == "push" && build.target == "main"
shell: sh spec:
script: | name: docker
bash ./deploy.firebase.sh 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
type: run
when: build.event == "push" && build.target == "main"
spec:
name: build
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
script: |
bash ./deploy.firebase.sh

11
Dockerfile.cicd Normal file
View 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

View File

@@ -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)

View File

@@ -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,19 +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
echo firebase uses squeaky2x3@gmail.com (
! tty || firebase login set -ueo pipefail
echo firebase init if [ -n "$GITLAB_PAT" ]; then
args=() export HOME="$(mktemp -d)"
log_args=() git clone https://gitlab%40breel.dev:"$GITLAB_PAT"@gitlab.com/breel/resume.git gitlab-resume.d
if ! tty; then git config --global user.name "gitlab@breel.dev"
args+=("--token" "$FIREBASE_CI_TOKEN") git config --global user.email "gitlab@breel.dev"
log_args+=("--token" "${FIREBASE_CI_TOKEN:0:1}") rm -rf ./gitlab-resume.d/*
test "${FIREBASE_CI_TOKEN:0:1}" != "$" cp -r ./public/* ./gitlab-resume.d/
fi cd ./gitlab-resume.d/
echo firebase deploy "${log_args[@]}" git add -A :/
firebase deploy "${args[@]}" 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
! tty || firebase login
echo firebase init
args=()
log_args=()
if ! tty; then
args+=("--token" "$FIREBASE_CI_TOKEN")
log_args+=("--token" "${FIREBASE_CI_TOKEN:0:1}")
test "${FIREBASE_CI_TOKEN:0:1}" != "$"
fi
echo firebase deploy "${log_args[@]}"
firebase deploy "${args[@]}"
)