Last active
July 21, 2022 16:47
-
-
Save soulchips/106cd8aba6baca4c36d7aeb07ff163fd to your computer and use it in GitHub Desktop.
realitycheck with vm-jobs behind a proxy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: 2 | |
resource_job_defaults: &resource_job_defaults | |
docker: | |
- image: 'cimg/base:2021.02-20.04' | |
steps: | |
- run: | |
name: verify required Environment Variables | |
command: | | |
if [ -z "${CIRCLE_HOSTNAME}" -o -z "${CIRCLE_TOKEN}" ];then | |
echo "You must provide 2 Environment Variables in project settings for this job to run." | |
echo "CIRCLE_HOSTNAME: Should be the scheme://domain of your install. \"https://ci.example.com\"" | |
echo "CIRCLE_TOKEN: Should be the API Key of an admin or project level with Scope:All" | |
exit 1 | |
fi | |
- run: | |
name: verify that job ran with the requested resource_class option | |
command: | | |
curl -k \ | |
"${CIRCLE_HOSTNAME%/}/api/v1.1/project/github/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/$CIRCLE_BUILD_NUM?\ | |
circle-token=$CIRCLE_TOKEN" | \ | |
jq '.picard.resource_class.class' | grep $CIRCLE_JOB | |
sleep 300 | |
remote_docker_defaults: &remote_docker_defaults | |
docker: [{image: 'docker:17.06-git'}] | |
include_proxy_env: &include_proxy_env | |
name: "Set Proxy Env" | |
command: | | |
sudo mkdir /etc/systemd/system/docker.service.d | |
sudo bash -c 'echo [Service] > /etc/systemd/system/docker.service.d/http-proxy.conf' | |
sudo bash -c 'echo Environment="HTTP_PROXY=http://<your-proxy>:<proxy-port>/" >> /etc/systemd/system/docker.service.d/http-proxy.conf' | |
sudo bash -c 'echo Environment="HTTPS_PROXY=http://<your-proxy>:<proxy-port>/" >> /etc/systemd/system/docker.service.d/http-proxy.conf' | |
sudo systemctl daemon-reload | |
sudo systemctl restart docker | |
echo 'docker restarted' | |
basic_docker_build: &basic_docker_build | |
name: "Build a really basic docker image" | |
command: | | |
dockerfile=Dockerfile | |
echo "FROM alpine:latest" > $dockerfile | |
echo "RUN echo hello" >> $dockerfile | |
docker build -f $dockerfile --tag throwaway:$CIRCLE_BUILD_NUM . | |
docker run --rm throwaway:$CIRCLE_BUILD_NUM | |
contexts_defaults: &contexts_defaults | |
docker: [{image: 'alpine:latest'}] | |
working_directory: /a/contexts/test | |
workspaces_defaults: &workspaces_defaults | |
docker: [{image: 'circleci/node:latest'}] | |
working_directory: ~/foo/bar | |
jobs: | |
# resource class jobs | |
small: # 1 vCPU, 2GB RAM | |
<<: *resource_job_defaults | |
resource_class: small | |
medium: # 2 vCPUs, 4GB RAM | |
<<: *resource_job_defaults | |
resource_class: medium | |
medium+: # 3 vCPUs, 6GB RAM | |
<<: *resource_job_defaults | |
resource_class: medium+ | |
large: # 4 vCPUs, 8GB RAM | |
<<: *resource_job_defaults | |
resource_class: large | |
xlarge: # 8 vCPUs, 16GB RAM | |
<<: *resource_job_defaults | |
resource_class: xlarge | |
# vm jobs | |
machine: | |
machine: true | |
steps: | |
- run: | |
<<: *include_proxy_env | |
- run: | |
<<: *basic_docker_build | |
- run: | | |
echo $SLEEP | |
date | |
sleep $SLEEP | |
date | |
echo 'Done sleeping.' | |
environment: | |
SLEEP: 1 | |
remote_docker: | |
<<: *remote_docker_defaults | |
steps: | |
- run: which docker | |
- run: docker -v | |
- setup_remote_docker | |
- run: | |
<<: *include_proxy_env | |
- run: | |
<<: *basic_docker_build | |
- run: docker version | |
docker_layer_caching: | |
<<: *remote_docker_defaults | |
steps: | |
- run: which docker | |
- run: docker -v | |
- setup_remote_docker: | |
docker_layer_caching: true | |
- run: | |
<<: *include_proxy_env | |
- run: | |
<<: *basic_docker_build | |
- run: docker version | |
machine_dlc: | |
machine: | |
docker_layer_caching: true | |
steps: | |
- run: which docker | |
- run: docker -v | |
- run: | |
<<: *include_proxy_env | |
- run: | |
<<: *basic_docker_build | |
- run: docker version | |
# feature jobs | |
contexts: | |
<<: *contexts_defaults | |
steps: | |
- run: env | grep CONTEXT_END_TO_END_TEST_VAR | |
multi-contexts: | |
<<: *contexts_defaults | |
steps: | |
- run: env | grep MULTI_CONTEXT_END_TO_END_VAR | |
write_workspace: | |
<<: *workspaces_defaults | |
steps: | |
- run: mkdir stuff | |
- run: echo 5 >./stuff/thing | |
- persist_to_workspace: | |
root: . | |
paths: | |
- stuff | |
read_workspace: | |
<<: *workspaces_defaults | |
steps: | |
- attach_workspace: | |
at: ./attached | |
- run: | | |
if [[ $(< ./attached/stuff/thing) != '5' ]]; then | |
echo 'Sadness, the value is not what we expected, so the workspace write/read did not work' | |
exit 1 | |
else | |
echo 'Yay, value matches' | |
exit 0 | |
fi | |
save_and_restore_cache: | |
docker: | |
- image: circleci/python | |
working_directory: ~/realitycheck | |
steps: | |
- checkout | |
- run: mkdir -p stuff | |
- run: echo 5 >./stuff/thing | |
- save_cache: | |
key: v3-file-cache-{{ .BuildNum }} | |
paths: | |
- ./stuff/thing | |
- run: rm -rf ./stuff/thing | |
- run: sleep 5 | |
- restore_cache: | |
keys: | |
- v3-file-cache-{{ .BuildNum }} | |
- run: | | |
if [[ $(< stuff/thing) != '5' ]]; then | |
exit 1 | |
else | |
echo "The cache was populated" | |
fi | |
artifacts_test_results: | |
docker: | |
- image: python:3.6.0 | |
working_directory: ~/realitycheck | |
steps: | |
- checkout | |
- run: | |
name: Creating Dummy Artifacts | |
command: | | |
echo "my artifact file" > /tmp/artifact-1.txt; | |
mkdir /tmp/artifacts; | |
echo "my artifact files in a dir" > /tmp/artifacts/artifact-2.txt; | |
- store_artifacts: | |
path: /tmp/artifact-1.txt | |
destination: artifact-file.txt | |
- store_artifacts: | |
path: /tmp/artifacts | |
- store_test_results: | |
path: test-results | |
workflows: | |
version: 2 | |
resource_class_jobs: | |
jobs: | |
- small | |
- medium | |
- medium+ | |
- large | |
- xlarge | |
vm_jobs: | |
jobs: | |
- machine | |
- remote_docker | |
- docker_layer_caching | |
- machine_dlc | |
feature_jobs: | |
jobs: | |
- save_and_restore_cache | |
- contexts: | |
context: org-global | |
- multi-contexts: | |
context: individual-local | |
- write_workspace | |
- read_workspace: | |
requires: | |
- write_workspace | |
- artifacts_test_results |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment