Skip to content

Commit 79d607e

Browse files
Persist the deleted previews info for future jobs
This uses the labels added in #4 to generate and persist a json file with a list of previews info associated with the containers removed during the current orb execution. The file format is something like: ``` { "PR_NUMBER": { "preview_url": "https://SUBDOMAIN.DOMAIN", "branch": "BRANCH" } } ``` This adopts the same approach used in #3, so the way of retrieving the persisted file is the same: ``` steps: - attach_workspace: # Must be absolute path or relative path from working_directory at: /tmp/workspace - run: | cat /tmp/workspace/deleted-previews.json ``` To generate the json file it uses `docker inspect` to retrieve the containers info in a json format and `jq` to parse this info: ``` # This selects only the containers with a label named `pull-request` map(select(.Config.Labels["pull-request"])) # This maps the container info returned by `docker inspect` into an array of # `{"key": "PR_NUMBER", "value": {"branch": "BRANCH", "preview_url": "PREVIEW_URL"}}` map({ key: .Config.Labels["pull-request"], value: { branch: .Config.Labels["branch"], preview_url: "https://\(.Config.Labels["subdomain"]).<< parameters.domain >>" } }) # Convert an array `[{"key": k, "value": v}]` into an object `{k: v}` from_entries ```
1 parent dcbc82b commit 79d607e

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

source.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,11 @@ jobs:
148148
set +e
149149
ssh << parameters.user >>@<< parameters.server >> "docker ps | grep $CIRCLE_PROJECT_REPONAME | head -n << parameters.fresh_containers_count >>" | awk '{ print $1 }' | tr '\n' '|' | sed 's/|$/\n/' > grep_regex
150150
ssh << parameters.user >>@<< parameters.server >> "docker ps | grep $CIRCLE_PROJECT_REPONAME | grep -vE '`cat grep_regex`'" | awk '{print $2}' > old_containers
151+
ssh << parameters.user >>@<< parameters.server >> "docker inspect "`cat old_containers`"" | jq 'map(select(.Config.Labels["pull-request"])) | map({key: .Config.Labels["pull-request"], value: {branch: .Config.Labels["branch"], preview_url: "https://\(.Config.Labels["subdomain"]).<< parameters.domain >>"}}) | from_entries' > workspace/deleted-previews.json
151152
ssh << parameters.user >>@<< parameters.server >> "docker rm -f "`cat old_containers`""
152153
ssh << parameters.user >>@<< parameters.server >> "rm -fr "`cat old_containers | sed "s/$CIRCLE_PROJECT_REPONAME-/$CIRCLE_PROJECT_REPONAME\//g"`""
153154
- persist_to_workspace:
154155
root: workspace
155156
paths:
156157
- preview-url
158+
- deleted-previews.json

0 commit comments

Comments
 (0)