From 3f3f1d1391942f597e2d12923c6d885a03371e04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robin=20Th=C3=B6ne?= <110201991+robin-thoene@users.noreply.github.com> Date: Thu, 21 Nov 2024 23:19:03 +0100 Subject: [PATCH] build for macos x86_64 as well --- .github/workflows/ci_cd.yml | 110 +++++++++++++++++++++++++++++------- 1 file changed, 89 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index ee3eb86..e8b97d1 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -12,61 +12,129 @@ on: env: BINARY_NAME: hotsave - ARTIFACT_NAME: hotsave-artifact + ARTIFACT_NAME_VERSION: hotsave-version + ARTIFACT_NAME_LINUX: hotsave-linux + ARTIFACT_NAME_MACOS: hotsave-macos LINUX_TARGET_x86_64: x86_64-unknown-linux-gnu + MACOS_TARGET_x86_64: x86_64-apple-darwin jobs: - build: - name: Build cli application + store_version: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Install GitVersion + uses: gittools/actions/gitversion/setup@v3.0.2 + with: + versionSpec: "5.x" + - name: Determine version + uses: gittools/actions/gitversion/execute@v3.0.2 + with: + useConfigFile: true + configFilePath: GitVersion.yml + - name: Store version + run: | + mkdir dist + echo "$GitVersion_FullSemVer" > ./dist/version.txt + - name: Publish artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ env.ARTIFACT_NAME_VERSION }} + path: dist + build_linux: + name: Build for Linux runs-on: ubuntu-latest + needs: store_version steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: ${{ env.ARTIFACT_NAME_VERSION }} + path: dist + - name: Load version + run: echo "VERSION=$(cat ./dist/version.txt)" >> $GITHUB_ENV - name: Setup tooling run: | sudo apt-get install -y libxi-dev libxtst-dev rustup update stable rustup default stable + rustup target install ${{ env.LINUX_TARGET_x86_64 }} cargo install cargo-edit - - name: Install GitVersion - uses: gittools/actions/gitversion/setup@v3.0.2 - with: - versionSpec: "5.x" - - name: Determine version - uses: gittools/actions/gitversion/execute@v3.0.2 - with: - useConfigFile: true - configFilePath: GitVersion.yml - - name: Store version - run: | - mkdir dist - echo "$GitVersion_FullSemVer" > ./dist/version.txt - name: Build Linux release run: | - cargo set-version $GitVersion_FullSemVer + cargo set-version ${{ env.VERSION }} cargo build --locked --release --bin ${{ env.BINARY_NAME }} --target=${{ env.LINUX_TARGET_x86_64 }} - name: Create artifact run: | tar -C ./target/${{ env.LINUX_TARGET_x86_64 }}/release -zcvf ./dist/${{ env.LINUX_TARGET_x86_64 }}.tar.gz ./${{ env.BINARY_NAME }} - name: Publish artifact - if: github.event_name == 'push' uses: actions/upload-artifact@v4 with: - name: ${{ env.ARTIFACT_NAME }} + name: ${{ env.ARTIFACT_NAME_LINUX }} + path: dist + build_macos: + name: Build for macOS + runs-on: macos-latest + needs: store_version + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: ${{ env.ARTIFACT_NAME_VERSION }} + path: dist + - name: Load version + run: echo "VERSION=$(cat ./dist/version.txt)" >> $GITHUB_ENV + - name: Setup tooling + run: | + rustup update stable + rustup default stable + rustup target install ${{ env.MACOS_TARGET_x86_64 }} + cargo install cargo-edit + - name: Build macOS release + run: | + cargo set-version ${{ env.VERSION }} + cargo build --locked --release --bin ${{ env.BINARY_NAME }} --target=${{ env.MACOS_TARGET_x86_64 }} + - name: Create artifact + run: | + tar -C ./target/${{ env.MACOS_TARGET_x86_64 }}/release -zcvf ./dist/${{ env.MACOS_TARGET_x86_64 }}.tar.gz ./${{ env.BINARY_NAME }} + - name: Publish artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ env.ARTIFACT_NAME_MACOS }} path: dist publish: if: github.event_name == 'push' name: Create release runs-on: ubuntu-latest - needs: build + needs: | + store_version + build_linux + build_macos steps: - name: Download artifact uses: actions/download-artifact@v4 with: - name: ${{ env.ARTIFACT_NAME }} + name: ${{ env.ARTIFACT_NAME_VERSION }} + path: dist + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: ${{ env.ARTIFACT_NAME_LINUX }} + path: dist + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: ${{ env.ARTIFACT_NAME_MACOS }} path: dist - name: Load version run: echo "VERSION=$(cat ./dist/version.txt)" >> $GITHUB_ENV