From ce34a0cdba77b6dee2de510ab3bd23480791797b Mon Sep 17 00:00:00 2001 From: Nandor Bors Date: Fri, 12 Apr 2024 12:15:13 +0300 Subject: [PATCH] add mac arm --- .semaphore/semaphore.yml | 86 +++++++++++++++++++++++++++++++++- release/create.sh | 10 ++++ release/install_in_tests.sh | 3 +- release/upload.sh | 12 +++++ tests/xcode15_sem_version.bats | 70 +++++++++++++++++++++++++++ 5 files changed, 179 insertions(+), 2 deletions(-) create mode 100644 tests/xcode15_sem_version.bats diff --git a/.semaphore/semaphore.yml b/.semaphore/semaphore.yml index e885a86b..907aa8f3 100644 --- a/.semaphore/semaphore.yml +++ b/.semaphore/semaphore.yml @@ -94,9 +94,11 @@ blocks: - artifact pull workflow bin/linux/amd64/cache -d cache-cli/bin/linux/amd64/cache - artifact pull workflow bin/linux/arm64/cache -d cache-cli/bin/linux/arm64/cache - artifact pull workflow bin/darwin/amd64/cache -d cache-cli/bin/darwin/amd64/cache + - artifact pull workflow bin/darwin/arm64/cache -d cache-cli/bin/darwin/arm64/cache - artifact pull workflow bin/linux/amd64/sem-context -d sem-context/bin/linux/amd64/sem-context - artifact pull workflow bin/linux/arm64/sem-context -d sem-context/bin/linux/arm64/sem-context - artifact pull workflow bin/darwin/amd64/sem-context -d sem-context/bin/darwin/amd64/sem-context + - artifact pull workflow bin/darwin/arm64/sem-context -d sem-context/bin/darwin/arm64/sem-context - bash release/create.sh - source release/install_in_tests.sh - git submodule init && git submodule update @@ -137,9 +139,11 @@ blocks: - artifact pull workflow bin/linux/amd64/cache -d cache-cli/bin/linux/amd64/cache - artifact pull workflow bin/linux/arm64/cache -d cache-cli/bin/linux/arm64/cache - artifact pull workflow bin/darwin/amd64/cache -d cache-cli/bin/darwin/amd64/cache + - artifact pull workflow bin/darwin/arm64/cache -d cache-cli/bin/darwin/arm64/cache - artifact pull workflow bin/linux/amd64/sem-context -d sem-context/bin/linux/amd64/sem-context - artifact pull workflow bin/linux/arm64/sem-context -d sem-context/bin/linux/arm64/sem-context - artifact pull workflow bin/darwin/amd64/sem-context -d sem-context/bin/darwin/amd64/sem-context + - artifact pull workflow bin/darwin/arm64/sem-context -d sem-context/bin/darwin/arm64/sem-context - bash release/create.sh - source release/install_in_tests.sh - git submodule init && git submodule update @@ -180,9 +184,11 @@ blocks: - artifact pull workflow bin/linux/amd64/cache -d cache-cli/bin/linux/amd64/cache - artifact pull workflow bin/linux/arm64/cache -d cache-cli/bin/linux/arm64/cache - artifact pull workflow bin/darwin/amd64/cache -d cache-cli/bin/darwin/amd64/cache + - artifact pull workflow bin/darwin/arm64/cache -d cache-cli/bin/darwin/arm64/cache - artifact pull workflow bin/linux/amd64/sem-context -d sem-context/bin/linux/amd64/sem-context - artifact pull workflow bin/linux/arm64/sem-context -d sem-context/bin/linux/arm64/sem-context - artifact pull workflow bin/darwin/amd64/sem-context -d sem-context/bin/darwin/amd64/sem-context + - artifact pull workflow bin/darwin/arm64/sem-context -d sem-context/bin/darwin/arm64/sem-context - bash release/create.sh - source release/install_in_tests.sh - git submodule init && git submodule update @@ -223,9 +229,11 @@ blocks: - artifact pull workflow bin/linux/amd64/cache -d cache-cli/bin/linux/amd64/cache - artifact pull workflow bin/linux/arm64/cache -d cache-cli/bin/linux/arm64/cache - artifact pull workflow bin/darwin/amd64/cache -d cache-cli/bin/darwin/amd64/cache + - artifact pull workflow bin/darwin/arm64/cache -d cache-cli/bin/darwin/arm64/cache - artifact pull workflow bin/linux/amd64/sem-context -d sem-context/bin/linux/amd64/sem-context - artifact pull workflow bin/linux/arm64/sem-context -d sem-context/bin/linux/arm64/sem-context - artifact pull workflow bin/darwin/amd64/sem-context -d sem-context/bin/darwin/amd64/sem-context + - artifact pull workflow bin/darwin/arm64/sem-context -d sem-context/bin/darwin/arm64/sem-context - bash release/create.sh - source release/install_in_tests.sh - git submodule init && git submodule update @@ -258,9 +266,11 @@ blocks: - artifact pull workflow bin/linux/amd64/cache -d cache-cli/bin/linux/amd64/cache - artifact pull workflow bin/linux/arm64/cache -d cache-cli/bin/linux/arm64/cache - artifact pull workflow bin/darwin/amd64/cache -d cache-cli/bin/darwin/amd64/cache + - artifact pull workflow bin/darwin/arm64/cache -d cache-cli/bin/darwin/arm64/cache - artifact pull workflow bin/linux/amd64/sem-context -d sem-context/bin/linux/amd64/sem-context - artifact pull workflow bin/linux/arm64/sem-context -d sem-context/bin/linux/arm64/sem-context - artifact pull workflow bin/darwin/amd64/sem-context -d sem-context/bin/darwin/amd64/sem-context + - artifact pull workflow bin/darwin/arm64/sem-context -d sem-context/bin/darwin/arm64/sem-context - bash release/create.sh - source tests/sftp_server/start_on_mac.sh - source release/install_in_tests.sh @@ -281,9 +291,11 @@ blocks: - artifact pull workflow bin/linux/amd64/cache -d cache-cli/bin/linux/amd64/cache - artifact pull workflow bin/linux/arm64/cache -d cache-cli/bin/linux/arm64/cache - artifact pull workflow bin/darwin/amd64/cache -d cache-cli/bin/darwin/amd64/cache + - artifact pull workflow bin/darwin/arm64/cache -d cache-cli/bin/darwin/arm64/cache - artifact pull workflow bin/linux/amd64/sem-context -d sem-context/bin/linux/amd64/sem-context - artifact pull workflow bin/linux/arm64/sem-context -d sem-context/bin/linux/arm64/sem-context - artifact pull workflow bin/darwin/amd64/sem-context -d sem-context/bin/darwin/amd64/sem-context + - artifact pull workflow bin/darwin/arm64/sem-context -d sem-context/bin/darwin/arm64/sem-context - bash release/create.sh - source release/create.sh - cd ~/$SEMAPHORE_GIT_DIR/ @@ -307,7 +319,7 @@ blocks: commands: - bash tests/sem_service/$TEST - - name: "Bats: Mac" + - name: "Bats: xcode14" dependencies: - "Build local CLIs" task: @@ -322,9 +334,11 @@ blocks: - artifact pull workflow bin/linux/amd64/cache -d cache-cli/bin/linux/amd64/cache - artifact pull workflow bin/linux/arm64/cache -d cache-cli/bin/linux/arm64/cache - artifact pull workflow bin/darwin/amd64/cache -d cache-cli/bin/darwin/amd64/cache + - artifact pull workflow bin/darwin/arm64/cache -d cache-cli/bin/darwin/arm64/cache - artifact pull workflow bin/linux/amd64/sem-context -d sem-context/bin/linux/amd64/sem-context - artifact pull workflow bin/linux/arm64/sem-context -d sem-context/bin/linux/arm64/sem-context - artifact pull workflow bin/darwin/amd64/sem-context -d sem-context/bin/darwin/amd64/sem-context + - artifact pull workflow bin/darwin/arm64/sem-context -d sem-context/bin/darwin/arm64/sem-context - bash release/create.sh - source tests/sftp_server/start_on_mac.sh @@ -363,6 +377,64 @@ blocks: commands: - 'test-results publish report.xml --name="Bats: Mac" --suite-prefix=$TEST' + - name: "Bats: xcode15 arm" + dependencies: + - "Build local CLIs" + task: + agent: + machine: + type: a2-standard-4 + os_image: macos-xcode15 + + prologue: + commands: + - checkout + - artifact pull workflow bin/linux/amd64/cache -d cache-cli/bin/linux/amd64/cache + - artifact pull workflow bin/linux/arm64/cache -d cache-cli/bin/linux/arm64/cache + - artifact pull workflow bin/darwin/amd64/cache -d cache-cli/bin/darwin/amd64/cache + - artifact pull workflow bin/darwin/arm64/cache -d cache-cli/bin/darwin/arm64/cache + - artifact pull workflow bin/linux/amd64/sem-context -d sem-context/bin/linux/amd64/sem-context + - artifact pull workflow bin/linux/arm64/sem-context -d sem-context/bin/linux/arm64/sem-context + - artifact pull workflow bin/darwin/amd64/sem-context -d sem-context/bin/darwin/amd64/sem-context + - artifact pull workflow bin/darwin/arm64/sem-context -d sem-context/bin/darwin/arm64/sem-context + - bash release/create.sh + - source tests/sftp_server/start_on_mac.sh + + jobs: + - name: "Cache tests" + matrix: + - env_var: TEST + values: + - tests/libcheckout.bats + - env_var: SEMAPHORE_CACHE_ARCHIVE_METHOD + values: + - shell-out + - native + - native-parallel + commands: + - source release/install_in_tests.sh + - git submodule init && git submodule update + - sudo ./tests/support/bats-core/install.sh /usr/local + - bats --report-formatter junit --tap --timing $TEST + + - name: "Non-cache tests" + matrix: + - env_var: TEST + values: + - tests/artifacts.bats + - tests/test-results.bats + - tests/xcode15_sem_version.bats + - tests/sem-semantic-release.bats + commands: + - source release/install_in_tests.sh + - git submodule init && git submodule update + - sudo ./tests/support/bats-core/install.sh /usr/local + - bats --report-formatter junit --tap --timing $TEST + epilogue: + always: + commands: + - 'test-results publish report.xml --name="Bats: Mac" --suite-prefix=$TEST' + - name: "Bats: Docker" dependencies: - "Build local CLIs" @@ -380,9 +452,11 @@ blocks: - artifact pull workflow bin/linux/amd64/cache -d cache-cli/bin/linux/amd64/cache - artifact pull workflow bin/linux/arm64/cache -d cache-cli/bin/linux/arm64/cache - artifact pull workflow bin/darwin/amd64/cache -d cache-cli/bin/darwin/amd64/cache + - artifact pull workflow bin/darwin/arm64/cache -d cache-cli/bin/darwin/arm64/cache - artifact pull workflow bin/linux/amd64/sem-context -d sem-context/bin/linux/amd64/sem-context - artifact pull workflow bin/linux/arm64/sem-context -d sem-context/bin/linux/arm64/sem-context - artifact pull workflow bin/darwin/amd64/sem-context -d sem-context/bin/darwin/amd64/sem-context + - artifact pull workflow bin/darwin/arm64/sem-context -d sem-context/bin/darwin/arm64/sem-context - bash release/create.sh - source tests/sftp_server/start_on_docker.sh jobs: @@ -435,9 +509,11 @@ blocks: - artifact pull workflow bin/linux/amd64/cache -d cache-cli/bin/linux/amd64/cache - artifact pull workflow bin/linux/arm64/cache -d cache-cli/bin/linux/arm64/cache - artifact pull workflow bin/darwin/amd64/cache -d cache-cli/bin/darwin/amd64/cache + - artifact pull workflow bin/darwin/arm64/cache -d cache-cli/bin/darwin/arm64/cache - artifact pull workflow bin/linux/amd64/sem-context -d sem-context/bin/linux/amd64/sem-context - artifact pull workflow bin/linux/arm64/sem-context -d sem-context/bin/linux/arm64/sem-context - artifact pull workflow bin/darwin/amd64/sem-context -d sem-context/bin/darwin/amd64/sem-context + - artifact pull workflow bin/darwin/arm64/sem-context -d sem-context/bin/darwin/arm64/sem-context - bash release/create.sh - apk add --update docker openrc - source tests/sftp_server/start_on_docker.sh @@ -484,9 +560,11 @@ blocks: - artifact pull workflow bin/linux/amd64/cache -d cache-cli/bin/linux/amd64/cache - artifact pull workflow bin/linux/arm64/cache -d cache-cli/bin/linux/arm64/cache - artifact pull workflow bin/darwin/amd64/cache -d cache-cli/bin/darwin/amd64/cache + - artifact pull workflow bin/darwin/arm64/cache -d cache-cli/bin/darwin/arm64/cache - artifact pull workflow bin/linux/amd64/sem-context -d sem-context/bin/linux/amd64/sem-context - artifact pull workflow bin/linux/arm64/sem-context -d sem-context/bin/linux/arm64/sem-context - artifact pull workflow bin/darwin/amd64/sem-context -d sem-context/bin/darwin/amd64/sem-context + - artifact pull workflow bin/darwin/arm64/sem-context -d sem-context/bin/darwin/arm64/sem-context - bash release/create.sh - source tests/sftp_server/start_on_linux.sh - sudo apt-get install -y python3.8-dev @@ -606,9 +684,11 @@ blocks: - artifact pull workflow bin/linux/amd64/cache -d cache-cli/bin/linux/amd64/cache - artifact pull workflow bin/linux/arm64/cache -d cache-cli/bin/linux/arm64/cache - artifact pull workflow bin/darwin/amd64/cache -d cache-cli/bin/darwin/amd64/cache + - artifact pull workflow bin/darwin/arm64/cache -d cache-cli/bin/darwin/arm64/cache - artifact pull workflow bin/linux/amd64/sem-context -d sem-context/bin/linux/amd64/sem-context - artifact pull workflow bin/linux/arm64/sem-context -d sem-context/bin/linux/arm64/sem-context - artifact pull workflow bin/darwin/amd64/sem-context -d sem-context/bin/darwin/amd64/sem-context + - artifact pull workflow bin/darwin/arm64/sem-context -d sem-context/bin/darwin/arm64/sem-context - bash release/create.sh - source release/install_in_tests.sh - git submodule init && git submodule update @@ -640,9 +720,11 @@ blocks: - artifact pull workflow bin/linux/amd64/cache -d cache-cli/bin/linux/amd64/cache - artifact pull workflow bin/linux/arm64/cache -d cache-cli/bin/linux/arm64/cache - artifact pull workflow bin/darwin/amd64/cache -d cache-cli/bin/darwin/amd64/cache + - artifact pull workflow bin/darwin/arm64/cache -d cache-cli/bin/darwin/arm64/cache - artifact pull workflow bin/linux/amd64/sem-context -d sem-context/bin/linux/amd64/sem-context - artifact pull workflow bin/linux/arm64/sem-context -d sem-context/bin/linux/arm64/sem-context - artifact pull workflow bin/darwin/amd64/sem-context -d sem-context/bin/darwin/amd64/sem-context + - artifact pull workflow bin/darwin/arm64/sem-context -d sem-context/bin/darwin/arm64/sem-context - bash release/create.sh - source release/install_in_tests.sh - git submodule init && git submodule update @@ -666,9 +748,11 @@ after_pipeline: - artifact pull workflow bin/linux/amd64/cache -d cache-cli/bin/linux/amd64/cache - artifact pull workflow bin/linux/arm64/cache -d cache-cli/bin/linux/arm64/cache - artifact pull workflow bin/darwin/amd64/cache -d cache-cli/bin/darwin/amd64/cache + - artifact pull workflow bin/darwin/arm64/cache -d cache-cli/bin/darwin/arm64/cache - artifact pull workflow bin/linux/amd64/sem-context -d sem-context/bin/linux/amd64/sem-context - artifact pull workflow bin/linux/arm64/sem-context -d sem-context/bin/linux/arm64/sem-context - artifact pull workflow bin/darwin/amd64/sem-context -d sem-context/bin/darwin/amd64/sem-context + - artifact pull workflow bin/darwin/arm64/sem-context -d sem-context/bin/darwin/arm64/sem-context - bash release/create.sh - source release/install_in_tests.sh - test-results gen-pipeline-report diff --git a/release/create.sh b/release/create.sh index 22f3e047..f78c83d2 100755 --- a/release/create.sh +++ b/release/create.sh @@ -78,14 +78,17 @@ hosted::create_initial_content() { rm -rf /tmp/Linux rm -rf /tmp/Linux-arm rm -rf /tmp/Darwin + rm -rf /tmp/Darwin-arm mkdir -p /tmp/Linux/toolbox mkdir -p /tmp/Linux-arm/toolbox mkdir -p /tmp/Darwin/toolbox + mkdir -p /tmp/Darwin-arm/toolbox cp -R ~/$SEMAPHORE_GIT_DIR/* /tmp/Linux/toolbox cp -R ~/$SEMAPHORE_GIT_DIR/* /tmp/Linux-arm/toolbox cp -R ~/$SEMAPHORE_GIT_DIR/* /tmp/Darwin/toolbox + cp -R ~/$SEMAPHORE_GIT_DIR/* /tmp/Darwin-arm/toolbox exclusions=( .git @@ -106,6 +109,7 @@ hosted::create_initial_content() { rm -rf /tmp/Linux/toolbox/${exclusion} rm -rf /tmp/Linux-arm/toolbox/${exclusion} rm -rf /tmp/Darwin/toolbox/${exclusion} + rm -rf /tmp/Darwin-arm/toolbox/${exclusion} done } @@ -193,17 +197,21 @@ hosted::pack() { include_external_linux_binary $ARTIFACT_CLI_URL "artifact" /tmp/Linux "x86_64" include_external_linux_binary $ARTIFACT_CLI_URL "artifact" /tmp/Linux-arm "arm64" include_external_darwin_binary $ARTIFACT_CLI_URL "artifact" /tmp/Darwin "x86_64" + include_external_darwin_binary $ARTIFACT_CLI_URL "artifact" /tmp/Darwin-arm "arm64" include_external_linux_binary $TEST_RESULTS_CLI_URL "test-results" /tmp/Linux "x86_64" include_external_linux_binary $TEST_RESULTS_CLI_URL "test-results" /tmp/Linux-arm "arm64" include_external_darwin_binary $TEST_RESULTS_CLI_URL "test-results" /tmp/Darwin "x86_64" + include_external_darwin_binary $TEST_RESULTS_CLI_URL "test-results" /tmp/Darwin-arm "arm64" include_external_linux_binary $SPC_CLI_URL "spc" /tmp/Linux "x86_64" include_external_linux_binary $SPC_CLI_URL "spc" /tmp/Linux-arm "arm64" cp ~/$SEMAPHORE_GIT_DIR/cache-cli/bin/linux/amd64/cache /tmp/Linux/toolbox/cache cp ~/$SEMAPHORE_GIT_DIR/cache-cli/bin/linux/arm64/cache /tmp/Linux-arm/toolbox/cache cp ~/$SEMAPHORE_GIT_DIR/cache-cli/bin/darwin/amd64/cache /tmp/Darwin/toolbox/cache + cp ~/$SEMAPHORE_GIT_DIR/cache-cli/bin/darwin/arm64/cache /tmp/Darwin-arm/toolbox/cache cp ~/$SEMAPHORE_GIT_DIR/sem-context/bin/linux/amd64/sem-context /tmp/Linux/toolbox/sem-context cp ~/$SEMAPHORE_GIT_DIR/sem-context/bin/linux/arm64/sem-context /tmp/Linux-arm/toolbox/sem-context cp ~/$SEMAPHORE_GIT_DIR/sem-context/bin/darwin/amd64/sem-context /tmp/Darwin/toolbox/sem-context + cp ~/$SEMAPHORE_GIT_DIR/sem-context/bin/darwin/arm64/sem-context /tmp/Darwin-arm/toolbox/sem-context cp /tmp/when-cli/when /tmp/Linux/toolbox/when cp /tmp/when-cli/when /tmp/Linux-arm/toolbox/when } @@ -233,6 +241,8 @@ create_tarball "linux.tar" /tmp/Linux echo "$(create_checksum /tmp/Linux/linux.tar 'linux.tar')" >> /tmp/checksums.txt create_tarball "darwin.tar" /tmp/Darwin echo "$(create_checksum /tmp/Darwin/darwin.tar 'darwin.tar')" >> /tmp/checksums.txt +create_tarball "darwin-arm.tar" /tmp/Darwin-arm +echo "$(create_checksum /tmp/Darwin-arm/darwin.tar 'darwin-arm.tar')" >> /tmp/checksums.txt create_tarball "linux-arm.tar" /tmp/Linux-arm echo "$(create_checksum /tmp/Linux-arm/linux-arm.tar 'linux-arm.tar')" >> /tmp/checksums.txt diff --git a/release/install_in_tests.sh b/release/install_in_tests.sh index 711e60e2..81ad972f 100644 --- a/release/install_in_tests.sh +++ b/release/install_in_tests.sh @@ -22,7 +22,8 @@ cd ~ arch="" case $(uname) in Darwin) - tar -xvf /tmp/Darwin/darwin.tar -C /tmp + [[ "$(uname -m)" =~ "arm64" ]] && arch="-arm" + tar -xvf /tmp/Darwin${arch}/darwin${arch}.tar -C /tmp mv /tmp/toolbox ~/.toolbox ;; Linux) diff --git a/release/upload.sh b/release/upload.sh index c042a32a..32a15fcb 100644 --- a/release/upload.sh +++ b/release/upload.sh @@ -10,6 +10,7 @@ set -euo pipefail # - /tmp/Linux/linux.tar # - /tmp/Linux/linux-arm.tar # - /tmp/Darwin/darwin.tar +# - /tmp/Darwin/darwin-arm.tar # - /tmp/self-hosted-Linux/linux.tar # - /tmp/self-hosted-Linux-arm/linux-arm.tar # - /tmp/self-hosted-Darwin/darwin.tar @@ -79,6 +80,17 @@ curl \ echo "darwin.tar uploaded" +curl \ + -X POST \ + -H "Authorization: token $GITHUB_TOKEN" \ + -H "Accept: application/vnd.github.v3+json" \ + -H "Content-Type: $(file -b --mime-type /tmp/Darwin/darwin-arm.tar)" \ + --data-binary @/tmp/Darwin/darwin.tar \ + "https://uploads.github.com/repos/semaphoreci/toolbox/releases/$release_id/assets?name=darwin-arm.tar" + +echo "darwin-arm.tar uploaded" + + curl \ -X POST \ -H "Authorization: token $GITHUB_TOKEN" \ diff --git a/tests/xcode15_sem_version.bats b/tests/xcode15_sem_version.bats new file mode 100644 index 00000000..7a723f47 --- /dev/null +++ b/tests/xcode15_sem_version.bats @@ -0,0 +1,70 @@ +#!/usr/bin/env bats + +load "support/bats-support/load" +load "support/bats-assert/load" + +PROJECT_ROOT=$(pwd) + +setup() { + eval "$(rbenv init -)" + source ~/toolbox/sem-version + source ~/toolbox/sem-install + source ~/.nvm/nvm.sh + export NVM_DIR=~/.nvm +} + +@test "[macOS] sem-version ruby - 2.5.9 " { + + run sem-version ruby 2.5.9 + assert_success + run ruby --version + assert_success + assert_output --partial "2.5.9" +} + +@test "[macOS] sem-version ruby - 2.6.7 " { + + run sem-version ruby 2.6.7 + assert_success + run ruby --version + assert_success + assert_output --partial "2.6.7" +} +@test "[macOS] sem-version ruby - 2.7.3 " { + + run sem-version ruby 2.7.3 + assert_success + run ruby --version + assert_success + assert_output --partial "2.7.3" +} +@test "[macOS] sem-version ruby - 2.7.2 " { + + run sem-version ruby 2.7.2 + assert_success + run ruby --version + assert_success + assert_output --partial "2.7.2" +} +@test "[macOS] sem-version ruby - 3.0.1 " { + + run sem-version ruby 3.0.1 + assert_success + run ruby --version + assert_success + assert_output --partial "3.0.1" +} +@test "[macOS] sem-version php - 8.0.5 " { + + run sem-version php 8.0.5 + assert_failure +} + +@test "[macOS] sem-version node - 14.16.1 " { + + run sem-version node 14.16.1 + assert_success + assert_output --partial "14.16.1" + node --version +} +