Merge pull request #319 from Luni-4/automatic-deploy
Deploy cargo-outdated automatically
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
new file mode 100644
index 0000000..930fcd5
--- /dev/null
+++ b/.github/workflows/deploy.yml
@@ -0,0 +1,152 @@
+name: deploy
+
+on:
+ push:
+ tags:
+ - 'v*.*.*'
+
+jobs:
+
+ create-windows-binaries:
+
+ runs-on: windows-latest
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Install stable
+ uses: actions-rs/toolchain@v1
+ with:
+ profile: minimal
+ toolchain: stable
+ override: true
+
+ - name: Build cargo-outdated
+ run: |
+ cargo build --release
+
+ - name: Get the version
+ shell: bash
+ id: tagName
+ run: |
+ VERSION=$(cargo pkgid | cut -d# -f2 | cut -d: -f2)
+ echo "::set-output name=tag::$VERSION"
+
+ - name: Build package
+ id: package
+ shell: bash
+ run: |
+ ARCHIVE_TARGET="x86_64-pc-windows-msvc"
+ ARCHIVE_NAME="cargo-outdated-${{ steps.tagName.outputs.tag }}-$ARCHIVE_TARGET"
+ ARCHIVE_FILE="${ARCHIVE_NAME}.zip"
+ 7z a ${ARCHIVE_FILE} ./target/release/cargo-outdated.exe
+ echo "::set-output name=file::${ARCHIVE_FILE}"
+ echo "::set-output name=name::${ARCHIVE_NAME}.zip"
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v2
+ with:
+ name: ${{ steps.package.outputs.name }}
+ path: ${{ steps.package.outputs.file }}
+
+ create-unix-binaries:
+
+ strategy:
+ matrix:
+ os: [ubuntu-latest, macos-latest]
+ include:
+ - os: ubuntu-latest
+ target: x86_64-unknown-linux-musl
+ - os: macos-latest
+ target: x86_64-apple-darwin
+
+ runs-on: ${{ matrix.os }}
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Install Rust
+ uses: actions-rs/toolchain@v1
+ with:
+ profile: minimal
+ toolchain: stable
+ target: ${{ matrix.target }}
+ override: true
+
+ - name: Install musl
+ if: contains(matrix.target, 'linux-musl')
+ run: |
+ sudo apt-get install musl-tools
+
+ - name: Build cargo-outdated
+ run: |
+ # TODO: Remember to add RUSTFLAGS=+crt-static for musl target when
+ # static linkage will not be the default behaviour
+ cargo build --release --features vendored-openssl --target ${{ matrix.target }}
+
+ - name: Strip binary
+ run: |
+ strip target/${{ matrix.target }}/release/cargo-outdated
+
+ - name: Get the version
+ id: tagName
+ run: |
+ VERSION=$(cargo pkgid | cut -d# -f2 | cut -d: -f2)
+ echo "::set-output name=tag::$VERSION"
+
+ - name: Build package
+ id: package
+ run: |
+ TAR_FILE=cargo-outdated-${{ steps.tagName.outputs.tag }}-${{ matrix.target }}
+ cd target/${{ matrix.target }}/release
+ tar -czvf $GITHUB_WORKSPACE/$TAR_FILE.tar.gz cargo-outdated
+ echo ::set-output "name=name::${TAR_FILE}"
+ echo ::set-output "name=file::${TAR_FILE}.tar.gz "
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v2
+ with:
+ name: ${{ steps.package.outputs.name }}
+ path: ${{ steps.package.outputs.file }}
+
+
+ deploy:
+
+ needs: [create-windows-binaries, create-unix-binaries]
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Install Rust stable
+ uses: actions-rs/toolchain@v1
+ with:
+ profile: minimal
+ toolchain: stable
+ override: true
+
+ - name: Create Cargo.lock
+ run: |
+ cargo update
+
+ - name: Get version
+ id: tagName
+ run: |
+ VERSION=$(cargo pkgid | cut -d# -f2 | cut -d: -f2)
+ echo "::set-output name=tag::$VERSION"
+
+ - name: Download artifacts
+ uses: actions/download-artifact@v2
+ with:
+ path: ./binaries
+
+ - name: Create a release
+ uses: softprops/action-gh-release@v1
+ with:
+ name: v${{ steps.tagName.outputs.tag }}
+ files: |
+ ./binaries/**/*.zip
+ ./binaries/**/*.tar.gz
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}