diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 49000966d..b0841376b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,7 +4,7 @@ on: # - cron: '0 0 * * *' # midnight UTC push: - # tags: + tags: ## - release jobs: @@ -14,31 +14,35 @@ jobs: strategy: fail-fast: false # don't fail other jobs if one fails matrix: - build: [linux, linux-arm, macos, win-msvc] #, win-gnu, win32-msvc + build: [x86_64-linux, aarch64-linux, x86_64-macos, x86_64-windows] #, x86_64-win-gnu, win32-msvc include: - - build: linux + - build: x86_64-linux os: ubuntu-20.04 - rust: nightly + rust: stable target: x86_64-unknown-linux-musl - - build: linux-arm + cross: false + - build: aarch64-linux os: ubuntu-20.04 - rust: nightly - target: arm-unknown-linux-gnueabihf - - build: macos + rust: stable + target: aarch64-unknown-linux-gnu + cross: true + - build: x86_64-macos os: macos-latest - rust: nightly + rust: stable target: x86_64-apple-darwin - - build: win-msvc + cross: false + - build: x86_64-windows os: windows-2019 - rust: nightly + rust: stable target: x86_64-pc-windows-msvc - # - build: win-gnu + cross: false + # - build: x86_64-win-gnu # os: windows-2019 - # rust: nightly-x86_64-gnu + # rust: stable-x86_64-gnu # target: x86_64-pc-windows-gnu # - build: win32-msvc # os: windows-2019 - # rust: nightly + # rust: stable # target: i686-pc-windows-msvc steps: @@ -55,32 +59,80 @@ jobs: target: ${{ matrix.target }} override: true - - name: Build release binary + - name: Run cargo test uses: actions-rs/cargo@v1 with: - use-cross: true - command: build - args: --release --locked --target ${{ matrix.target }} + command: test + args: --locked - - name: Run cargo test + - name: Build release binary uses: actions-rs/cargo@v1 with: - use-cross: true - command: test - args: --release --locked + use-cross: ${{ matrix.cross }} + command: build + args: --release --locked --target ${{ matrix.target }} - name: Strip release binary (linux and macos) - if: matrix.build == 'linux' || matrix.build == 'macos' - run: strip "target/${{ matrix.target }}/release/rg" + if: matrix.build == 'x86_64-linux' || matrix.build == 'x86_64-macos' + run: strip "target/${{ matrix.target }}/release/hx" - name: Strip release binary (arm) - if: matrix.build == 'linux-arm' + if: matrix.build == 'aarch64-linux' run: | docker run --rm -v \ "$PWD/target:/target:Z" \ - rustembedded/cross:arm-unknown-linux-gnueabihf \ - arm-linux-gnueabihf-strip \ - /target/arm-unknown-linux-gnueabihf/release/rg + rustembedded/cross:${{ matrix.target }} \ + aarch64-linux-gnu-strip \ + /target/${{ matrix.target }}/release/hx + + - name: Build archive + shell: bash + run: | + outdir="$(ci/cargo-out-dir "${{ env.TARGET_DIR }}")" + staging="helix-${{ env.RELEASE_VERSION }}-${{ matrix.target }}" + mkdir -p "$staging"/{complete,doc} + cp {README.md,LICENSE} "$staging/" + # cp {CHANGELOG.md,FAQ.md,GUIDE.md} "$staging/doc/" + # cp "$outdir"/{hx.bash,hx.fish,_hx.ps1} "$staging/complete/" + # cp complete/_hx "$staging/complete/" + if [ "${{ matrix.os }}" = "windows-2019" ]; then + cp "target/${{ matrix.target }}/release/hx.exe" "$staging/" + 7z a "$staging.zip" "$staging" + echo "ASSET=$staging.zip" >> $GITHUB_ENV + else + # The man page is only generated on Unix systems. ¯\_(ツ)_/¯ + # cp "$outdir"/hx.1 "$staging/doc/" + cp "target/${{ matrix.target }}/release/hx" "$staging/" + tar czf "$staging.tar.gz" "$staging" + echo "ASSET=$staging.tar.gz" >> $GITHUB_ENV + fi # package - # upload to nightly release + - uses: actions/upload-artifact@v1 + with: + name: bins-${{ matrix.build }} + path: ${{ env.ASSET }} + + publish: + name: Publish + needs: [dist] + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v2 + with: + submodules: false + + - uses: actions/download-artifact@v2 + with: + path: dist + - run: ls -al ./dist + + - name: Upload binaries to release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: dist/* + file_glob: true + tag: ${{ github.ref }} + overwrite: true