From ab68b28fd8fbb1b33dd22a4ece02158d63ca87e4 Mon Sep 17 00:00:00 2001 From: Thomas Eizinger Date: Thu, 4 Mar 2021 15:16:33 +1100 Subject: [PATCH] Reduce workflow duplication --- .../create-release-archive/macos/action.yml | 38 --------- .../create-release-archive/ubuntu/action.yml | 38 --------- .../create-release-archive/windows/action.yml | 40 --------- .github/workflows/release-cli.yml | 85 ++++++++----------- 4 files changed, 35 insertions(+), 166 deletions(-) delete mode 100644 .github/actions/create-release-archive/macos/action.yml delete mode 100644 .github/actions/create-release-archive/ubuntu/action.yml delete mode 100644 .github/actions/create-release-archive/windows/action.yml diff --git a/.github/actions/create-release-archive/macos/action.yml b/.github/actions/create-release-archive/macos/action.yml deleted file mode 100644 index c1dd5d05..00000000 --- a/.github/actions/create-release-archive/macos/action.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Create release archive -description: Creates a tar archive for a release binary -inputs: - version: - description: 'The version of the binary' - required: true - binary: - description: 'The name of the binary to pack into the archive' - required: true - target: - description: 'The target triple, used to find the binary; pass it if the compilation was done with the `--target` argument' - required: false -outputs: - archive: - description: 'The name of the archive' - value: ${{ steps.create-archive-name.outputs.archive }} -runs: - using: "composite" - steps: - - id: create-archive-name - shell: python # Use python to have a prettier name for the archive on Windows. - run: | - import platform - os_info = platform.uname() - - arch = os_info.machine - - if "${{ inputs.target }}": - triple = "${{ inputs.target }}".split("-") - arch = triple[0] - - archive_name=f'${{ inputs.binary }}_${{ inputs.version }}_{os_info.system}_{arch}.tar' - - print(f'::set-output name=archive::{archive_name}') - - - name: Make archive - shell: bash - run: gtar -C ./target/${{ inputs.target }}/release --create --file=${{ steps.create-archive-name.outputs.archive }} ${{ inputs.binary }} diff --git a/.github/actions/create-release-archive/ubuntu/action.yml b/.github/actions/create-release-archive/ubuntu/action.yml deleted file mode 100644 index 13b6c99c..00000000 --- a/.github/actions/create-release-archive/ubuntu/action.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Create release archive -description: Creates a tar archive for a release binary -inputs: - version: - description: 'The version of the binary' - required: true - binary: - description: 'The name of the binary to pack into the archive' - required: true - target: - description: 'The target triple, used to find the binary; pass it if the compilation was done with the `--target` argument' - required: false -outputs: - archive: - description: 'The name of the archive' - value: ${{ steps.create-archive-name.outputs.archive }} -runs: - using: "composite" - steps: - - id: create-archive-name - shell: python # Use python to have a prettier name for the archive on Windows. - run: | - import platform - os_info = platform.uname() - - arch = os_info.machine - - if "${{ inputs.target }}": - triple = "${{ inputs.target }}".split("-") - arch = triple[0] - - archive_name=f'${{ inputs.binary }}_${{ inputs.version }}_{os_info.system}_{arch}.tar' - - print(f'::set-output name=archive::{archive_name}') - - - name: Make archive - shell: bash - run: tar -C ./target/${{ inputs.target }}/release --create --file=${{ steps.create-archive-name.outputs.archive }} ${{ inputs.binary }} diff --git a/.github/actions/create-release-archive/windows/action.yml b/.github/actions/create-release-archive/windows/action.yml deleted file mode 100644 index 2a126e26..00000000 --- a/.github/actions/create-release-archive/windows/action.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: Create release archive -description: Creates a zip archive for a release binary -inputs: - version: - description: 'The version of the binary' - required: true - binary: - description: 'The name of the binary to pack into the archive' - required: true - target: - description: 'The target triple, used to find the binary; pass it if the compilation was done with the `--target` argument' - required: false -outputs: - archive: - description: 'The name of the archive' - value: ${{ steps.create-archive-name.outputs.archive }} -runs: - using: "composite" - steps: - - id: create-archive-name - shell: python # Use python to have a prettier name for the archive on Windows. - run: | - import platform - os_info = platform.uname() - - arch = os_info.machine - - if "${{ inputs.target }}": - triple = "${{ inputs.target }}".split("-") - arch = triple[0] - - archive_name=f'${{ inputs.binary }}_${{ inputs.version }}_{os_info.system}_{arch}.zip' - - print(f'::set-output name=archive::{archive_name}') - - - name: Make archive - shell: bash - run: | - cp -p ./target/${{ matrix.target }}/release/${{ inputs.binary }} ${{ inputs.binary }}.exe - 7z a -tzip ${{ steps.create-archive-name.outputs.archive }} ${{ inputs.binary }}.exe diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 9d0c0b7a..24b6635b 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -12,10 +12,13 @@ jobs: include: - target: x86_64-unknown-linux-gnu os: ubuntu-latest + archive_ext: tar - target: x86_64-apple-darwin os: macos-latest + archive_ext: tar - target: x86_64-pc-windows-msvc os: windows-latest + archive_ext: zip runs-on: ${{ matrix.os }} steps: - name: Checkout tagged commit @@ -35,62 +38,44 @@ jobs: with: python-version: '3.x' - - name: Create windows release archive - id: create-archive-windows - if: contains(matrix.os, 'windows') - uses: ./.github/actions/create-release-archive/windows - with: - binary: swap_cli - version: ${{ github.event.release.tag_name }} - target: ${{ matrix.target }} + - id: create-archive-name + shell: python # Use python to have a prettier name for the archive on Windows. + run: | + import platform + os_info = platform.uname() - - name: Create macos release archive - id: create-archive-macos - if: contains(matrix.os, 'macos') - uses: ./.github/actions/create-release-archive/macos - with: - binary: swap_cli - version: ${{ github.event.release.tag_name }} - target: ${{ matrix.target }} + arch = os_info.machine - - name: Create ubuntu release archive - id: create-archive-ubuntu - if: contains(matrix.os, 'ubuntu') - uses: ./.github/actions/create-release-archive/ubuntu - with: - binary: swap_cli - version: ${{ github.event.release.tag_name }} - target: ${{ matrix.target }} + triple = "${{ matrix.target }}".split("-") + arch = triple[0] - - name: Upload windows release binary - if: contains(matrix.os, 'windows') + archive_name=f'swap_cli_${{ github.event.release.tag_name }}_{os_info.system}_{arch}.${{ matrix.archive_ext }}' + + print(f'::set-output name=archive::{archive_name}') + + - name: Pack macos archive + if: matrix.os == 'macos-latest' + shell: bash + run: gtar -C ./target/${{ matrix.target }}/release --create --file=${{ steps.create-archive-name.outputs.archive }} swap_cli + + - name: Pack linux archive + if: matrix.os == 'ubuntu-latest' + shell: bash + run: tar -C ./target/${{ matrix.target }}/release --create --file=${{ steps.create-archive-name.outputs.archive }} swap_cli + + - name: Pack windows archive + if: matrix.os == 'windows-latest' + shell: bash + run: | + cp target/${{ matrix.target }}/release/swap_cli.exe ./swap_cli.exe + 7z a -tzip ${{ steps.create-archive-name.outputs.archive }} ./swap_cli.exe + + - name: Upload archive uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.BOTTY_GITHUB_TOKEN }} with: upload_url: ${{ github.event.release.upload_url }} - asset_path: ./${{ steps.create-archive-windows.outputs.archive }} - asset_name: ${{ steps.create-archive-windows.outputs.archive }} - asset_content_type: application/gzip - - - name: Upload macos release binary - if: contains(matrix.os, 'macos') - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.BOTTY_GITHUB_TOKEN }} - with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: ./${{ steps.create-archive-macos.outputs.archive }} - asset_name: ${{ steps.create-archive-macos.outputs.archive }} - asset_content_type: application/gzip - - - name: Upload ubuntu release binary - if: contains(matrix.os, 'ubuntu') - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.BOTTY_GITHUB_TOKEN }} - with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: ./${{ steps.create-archive-ubuntu.outputs.archive }} - asset_name: ${{ steps.create-archive-ubuntu.outputs.archive }} + asset_path: ./${{ steps.create-archive-name.outputs.archive }} + asset_name: ${{ steps.create-archive-name.outputs.archive }} asset_content_type: application/gzip