|
1 | | -name: Build and Release PyElevate |
| 1 | +name: Build & Release PyElevate |
2 | 2 |
|
3 | 3 | on: |
4 | 4 | workflow_dispatch: |
@@ -33,49 +33,44 @@ jobs: |
33 | 33 | include: |
34 | 34 | - os: ubuntu-latest |
35 | 35 | target: x86_64-unknown-linux-gnu |
36 | | - bin: pyelevate |
37 | 36 | osname: linux |
38 | | - ext: "" |
39 | | - pack: tar |
40 | | - |
41 | 37 | - os: windows-latest |
42 | 38 | target: x86_64-pc-windows-msvc |
43 | | - bin: pyelevate.exe |
44 | 39 | osname: windows |
45 | | - ext: ".exe" |
46 | | - pack: zip |
47 | | - |
48 | 40 | - os: macos-latest |
49 | 41 | target: aarch64-apple-darwin |
50 | | - bin: pyelevate |
51 | 42 | osname: macos-arm64 |
52 | | - ext: "" |
53 | | - pack: tar |
54 | 43 |
|
55 | 44 | runs-on: ${{ matrix.os }} |
56 | 45 |
|
57 | 46 | steps: |
58 | 47 | - uses: actions/checkout@v4 |
| 48 | + |
59 | 49 | - uses: dtolnay/rust-toolchain@stable |
60 | 50 | - uses: Swatinem/rust-cache@v2 |
61 | 51 |
|
62 | 52 | - run: rustup target add ${{ matrix.target }} |
63 | 53 | - run: cargo build --release --target ${{ matrix.target }} |
64 | 54 |
|
65 | | - - name: Package binary (flat archive) |
| 55 | + - name: Package Binary |
66 | 56 | shell: bash |
67 | 57 | run: | |
68 | | - NAME=pyelevate-v${{ needs.version.outputs.version }}-${{ matrix.osname }} |
69 | | - mkdir pkg |
70 | | - cp target/${{ matrix.target }}/release/${{ matrix.bin }} pkg/pyelevate${{ matrix.ext }} |
71 | | - cd pkg |
72 | | - if [ "${{ matrix.pack }}" = "zip" ]; then |
73 | | - zip -9 ../$NAME.zip pyelevate${{ matrix.ext }} |
| 58 | + VERSION=${{ needs.version.outputs.version }} |
| 59 | + BIN=pyelevate |
| 60 | + EXT="" |
| 61 | + if [ "${{ runner.os }}" = "Windows" ]; then EXT=".exe"; fi |
| 62 | + NAME=pyelevate-v${VERSION}-${{ matrix.osname }} |
| 63 | +
|
| 64 | + mkdir -p pkg |
| 65 | + cp target/${{ matrix.target }}/release/$BIN$EXT pkg/ |
| 66 | +
|
| 67 | + if [ "${{ runner.os }}" = "Windows" ]; then |
| 68 | + powershell Compress-Archive -Path pkg\$BIN$EXT -DestinationPath $NAME.zip |
| 69 | + certutil -hashfile $NAME.zip SHA256 | head -1 > $NAME.sha256 |
74 | 70 | else |
75 | | - tar -cJf ../$NAME.tar.xz pyelevate${{ matrix.ext }} |
| 71 | + tar -cJf $NAME.tar.xz -C pkg $BIN$EXT |
| 72 | + shasum -a 256 $NAME.tar.xz > $NAME.sha256 |
76 | 73 | fi |
77 | | - cd .. |
78 | | - sha256sum $NAME.* > $NAME.sha256 |
79 | 74 |
|
80 | 75 | - uses: actions/upload-artifact@v4 |
81 | 76 | with: |
|
85 | 80 | *.tar.xz |
86 | 81 | *.sha256 |
87 | 82 |
|
| 83 | + changelog: |
| 84 | + needs: version |
| 85 | + runs-on: ubuntu-latest |
| 86 | + outputs: |
| 87 | + notes: ${{ steps.cliff.outputs.content }} |
| 88 | + steps: |
| 89 | + - uses: actions/checkout@v4 |
| 90 | + |
| 91 | + - name: Generate Changelog with git-cliff |
| 92 | + id: cliff |
| 93 | + uses: orhun/git-cliff-action@v3 |
| 94 | + with: |
| 95 | + config: cliff.toml |
| 96 | + args: --latest --strip header |
| 97 | + env: |
| 98 | + OUTPUT: CHANGELOG_GENERATED.md |
| 99 | + |
88 | 100 | release: |
89 | | - needs: [version, build] |
| 101 | + needs: [version, build, changelog] |
90 | 102 | runs-on: ubuntu-latest |
| 103 | + |
91 | 104 | steps: |
92 | 105 | - uses: actions/download-artifact@v4 |
93 | 106 | with: |
|
97 | 110 | with: |
98 | 111 | tag_name: v${{ needs.version.outputs.version }} |
99 | 112 | name: PyElevate v${{ needs.version.outputs.version }} |
| 113 | + body: ${{ needs.changelog.outputs.notes }} |
100 | 114 | files: artifacts/**/* |
101 | 115 | env: |
102 | 116 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
0 commit comments