Force resolved versions #87
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
name: Install | |
on: | |
push: | |
permissions: | |
contents: read | |
jobs: | |
install-cache: | |
name: Install with cache | |
runs-on: macos-15 | |
timeout-minutes: 50 | |
strategy: | |
matrix: | |
package: [ | |
package-1-scm, | |
package-1-registry, | |
# package-2-scm, | |
# package-2-registry, | |
# package-3-scm, | |
# package-3-registry, | |
# package-4-scm, | |
# package-4-registry, | |
] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jdx/mise-action@v2 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Restore cache | |
id: cache-restore | |
uses: actions/cache/restore@v4 | |
with: | |
path: | | |
${{ matrix.package }}/.build | |
key: ${{ runner.os }}-v1-${{ hashFiles('*/Package.resolved') }}-${{ matrix.package }} | |
restore-keys: ${{ matrix.package }}/.build | |
- name: Log in to Tuist | |
run: tuist registry login | |
working-directory: ${{ matrix.package }} | |
env: | |
TUIST_CONFIG_TOKEN: ${{ secrets.TUIST_CONFIG_TOKEN }} | |
- name: Install with registry | |
working-directory: ${{ matrix.package }} | |
if: ${{ endsWith(matrix.package, '-registry') }} | |
run: swift package --replace-scm-with-registry --force-resolved-versions resolve | |
- name: Install Swift package dependencies with source control | |
working-directory: ${{ matrix.package }} | |
if: ${{ endsWith(matrix.package, '-scm') }} | |
run: swift package --force-resolved-versions resolve | |
- name: Save cache | |
id: cache-save | |
uses: actions/cache/save@v4 | |
with: | |
path: | | |
${{ matrix.package}}/.build | |
key: ${{ steps.cache-restore.outputs.cache-primary-key }} | |
install: | |
name: Install Swift packages | |
runs-on: macos-15 | |
timeout-minutes: 90 | |
strategy: | |
matrix: | |
package: [ | |
package-1-scm, | |
package-1-registry, | |
# package-2-scm, | |
# package-2-registry, | |
# package-3-scm, | |
# package-3-registry, | |
# package-4-scm, | |
# package-4-registry, | |
xcode-project-1-registry, | |
xcode-project-1-scm, | |
] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jdx/mise-action@v2 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Log in to Tuist | |
run: tuist registry login | |
working-directory: ${{ matrix.package }} | |
env: | |
TUIST_CONFIG_TOKEN: ${{ secrets.TUIST_CONFIG_TOKEN }} | |
- name: Install Swift package dependencies with registry | |
working-directory: ${{ matrix.package }} | |
if: ${{ !startsWith(matrix.package, 'xcode-project') && endsWith(matrix.package, '-registry') }} | |
run: swift package --replace-scm-with-registry --force-resolved-versions resolve | |
- name: Hyperfine Swift package dependencies with registry | |
working-directory: ${{ matrix.package }} | |
if: ${{ !startsWith(matrix.package, 'xcode-project') && endsWith(matrix.package, '-registry') }} | |
run: hyperfine --warmup 1 --prepare 'rm -rf ~/.swiftpm .build && swift package purge-cache' --runs 5 'swift package --replace-scm-with-registry --force-resolved-versions resolve' --show-output | |
- name: Resolve Swift package dependencies with registry and xcodebuild | |
working-directory: ${{ matrix.package }} | |
if: ${{ startsWith(matrix.package, 'xcode-project') && endsWith(matrix.package, '-registry') }} | |
env: | |
TUIST_CONFIG_TOKEN: ${{ secrets.TUIST_CONFIG_TOKEN }} | |
run: | | |
TMP_DIRECTORY=$(mktemp -d) | |
KEYCHAIN_PATH=$TMP_DIRECTORY/keychain.keychain | |
KEYCHAIN_PASSWORD=$(uuidgen) | |
security create-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH | |
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH | |
security default-keychain -s $KEYCHAIN_PATH | |
security unlock-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH | |
security add-internet-password -a token \ | |
-s tuist.dev \ | |
-w $TUIST_CONFIG_TOKEN \ | |
-r htps \ | |
-U \ | |
-T /usr/bin/security \ | |
-T /usr/bin/codesign \ | |
-T /usr/bin/xcodebuild \ | |
-T /usr/bin/swift \ | |
-T /Applications/Xcode_16.app/Contents/Developer/usr/bin/xcodebuild | |
xcodebuild -resolvePackageDependencies | |
- name: Hyperfine Swift package dependencies registry and xcodebuild | |
working-directory: ${{ matrix.package }} | |
if: ${{ startsWith(matrix.package, 'xcode-project') && endsWith(matrix.package, '-registry') }} | |
run: hyperfine --warmup 1 --prepare 'rm -rf packages' --runs 5 'xcodebuild -resolvePackageDependencies -clonedSourcePackagesDirPath packages' --show-output | |
- name: Install Swift package dependencies with source control and xcodebuild | |
working-directory: ${{ matrix.package }} | |
if: ${{ startsWith(matrix.package, 'xcode-project') && endsWith(matrix.package, '-scm') }} | |
run: xcodebuild -resolvePackageDependencies | |
- name: Hyperfine Swift package dependencies source control and xcodebuild | |
working-directory: ${{ matrix.package }} | |
if: ${{ startsWith(matrix.package, 'xcode-project') && endsWith(matrix.package, '-scm') }} | |
run: hyperfine --warmup 1 --prepare 'rm -rf packages' --runs 5 'xcodebuild -resolvePackageDependencies -clonedSourcePackagesDirPath packages' --show-output | |
- name: Install Swift package dependencies with source control | |
working-directory: ${{ matrix.package }} | |
if: ${{ !startsWith(matrix.package, 'xcode-project') && endsWith(matrix.package, '-scm') }} | |
run: swift package resolve --force-resolved-versions | |
- name: Hyperfine Swift package dependencies with source control | |
working-directory: ${{ matrix.package }} | |
if: ${{ !startsWith(matrix.package, 'xcode-project') && endsWith(matrix.package, '-scm') }} | |
run: hyperfine --warmup 1 --prepare 'rm -rf ~/.swiftpm .build && swift package purge-cache' --runs 5 'swift package --force-resolved-versions resolve' --show-output | |
install-swift-package-manager-main: | |
name: Install with swift-package-manager@main | |
runs-on: macos-15 | |
timeout-minutes: 60 | |
strategy: | |
matrix: | |
package: [ | |
package-1-scm, | |
package-1-registry, | |
# package-2-scm, | |
# package-2-registry, | |
# package-3-scm, | |
# package-3-registry, | |
# package-4-scm, | |
# package-4-registry, | |
] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/checkout@v4 | |
with: | |
repository: tuist/swift-package-manager | |
path: swift-package-manager | |
ref: workspace-state-actor | |
- name: Restore cache | |
id: cache-restore | |
uses: actions/cache/restore@v4 | |
with: | |
path: | | |
swift-package-manager/.build | |
key: ${{ runner.os }}-v1-${{ hashFiles('swift-package-manager/Package.resolved') }} | |
restore-keys: swift-package-manager/.build | |
- name: Build Swift Package Manager | |
working-directory: swift-package-manager | |
run: swift build --arch x86_64 --configuration release | |
- name: Save cache | |
id: cache-save | |
uses: actions/cache/save@v4 | |
with: | |
path: | | |
swift-package-manager/.build | |
key: ${{ steps.cache-restore.outputs.cache-primary-key }} | |
- uses: jdx/mise-action@v2 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Create keychain | |
run: | | |
TMP_DIRECTORY=$(mktemp -d) | |
KEYCHAIN_PATH=$TMP_DIRECTORY/keychain.keychain | |
KEYCHAIN_PASSWORD=$(uuidgen) | |
security create-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH | |
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH | |
security default-keychain -s $KEYCHAIN_PATH | |
security unlock-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH | |
- name: Log in to Tuist | |
run: tuist registry login | |
working-directory: ${{ matrix.package }} | |
env: | |
TUIST_CONFIG_TOKEN: ${{ secrets.TUIST_CONFIG_TOKEN }} | |
- name: Install Swift package dependencies with registry | |
working-directory: ${{ matrix.package }} | |
if: ${{ endsWith(matrix.package, '-registry') }} | |
env: | |
TUIST_CONFIG_TOKEN: ${{ secrets.TUIST_CONFIG_TOKEN }} | |
run: | | |
TMP_DIRECTORY=$(mktemp -d) | |
KEYCHAIN_PATH=$TMP_DIRECTORY/keychain.keychain | |
KEYCHAIN_PASSWORD=$(uuidgen) | |
security create-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH | |
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH | |
security default-keychain -s $KEYCHAIN_PATH | |
security unlock-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH | |
security add-internet-password -a token \ | |
-s tuist.dev \ | |
-w $TUIST_CONFIG_TOKEN \ | |
-r htps \ | |
-U \ | |
-T ../swift-package-manager/.build/release/swift-package \ | |
$KEYCHAIN_PATH | |
security set-internet-password-partition-list \ | |
-a token \ | |
-s tuist.dev \ | |
-S "com.apple.swift-package,com.apple.security,com.apple.dt.Xcode,apple-tool:,apple:,codesign" \ | |
-k $KEYCHAIN_PASSWORD $KEYCHAIN_PATH | |
../swift-package-manager/.build/release/swift-package --replace-scm-with-registry --force-resolved-versions resolve | |
- name: Hyperfine Swift package dependencies with registry | |
working-directory: ${{ matrix.package }} | |
if: ${{ endsWith(matrix.package, '-registry') }} | |
run: hyperfine --warmup 1 --prepare 'rm -rf ~/.swiftpm .build' --runs 5 '../swift-package-manager/.build/x86_64-apple-macosx/release/swift-package --replace-scm-with-registry --force-resolved-versions resolve' --show-output | |
- name: Install Swift package dependencies with source control | |
working-directory: ${{ matrix.package }} | |
if: ${{ endsWith(matrix.package, '-scm') }} | |
run: ../swift-package-manager/.build/release/swift-package resolve --force-resolved-versions | |
- name: Hyperfine Swift package dependencies with source control | |
working-directory: ${{ matrix.package }} | |
if: ${{ endsWith(matrix.package, '-scm') }} | |
run: hyperfine --warmup 1 --prepare 'rm -rf ~/.swiftpm .build' --runs 5 '../swift-package-manager/.build/x86_64-apple-macosx/release/swift-package --force-resolved-versions resolve' --show-output |