Exporting environment variables Exporting CI Exporting DISPLAY Exporting PAGER Exporting SEMAPHORE Exporting SEMAPHORE_AGENT_MACHINE_ENVIRONMENT_TYPE Exporting SEMAPHORE_AGENT_MACHINE_OS_IMAGE Exporting SEMAPHORE_AGENT_MACHINE_TYPE Exporting SEMAPHORE_ARTIFACT_TOKEN Exporting SEMAPHORE_CACHE_ARCHIVE_METHOD Exporting SEMAPHORE_CACHE_BACKEND Exporting SEMAPHORE_CACHE_PRIVATE_KEY_PATH Exporting SEMAPHORE_CACHE_URL Exporting SEMAPHORE_CACHE_USERNAME Exporting SEMAPHORE_GIT_BRANCH Exporting SEMAPHORE_GIT_COMMITTER Exporting SEMAPHORE_GIT_COMMIT_AUTHOR Exporting SEMAPHORE_GIT_COMMIT_RANGE Exporting SEMAPHORE_GIT_DIR Exporting SEMAPHORE_GIT_PROVIDER Exporting SEMAPHORE_GIT_REF Exporting SEMAPHORE_GIT_REF_TYPE Exporting SEMAPHORE_GIT_REPO_NAME Exporting SEMAPHORE_GIT_REPO_SLUG Exporting SEMAPHORE_GIT_SHA Exporting SEMAPHORE_GIT_URL Exporting SEMAPHORE_GIT_WORKING_BRANCH Exporting SEMAPHORE_JOB_CREATION_TIME Exporting SEMAPHORE_JOB_ID Exporting SEMAPHORE_JOB_NAME Exporting SEMAPHORE_JOB_TYPE Exporting SEMAPHORE_ORGANIZATION_URL Exporting SEMAPHORE_PIPELINE_0_ARTEFACT_ID Exporting SEMAPHORE_PIPELINE_ARTEFACT_ID Exporting SEMAPHORE_PIPELINE_ID Exporting SEMAPHORE_PIPELINE_PROMOTED_BY Exporting SEMAPHORE_PIPELINE_PROMOTION Exporting SEMAPHORE_PIPELINE_RERUN Exporting SEMAPHORE_PROJECT_ID Exporting SEMAPHORE_PROJECT_NAME Exporting SEMAPHORE_TOOLBOX_METRICS_ENABLED Exporting SEMAPHORE_WORKFLOW_HOOK_SOURCE Exporting SEMAPHORE_WORKFLOW_ID Exporting SEMAPHORE_WORKFLOW_NUMBER Exporting SEMAPHORE_WORKFLOW_RERUN Exporting SEMAPHORE_WORKFLOW_TRIGGERED_BY Exporting SEMAPHORE_WORKFLOW_TRIGGERED_BY_API Exporting SEMAPHORE_WORKFLOW_TRIGGERED_BY_HOOK Exporting SEMAPHORE_WORKFLOW_TRIGGERED_BY_MANUAL_RUN Exporting SEMAPHORE_WORKFLOW_TRIGGERED_BY_SCHEDULE Exporting SEMAPHORE_YAML_FILE_PATH Exporting SSH_PRIVATE_KEY_PATH Exporting TERM Injecting Files Injecting /home/semaphore/.ssh/semaphore_cache_key with file mode 0600 Injecting /home/semaphore/.ssh/id_rsa with file mode 0600 Running the pre-job hook configured in the agent Running: source /opt/semaphoreci/prejob/pre_job.sh Warning: The agent is configured to fail the job if the pre-job hook fails. Installing toolbox in pre-job-hook Toolbox download URL: http://packages.semaphoreci.com/toolbox/releases/download/v1.22.10/linux.tar Tar file: linux.tar Attempt 5 toolbox/ toolbox/sem-dockerize toolbox/toolbox toolbox/retry toolbox/enetwork toolbox/artifact toolbox/install-toolbox toolbox/system-metrics-collector toolbox/libcheckout toolbox/cache toolbox/when_otp_24 toolbox/spc toolbox/libchecksum toolbox/when_otp_26 toolbox/when_otp_25 toolbox/install-package toolbox/README.md toolbox/sem-context toolbox/test-results toolbox/sem-version toolbox/ssh-session-cli toolbox/sem-service toolbox/sem-install toolbox/sem-service-check-params toolbox/Dockerfile.dev toolbox/sem-semantic-release retry installed ssh-session-cli installed cache installed sem-context installed sem-service installed sem-dockerize installed sem-service-check-params installed sem-semantic-release installed Installing the artifacts CLI artifacts installed Installing the test results CLI test-results installed Installing the install-package for linux install-package installed Installing the SPC CLI spc installed Installing the when CLI when installed Installing the enetwork CLI enetwork installed Starting to collect System Metrics in /tmp/system-metrics Starting virtual X frame buffer: Xvfb. Toolbox installed Starting ssh-agent Agent pid 3002 ssh-agent started Connecting to cache # 116.202.32.43:29920 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.11 # 116.202.32.43:29920 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.11 # 116.202.32.43:29920 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.11 # 116.202.32.43:29920 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.11 # 116.202.32.43:29920 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.11 Identity added: /home/semaphore/.ssh/semaphore_cache_key (/home/semaphore/.ssh/semaphore_cache_key) export GIT_LFS_SKIP_SMUDGE=1 checkout Performing shallow clone with depth: 50 Cloning into 'pylib'... Warning: Permanently added 'github.com,140.82.121.4' (ECDSA) to the list of known hosts. remote: Enumerating objects: 413, done. remote: Counting objects: 0% (1/413) remote: Counting objects: 1% (5/413) remote: Counting objects: 2% (9/413) remote: Counting objects: 3% (13/413) remote: Counting objects: 4% (17/413) remote: Counting objects: 5% (21/413) remote: Counting objects: 6% (25/413) remote: Counting objects: 7% (29/413) remote: Counting objects: 8% (34/413) remote: Counting objects: 9% (38/413) remote: Counting objects: 10% (42/413) remote: Counting objects: 11% (46/413) remote: Counting objects: 12% (50/413) remote: Counting objects: 13% (54/413) remote: Counting objects: 14% (58/413) remote: Counting objects: 15% (62/413) remote: Counting objects: 16% (67/413) remote: Counting objects: 17% (71/413) remote: Counting objects: 18% (75/413) remote: Counting objects: 19% (79/413) remote: Counting objects: 20% (83/413) remote: Counting objects: 21% (87/413) remote: Counting objects: 22% (91/413) remote: Counting objects: 23% (95/413) remote: Counting objects: 24% (100/413) remote: Counting objects: 25% (104/413) remote: Counting objects: 26% (108/413) remote: Counting objects: 27% (112/413) remote: Counting objects: 28% (116/413) remote: Counting objects: 29% (120/413) remote: Counting objects: 30% (124/413) remote: Counting objects: 31% (129/413) remote: Counting objects: 32% (133/413) remote: Counting objects: 33% (137/413) remote: Counting objects: 34% (141/413) remote: Counting objects: 35% (145/413) remote: Counting objects: 36% (149/413) remote: Counting objects: 37% (153/413) remote: Counting objects: 38% (157/413) remote: Counting objects: 39% (162/413) remote: Counting objects: 40% (166/413) remote: Counting objects: 41% (170/413) remote: Counting objects: 42% (174/413) remote: Counting objects: 43% (178/413) remote: Counting objects: 44% (182/413) remote: Counting objects: 45% (186/413) remote: Counting objects: 46% (190/413) remote: Counting objects: 47% (195/413) remote: Counting objects: 48% (199/413) remote: Counting objects: 49% (203/413) remote: Counting objects: 50% (207/413) remote: Counting objects: 51% (211/413) remote: Counting objects: 52% (215/413) remote: Counting objects: 53% (219/413) remote: Counting objects: 54% (224/413) remote: Counting objects: 55% (228/413) remote: Counting objects: 56% (232/413) remote: Counting objects: 57% (236/413) remote: Counting objects: 58% (240/413) remote: Counting objects: 59% (244/413) remote: Counting objects: 60% (248/413) remote: Counting objects: 61% (252/413) remote: Counting objects: 62% (257/413) remote: Counting objects: 63% (261/413) remote: Counting objects: 64% (265/413) remote: Counting objects: 65% (269/413) remote: Counting objects: 66% (273/413) remote: Counting objects: 67% (277/413) remote: Counting objects: 68% (281/413) remote: Counting objects: 69% (285/413) remote: Counting objects: 70% (290/413) remote: Counting objects: 71% (294/413) remote: Counting objects: 72% (298/413) remote: Counting objects: 73% (302/413) remote: Counting objects: 74% (306/413) remote: Counting objects: 75% (310/413) remote: Counting objects: 76% (314/413) remote: Counting objects: 77% (319/413) remote: Counting objects: 78% (323/413) remote: Counting objects: 79% (327/413) remote: Counting objects: 80% (331/413) remote: Counting objects: 81% (335/413) remote: Counting objects: 82% (339/413) remote: Counting objects: 83% (343/413) remote: Counting objects: 84% (347/413) remote: Counting objects: 85% (352/413) remote: Counting objects: 86% (356/413) remote: Counting objects: 87% (360/413) remote: Counting objects: 88% (364/413) remote: Counting objects: 89% (368/413) remote: Counting objects: 90% (372/413) remote: Counting objects: 91% (376/413) remote: Counting objects: 92% (380/413) remote: Counting objects: 93% (385/413) remote: Counting objects: 94% (389/413) remote: Counting objects: 95% (393/413) remote: Counting objects: 96% (397/413) remote: Counting objects: 97% (401/413) remote: Counting objects: 98% (405/413) remote: Counting objects: 99% (409/413) remote: Counting objects: 100% (413/413) remote: Counting objects: 100% (413/413), done. remote: Compressing objects: 0% (1/167) remote: Compressing objects: 1% (2/167) remote: Compressing objects: 2% (4/167) remote: Compressing objects: 3% (6/167) remote: Compressing objects: 4% (7/167) remote: Compressing objects: 5% (9/167) remote: Compressing objects: 6% (11/167) remote: Compressing objects: 7% (12/167) remote: Compressing objects: 8% (14/167) remote: Compressing objects: 9% (16/167) remote: Compressing objects: 10% (17/167) remote: Compressing objects: 11% (19/167) remote: Compressing objects: 12% (21/167) remote: Compressing objects: 13% (22/167) remote: Compressing objects: 14% (24/167) remote: Compressing objects: 15% (26/167) remote: Compressing objects: 16% (27/167) remote: Compressing objects: 17% (29/167) remote: Compressing objects: 18% (31/167) remote: Compressing objects: 19% (32/167) remote: Compressing objects: 20% (34/167) remote: Compressing objects: 21% (36/167) remote: Compressing objects: 22% (37/167) remote: Compressing objects: 23% (39/167) remote: Compressing objects: 24% (41/167) remote: Compressing objects: 25% (42/167) remote: Compressing objects: 26% (44/167) remote: Compressing objects: 27% (46/167) remote: Compressing objects: 28% (47/167) remote: Compressing objects: 29% (49/167) remote: Compressing objects: 30% (51/167) remote: Compressing objects: 31% (52/167) remote: Compressing objects: 32% (54/167) remote: Compressing objects: 33% (56/167) remote: Compressing objects: 34% (57/167) remote: Compressing objects: 35% (59/167) remote: Compressing objects: 36% (61/167) remote: Compressing objects: 37% (62/167) remote: Compressing objects: 38% (64/167) remote: Compressing objects: 39% (66/167) remote: Compressing objects: 40% (67/167) remote: Compressing objects: 41% (69/167) remote: Compressing objects: 42% (71/167) remote: Compressing objects: 43% (72/167) remote: Compressing objects: 44% (74/167) remote: Compressing objects: 45% (76/167) remote: Compressing objects: 46% (77/167) remote: Compressing objects: 47% (79/167) remote: Compressing objects: 48% (81/167) remote: Compressing objects: 49% (82/167) remote: Compressing objects: 50% (84/167) remote: Compressing objects: 51% (86/167) remote: Compressing objects: 52% (87/167) remote: Compressing objects: 53% (89/167) remote: Compressing objects: 54% (91/167) remote: Compressing objects: 55% (92/167) remote: Compressing objects: 56% (94/167) remote: Compressing objects: 57% (96/167) remote: Compressing objects: 58% (97/167) remote: Compressing objects: 59% (99/167) remote: Compressing objects: 60% (101/167) remote: Compressing objects: 61% (102/167) remote: Compressing objects: 62% (104/167) remote: Compressing objects: 63% (106/167) remote: Compressing objects: 64% (107/167) remote: Compressing objects: 65% (109/167) remote: Compressing objects: 66% (111/167) remote: Compressing objects: 67% (112/167) remote: Compressing objects: 68% (114/167) remote: Compressing objects: 69% (116/167) remote: Compressing objects: 70% (117/167) remote: Compressing objects: 71% (119/167) remote: Compressing objects: 72% (121/167) remote: Compressing objects: 73% (122/167) remote: Compressing objects: 74% (124/167) remote: Compressing objects: 75% (126/167) remote: Compressing objects: 76% (127/167) remote: Compressing objects: 77% (129/167) remote: Compressing objects: 78% (131/167) remote: Compressing objects: 79% (132/167) remote: Compressing objects: 80% (134/167) remote: Compressing objects: 81% (136/167) remote: Compressing objects: 82% (137/167) remote: Compressing objects: 83% (139/167) remote: Compressing objects: 84% (141/167) remote: Compressing objects: 85% (142/167) remote: Compressing objects: 86% (144/167) remote: Compressing objects: 87% (146/167) remote: Compressing objects: 88% (147/167) remote: Compressing objects: 89% (149/167) remote: Compressing objects: 90% (151/167) remote: Compressing objects: 91% (152/167) remote: Compressing objects: 92% (154/167) remote: Compressing objects: 93% (156/167) remote: Compressing objects: 94% (157/167) remote: Compressing objects: 95% (159/167) remote: Compressing objects: 96% (161/167) remote: Compressing objects: 97% (162/167) remote: Compressing objects: 98% (164/167) remote: Compressing objects: 99% (166/167) remote: Compressing objects: 100% (167/167) remote: Compressing objects: 100% (167/167), done. Receiving objects: 0% (1/413) Receiving objects: 1% (5/413) Receiving objects: 2% (9/413) Receiving objects: 3% (13/413) Receiving objects: 4% (17/413) Receiving objects: 5% (21/413) Receiving objects: 6% (25/413) Receiving objects: 7% (29/413) Receiving objects: 8% (34/413) Receiving objects: 9% (38/413) Receiving objects: 10% (42/413) Receiving objects: 11% (46/413) Receiving objects: 12% (50/413) Receiving objects: 13% (54/413) Receiving objects: 14% (58/413) Receiving objects: 15% (62/413) Receiving objects: 16% (67/413) Receiving objects: 17% (71/413) Receiving objects: 18% (75/413) Receiving objects: 19% (79/413) Receiving objects: 20% (83/413) Receiving objects: 21% (87/413) Receiving objects: 22% (91/413) Receiving objects: 23% (95/413) Receiving objects: 24% (100/413) Receiving objects: 25% (104/413) Receiving objects: 26% (108/413) Receiving objects: 27% (112/413) Receiving objects: 28% (116/413) Receiving objects: 29% (120/413) Receiving objects: 30% (124/413) Receiving objects: 31% (129/413) Receiving objects: 32% (133/413) Receiving objects: 33% (137/413) Receiving objects: 34% (141/413) Receiving objects: 35% (145/413) Receiving objects: 36% (149/413) Receiving objects: 37% (153/413) Receiving objects: 38% (157/413) Receiving objects: 39% (162/413) Receiving objects: 40% (166/413) Receiving objects: 41% (170/413) Receiving objects: 42% (174/413) Receiving objects: 43% (178/413) Receiving objects: 44% (182/413) Receiving objects: 45% (186/413) Receiving objects: 46% (190/413) Receiving objects: 47% (195/413) Receiving objects: 48% (199/413) Receiving objects: 49% (203/413) Receiving objects: 50% (207/413) Receiving objects: 51% (211/413) Receiving objects: 52% (215/413) Receiving objects: 53% (219/413) Receiving objects: 54% (224/413) Receiving objects: 55% (228/413) Receiving objects: 56% (232/413) Receiving objects: 57% (236/413) Receiving objects: 58% (240/413) Receiving objects: 59% (244/413) Receiving objects: 60% (248/413) Receiving objects: 61% (252/413) Receiving objects: 62% (257/413) Receiving objects: 63% (261/413) Receiving objects: 64% (265/413) Receiving objects: 65% (269/413) Receiving objects: 66% (273/413) Receiving objects: 67% (277/413) Receiving objects: 68% (281/413) Receiving objects: 69% (285/413) Receiving objects: 70% (290/413) Receiving objects: 71% (294/413) Receiving objects: 72% (298/413) Receiving objects: 73% (302/413) remote: Total 413 (delta 261), reused 348 (delta 230), pack-reused 0 (from 0) Receiving objects: 74% (306/413) Receiving objects: 75% (310/413) Receiving objects: 76% (314/413) Receiving objects: 77% (319/413) Receiving objects: 78% (323/413) Receiving objects: 79% (327/413) Receiving objects: 80% (331/413) Receiving objects: 81% (335/413) Receiving objects: 82% (339/413) Receiving objects: 83% (343/413) Receiving objects: 84% (347/413) Receiving objects: 85% (352/413) Receiving objects: 86% (356/413) Receiving objects: 87% (360/413) Receiving objects: 88% (364/413) Receiving objects: 89% (368/413) Receiving objects: 90% (372/413) Receiving objects: 91% (376/413) Receiving objects: 92% (380/413) Receiving objects: 93% (385/413) Receiving objects: 94% (389/413) Receiving objects: 95% (393/413) Receiving objects: 96% (397/413) Receiving objects: 97% (401/413) Receiving objects: 98% (405/413) Receiving objects: 99% (409/413) Receiving objects: 100% (413/413) Receiving objects: 100% (413/413), 164.58 KiB | 915.00 KiB/s, done. Resolving deltas: 0% (0/261) Resolving deltas: 1% (3/261) Resolving deltas: 2% (6/261) Resolving deltas: 3% (8/261) Resolving deltas: 4% (11/261) Resolving deltas: 5% (14/261) Resolving deltas: 6% (16/261) Resolving deltas: 7% (19/261) Resolving deltas: 8% (21/261) Resolving deltas: 9% (24/261) Resolving deltas: 10% (27/261) Resolving deltas: 11% (29/261) Resolving deltas: 12% (32/261) Resolving deltas: 13% (34/261) Resolving deltas: 14% (37/261) Resolving deltas: 15% (40/261) Resolving deltas: 16% (42/261) Resolving deltas: 17% (45/261) Resolving deltas: 18% (47/261) Resolving deltas: 19% (50/261) Resolving deltas: 20% (53/261) Resolving deltas: 21% (55/261) Resolving deltas: 22% (58/261) Resolving deltas: 23% (61/261) Resolving deltas: 24% (63/261) Resolving deltas: 25% (66/261) Resolving deltas: 26% (68/261) Resolving deltas: 27% (72/261) Resolving deltas: 28% (74/261) Resolving deltas: 29% (76/261) Resolving deltas: 30% (79/261) Resolving deltas: 31% (81/261) Resolving deltas: 32% (84/261) Resolving deltas: 33% (87/261) Resolving deltas: 34% (89/261) Resolving deltas: 35% (92/261) Resolving deltas: 36% (94/261) Resolving deltas: 37% (97/261) Resolving deltas: 38% (100/261) Resolving deltas: 39% (102/261) Resolving deltas: 40% (105/261) Resolving deltas: 41% (108/261) Resolving deltas: 42% (110/261) Resolving deltas: 43% (113/261) Resolving deltas: 44% (115/261) Resolving deltas: 45% (118/261) Resolving deltas: 46% (121/261) Resolving deltas: 47% (123/261) Resolving deltas: 48% (126/261) Resolving deltas: 49% (128/261) Resolving deltas: 50% (131/261) Resolving deltas: 51% (134/261) Resolving deltas: 52% (136/261) Resolving deltas: 53% (139/261) Resolving deltas: 54% (141/261) Resolving deltas: 55% (144/261) Resolving deltas: 56% (147/261) Resolving deltas: 57% (149/261) Resolving deltas: 58% (152/261) Resolving deltas: 59% (154/261) Resolving deltas: 60% (157/261) Resolving deltas: 61% (160/261) Resolving deltas: 62% (162/261) Resolving deltas: 63% (165/261) Resolving deltas: 64% (168/261) Resolving deltas: 65% (170/261) Resolving deltas: 66% (173/261) Resolving deltas: 67% (175/261) Resolving deltas: 68% (178/261) Resolving deltas: 69% (181/261) Resolving deltas: 70% (183/261) Resolving deltas: 71% (186/261) Resolving deltas: 72% (188/261) Resolving deltas: 73% (191/261) Resolving deltas: 74% (194/261) Resolving deltas: 75% (196/261) Resolving deltas: 76% (199/261) Resolving deltas: 77% (201/261) Resolving deltas: 78% (204/261) Resolving deltas: 79% (207/261) Resolving deltas: 80% (209/261) Resolving deltas: 81% (212/261) Resolving deltas: 82% (215/261) Resolving deltas: 83% (217/261) Resolving deltas: 84% (220/261) Resolving deltas: 85% (222/261) Resolving deltas: 86% (225/261) Resolving deltas: 87% (228/261) Resolving deltas: 88% (230/261) Resolving deltas: 89% (233/261) Resolving deltas: 90% (235/261) Resolving deltas: 91% (238/261) Resolving deltas: 92% (241/261) Resolving deltas: 93% (243/261) Resolving deltas: 94% (246/261) Resolving deltas: 95% (248/261) Resolving deltas: 96% (251/261) Resolving deltas: 97% (254/261) Resolving deltas: 98% (256/261) Resolving deltas: 99% (259/261) Resolving deltas: 100% (261/261) Resolving deltas: 100% (261/261), done. HEAD is now at 4960b5b updated bash-tools export INPUT_FILE="$SEMAPHORE_YAML_FILE_PATH" export OUTPUT_FILE="${SEMAPHORE_YAML_FILE_PATH}.output.yml" export LOGS_FILE="${SEMAPHORE_YAML_FILE_PATH}.logs.jsonl" cat $INPUT_FILE # # Author: Hari Sekhon # Date: 2020-03-16 14:02:53 +0000 (Mon, 16 Mar 2020) # # vim:ts=2:sts=2:sw=2:et # # https://github.com/HariSekhon/pylib # # License: see accompanying Hari Sekhon LICENSE file # # If you're using my code you're welcome to connect with me on LinkedIn and optionally send me feedback to help steer this or other code I publish # # https://www.linkedin.com/in/HariSekhon # # ============================================================================ # # S e m a p h o r e C I # ============================================================================ # # https://docs.semaphoreci.com/reference/pipeline-yaml-reference/ version: v1.0 name: pylib agent: # https://docs.semaphoreci.com/reference/machine-types#linux machine: type: e1-standard-2 os_image: ubuntu2004 execution_time_limit: hours: 3 blocks: - name: Linux build run: when: "branch = 'master' AND change_in('/', {exclude: ['**/*.md']})" #execution_time_limit: # hours: 2 task: #env_vars: # $PATH selects /usr/bin/python and /usr/local/bin/pip which are mismatched versions of Python #- name: PYTHON # value: python3 #- name: PIP # value: pip3 prologue: commands: - cache restore # prevents it getting stuck on config merge prompt on installing openssh-client pulling in openssh-server # # causes error: # # Not replacing deleted config file /etc/ssh/sshd_config # #- sudo rm -f /etc/ssh/sshd_config - export DEBIAN_FRONTEND=noninteractive - sudo -E apt-get update - sudo -E apt-get upgrade -y -o Dpkg::Options::="--force-confmiss" -o Dpkg::Options::="--force-confnew" - sudo dpkg --configure -a --force-confmiss --force-confnew #- echo "openssh-server openssh-server/conffile-diff select keep" | sudo debconf-set-selections #- sudo dpkg --configure -a --force-confdef --force-confold #- sudo apt-get upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" - sudo apt-get install -y openssh-server # each job is separate and could be run on a separate machine so all steps must be together jobs: - name: build commands: - checkout - setup/ci_bootstrap.sh - make init - make ci - make test epilogue: commands: - cache store - name: Mac build run: when: "branch = 'master'" task: # because otherwise on Mac it uses /usr/bin/python (2.7) but /usr/local/bin/pip (python 3.8) #env_vars: # to match /usr/local/bin/pip version from $PATH #- name: PYTHON # value: python3 # must be quoted to force string, otherwise pipeline fails to run with this parsing error: # Error: [{"Type mismatch. Expected String but got Integer.", "#/blocks/1/task/env_vars/1/value"}] #- name: DEBUG # value: "1" agent: # https://docs.semaphoreci.com/reference/machine-types#macos machine: type: a1-standard-4 os_image: macos-xcode15 prologue: commands: - cache restore # fix for: # pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. - brew install openssl - brew reinstall python - brew reinstall wget # avoid Mac SSL errors: # # ERROR: Loading command: install (LoadError) # dlopen(/Users/semaphore/.rbenv/versions/2.5.1/lib/ruby/2.5.0/x86_64-darwin18/openssl.bundle, 9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib # Referenced from: /Users/semaphore/.rbenv/versions/2.5.1/lib/ruby/2.5.0/x86_64-darwin18/openssl.bundle # Reason: image not found - /Users/semaphore/.rbenv/versions/2.5.1/lib/ruby/2.5.0/x86_64-darwin18/openssl.bundle # ERROR: While executing gem ... (NoMethodError) # undefined method `invoke_with_build_args' for nil:NilClass# # - rbenv global system # also considered this: # - for version in $(rbenv versions | grep -v system | sed 's/^\*//'); do yes | rbenv uninstall "$version"; rbenv install "$version"; done # # fix for python vs pip version mismatch - ln -svf -- /usr/local/bin/python3 /usr/local/bin/python jobs: - name: build commands: - checkout - make init - make ci - make test epilogue: commands: - cache store echo "Compiling $INPUT_FILE into $OUTPUT_FILE and storring logs to $LOGS_FILE" Compiling .semaphore/semaphore.yml into .semaphore/semaphore.yml.output.yml and storring logs to .semaphore/semaphore.yml.logs.jsonl spc compile --input $INPUT_FILE --output $OUTPUT_FILE --logs $LOGS_FILE Extracting commands from commands_files in .semaphore/semaphore.yml. Found commands_file fields at 0 locations. Extracting commands from commands_files. Evaluating template expressions in .semaphore/semaphore.yml. Found template expressions at 0 locations. Substituting templates with their values. Evaluating change_in expressions in .semaphore/semaphore.yml. Found when expressions at 2 locations. 001 | Location: [blocks 0 run when] | File: .semaphore/semaphore.yml | Expression: branch = 'master' AND change_in('/', {exclude: ['**/*.md']}) 002 | Location: [blocks 1 run when] | File: .semaphore/semaphore.yml | Expression: branch = 'master' Evaluating when expressions. 001 | When Expression: branch = 'master' AND change_in('/', {exclude: ['**/*.md']}) | | change_in(["/",{"exclude":["**/*.md"]}]) | Running git diff --shortstat 4a9f87a265ea4f169e9c29e847362b2d20207455...4960b5b8c0bbb5b9df391a62694403be155c2c94 | Running git diff --name-only 4a9f87a265ea4f169e9c29e847362b2d20207455...4960b5b8c0bbb5b9df391a62694403be155c2c94 | | Comparing change_in with git diff | (match) .circleci/config.yml | | Result: true 002 | When Expression: branch = 'master' Exporting environment variables Exporting SEMAPHORE_JOB_RESULT export BASE_NAME=$SEMAPHORE_PIPELINE_ID-$(basename $INPUT_FILE) export ARTIFACT_LOG_DESTINATION="compilation/$BASE_NAME.logs" echo "Uploading $LOGS_FILE into $ARTIFACT_LOG_DESTINATION" Uploading .semaphore/semaphore.yml.logs.jsonl into compilation/f4c65fe9-4b93-426d-8ebf-2f2633238741-semaphore.yml.logs artifact push workflow $LOGS_FILE -d $ARTIFACT_LOG_DESTINATION [Mar 14 19:27:04.694] Successfully pushed artifact for current workflow. [Mar 14 19:27:04.694] * Local source: .semaphore/semaphore.yml.logs.jsonl. [Mar 14 19:27:04.694] * Remote destination: artifacts/workflows/51b6ef1d-b141-4906-abc7-d8446cb6c8e9/compilation/f4c65fe9-4b93-426d-8ebf-2f2633238741-semaphore.yml.logs. export ARTIFACT_YAML_DESTINATION="compilation/$BASE_NAME" echo "Uploading $OUTPUT_FILE into $ARTIFACT_YAML_DESTINATION" Uploading .semaphore/semaphore.yml.output.yml into compilation/f4c65fe9-4b93-426d-8ebf-2f2633238741-semaphore.yml artifact push workflow $OUTPUT_FILE -d $ARTIFACT_YAML_DESTINATION [Mar 14 19:27:05.237] Successfully pushed artifact for current workflow. [Mar 14 19:27:05.237] * Local source: .semaphore/semaphore.yml.output.yml. [Mar 14 19:27:05.237] * Remote destination: artifacts/workflows/51b6ef1d-b141-4906-abc7-d8446cb6c8e9/compilation/f4c65fe9-4b93-426d-8ebf-2f2633238741-semaphore.yml.