From 9c0388f5ad927d24bdaf5b1ccca617806e3d8958 Mon Sep 17 00:00:00 2001 From: sgoudham Date: Fri, 28 Jan 2022 21:04:06 +0000 Subject: [PATCH] Add deploy workflow --- .github/workflows/deploy.yml | 147 +++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..cc3f76e --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,147 @@ +on: + push: + # Sequence of patterns matched against refs/tags + tags: + - "v*" # Push events to matching v*, i.e. v1.0, v20.15.10 + +name: deploy +env: + BIN: uwuifyy + +jobs: + install-cross: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + with: + fetch-depth: 50 + - uses: XAMPPRocky/get-github-release@v1 + id: cross + with: + owner: rust-embedded + repo: cross + matches: ${{ matrix.platform }} + token: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/upload-artifact@v1 + with: + name: cross-${{ matrix.platform }} + path: ${{ steps.cross.outputs.install_path }} + strategy: + matrix: + platform: [ linux-musl, apple-darwin ] + + windows: + runs-on: windows-latest + needs: install-cross + strategy: + matrix: + target: + - x86_64-pc-windows-gnu + - x86_64-pc-windows-msvc + steps: + - uses: actions/checkout@v2 + - run: bash scripts/set_rust_version.bash stable ${{ matrix.target }} + - run: bash scripts/build.bash cargo ${{ matrix.target }} RELEASE + - run: | + cd ./target/${{ matrix.target }}/release/ + 7z a "${{ env.BIN }}.zip" "${{ env.BIN }}.exe" + mv "${{ env.BIN }}.zip" $GITHUB_WORKSPACE + shell: bash + # We're using a fork of `actions/create-release` that detects + # whether a release is already available or not first. + - uses: XAMPPRocky/create-release@v1.0.2 + id: create_release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: ${{ github.ref }} + # Draft should **always** be false. GitHub doesn't provide a way to + # get draft releases from its API, so there's no point using it. + draft: false + prerelease: false + - uses: actions/upload-release-asset@v1 + id: upload-release-asset + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ${{ env.BIN }}.zip + asset_name: ${{ env.BIN }}-${{ matrix.target }}.zip + asset_content_type: application/zip + + macos: + runs-on: macos-latest + needs: install-cross + strategy: + matrix: + target: + - x86_64-apple-darwin + steps: + - uses: actions/checkout@v2 + - uses: actions/download-artifact@v1 + with: + name: cross-apple-darwin + path: /usr/local/bin/ + - run: chmod +x /usr/local/bin/cross + + - run: scripts/set_rust_version.bash stable ${{ matrix.target }} + - run: scripts/build.bash cross ${{ matrix.target }} RELEASE + - run: tar -czvf ${{ env.BIN }}.tar.gz --directory=target/${{ matrix.target }}/release ${{ env.BIN }} + - uses: XAMPPRocky/create-release@v1.0.2 + id: create_release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: ${{ github.ref }} + draft: false + prerelease: false + - uses: actions/upload-release-asset@v1 + id: upload-release-asset + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ${{ env.BIN }}.tar.gz + asset_name: ${{ env.BIN }}-${{ matrix.target }}.tar.gz + asset_content_type: application/gzip + + linux: + runs-on: ubuntu-latest + needs: install-cross + strategy: + matrix: + target: + - x86_64-unknown-linux-gnu + - x86_64-unknown-linux-musl + steps: + - uses: actions/checkout@v2 + - uses: actions/download-artifact@v1 + with: + name: cross-linux-musl + path: /tmp/ + - run: chmod +x /tmp/cross + + - run: scripts/set_rust_version.bash stable ${{ matrix.target }} + - run: scripts/build.bash /tmp/cross ${{ matrix.target }} RELEASE + - run: tar -czvf ${{ env.BIN }}.tar.gz --directory=target/${{ matrix.target }}/release ${{ env.BIN }} + - uses: XAMPPRocky/create-release@v1.0.2 + id: create_release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: ${{ github.ref }} + draft: false + prerelease: false + - name: Upload Release Asset + id: upload-release-asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ${{ env.BIN }}.tar.gz + asset_name: ${{ env.BIN }}-${{ matrix.target }}.tar.gz + asset_content_type: application/gzip \ No newline at end of file