From c8da32158f21d0cde14250cd1afbfb1cdacf9a10 Mon Sep 17 00:00:00 2001 From: "Jesse L. Zamora" Date: Mon, 23 Dec 2024 15:27:49 -0500 Subject: [PATCH] Build only latest Swift from push CI - Also build container instead of using pre-built builder, to make the CI more flexible. --- .github/workflows/build-swift-latest.yml | 39 ++++++++++++ .github/workflows/build-swift-versions.yml | 74 ---------------------- README.md | 8 +-- 3 files changed, 43 insertions(+), 78 deletions(-) create mode 100644 .github/workflows/build-swift-latest.yml delete mode 100644 .github/workflows/build-swift-versions.yml diff --git a/.github/workflows/build-swift-latest.yml b/.github/workflows/build-swift-latest.yml new file mode 100644 index 0000000..a0d986e --- /dev/null +++ b/.github/workflows/build-swift-latest.yml @@ -0,0 +1,39 @@ +name: Build Swift Latest + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +env: + DISTRIBUTION: debian-bookworm + +jobs: + build-latest: + strategy: + matrix: + version: ["6.0.3"] + env: + SWIFT_VERSION: ${{ matrix.version }} + SWIFT_TAG: swift-${{ matrix.version }}-RELEASE + name: Build Swift + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/checkout-swift + name: Fetch Swift Sources + with: + swift-tag: ${{ env.SWIFT_TAG }} + swift-workspace-cache: swift-${{ matrix.version }}-workspace + - name: Generate Builder Container + shell: bash + run: | + source ./swift-builder/swift-builder-common + ./swift-builder/build-container.sh + - uses: ./.github/actions/build-for-distribution + name: Build & Publish Swift + with: + swift-tag: ${{ env.SWIFT_TAG }} + distribution: ${{ env.DISTRIBUTION }} + builder-tag: ${{ env.SWIFT_VERSION }} diff --git a/.github/workflows/build-swift-versions.yml b/.github/workflows/build-swift-versions.yml deleted file mode 100644 index 2b8a8db..0000000 --- a/.github/workflows/build-swift-versions.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: Build Swift Versions - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -env: - DISTRIBUTION: debian-bookworm - -jobs: - swift-5-9-2: - env: - SWIFT_TAG: swift-5.9.2-RELEASE - SWIFT_WORKSPACE_CACHE: swift-5.9.2-workspace - SWIFT_BUILDER_TAG: 5.9.2-gh-runner - name: Build Swift 5.9.2 - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/checkout-swift - name: Fetch Swift Sources - with: - swift-tag: ${{ env.SWIFT_TAG }} - swift-workspace-cache: ${{ env.SWIFT_WORKSPACE_CACHE }} - - uses: ./.github/actions/build-for-distribution - name: Build & Publish Swift - with: - swift-tag: ${{ env.SWIFT_TAG }} - distribution: ${{ env.DISTRIBUTION }} - builder-tag: ${{ env.SWIFT_BUILDER_TAG }} - - swift-5-10-1: - env: - SWIFT_TAG: swift-5.10.1-RELEASE - SWIFT_WORKSPACE_CACHE: swift-5.10.1-workspace - SWIFT_BUILDER_TAG: 5.10.1-gh-runner - name: Build Swift 5.10.1 - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/checkout-swift - name: Fetch Swift Sources - with: - swift-tag: ${{ env.SWIFT_TAG }} - swift-workspace-cache: ${{ env.SWIFT_WORKSPACE_CACHE }} - - uses: ./.github/actions/build-for-distribution - name: Build & Publish Swift - with: - swift-tag: ${{ env.SWIFT_TAG }} - distribution: ${{ env.DISTRIBUTION }} - builder-tag: ${{ env.SWIFT_BUILDER_TAG }} - - swift-6-0-3: - env: - SWIFT_TAG: swift-6.0.3-RELEASE - SWIFT_WORKSPACE_CACHE: swift-6.0.3-workspace - SWIFT_BUILDER_TAG: 6.0.2-gh-runner - name: Build Swift 6.0.3 - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/checkout-swift - name: Fetch Swift Sources - with: - swift-tag: ${{ env.SWIFT_TAG }} - swift-workspace-cache: ${{ env.SWIFT_WORKSPACE_CACHE }} - - uses: ./.github/actions/build-for-distribution - name: Build & Publish Swift - with: - swift-tag: ${{ env.SWIFT_TAG }} - distribution: ${{ env.DISTRIBUTION }} - builder-tag: ${{ env.SWIFT_BUILDER_TAG }} diff --git a/README.md b/README.md index 82e6f66..ee66d96 100644 --- a/README.md +++ b/README.md @@ -73,14 +73,14 @@ After building the armv7 runtime using the `build.sh` script, you can generate a using the `build-linux-cross-sdk.sh` script. You must provide the swift tag and distribution name: ```bash -./build-linux-cross-sdk.sh swift-5.10.1-RELEASE ubuntu-noble +./build-linux-cross-sdk.sh swift-6.0.3-RELEASE ubuntu-noble ``` By default, the SDK will be generated to be installed at a path of /opt/$SWIFT_TAG-$DISTRIBUTION-armv7, but this can be customized by providing a different install prefix to the script: ```bash export SDK_INSTALL_PREFIX=/home/myuser/swift-sdks -./build-linux-cross-sdk.sh swift-5.10.1-RELEASE ubuntu-noble +./build-linux-cross-sdk.sh swift-6.0.3-RELEASE ubuntu-noble ``` ## Continuous Integration & Releases @@ -97,11 +97,11 @@ To use the SDK that is generated by the CI or published to the [Releases](https: extract it to /opt: ```bash -sudo tar -xf swift-5.10.1-RELEASE-debian-bookworm-armv7-sdk.tar.gz -C /opt +sudo tar -xf swift-6.0.3-RELEASE-debian-bookworm-armv7-sdk.tar.gz -C /opt ``` Then, from a Swift package, use the `--destination` paramter to cross-compile it for the target: ```bash -swift build --destination /opt/swift-5.10.1-RELEASE-debian-bookworm-armv7/debian-bookworm.json +swift build --destination /opt/swift-6.0.3-RELEASE-debian-bookworm-armv7/debian-bookworm.json ```