aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/.github/workflows/release.yml
blob: 55885c80419bae74ada790d149d72ba076d4822d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
name: Release

on:
  push:
    tags:
      - 'v*.*.*'
    branches:
      - main

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        include:
          - os: ubuntu-latest
            target: x86_64-unknown-linux-gnu
          - os: macos-latest
            target: x86_64-apple-darwin
          - os: windows-latest
            target: x86_64-pc-windows-msvc

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Set up pkg-config for macOS
        if: matrix.os == 'macos-latest'
        run: |
          brew install pkg-config
          echo 'export PKG_CONFIG_ALLOW_CROSS=1' >> $GITHUB_ENV
          echo 'export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig' >> $GITHUB_ENV
          echo 'export PKG_CONFIG_SYSROOT_DIR=/usr/local' >> $GITHUB_ENV

      - name: Export environment variables for macOS
        if: matrix.os == 'macos-latest'
        run: |
          export PKG_CONFIG_ALLOW_CROSS=1
          export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
          export PKG_CONFIG_SYSROOT_DIR=/usr/local

      - name: Set up Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          target: ${{ matrix.target }}
          override: true

      - name: Install dependencies
        run: sudo apt-get install -y libgtk-3-dev
        if: matrix.os == 'ubuntu-latest'

      - name: Build
        run: cargo build --release --target ${{ matrix.target }}

      - name: Upload artifact
        uses: actions/upload-artifact@v3
        with:
          name: dropout-${{ matrix.target }}
          path: target/${{ matrix.target }}/release/dropout*

  release:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Download artifacts
        uses: actions/download-artifact@v3
        with:
          name: dropout-x86_64-unknown-linux-gnu
          path: ./artifacts/linux
      - uses: actions/download-artifact@v3
        with:
          name: dropout-x86_64-apple-darwin
          path: ./artifacts/macos
      - uses: actions/download-artifact@v3
        with:
          name: dropout-x86_64-pc-windows-msvc
          path: ./artifacts/windows

      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: Release ${{ github.ref }}
          body: |
            ## DropOut - NextGeneration Minecraft Launcher

            **现代UI**: DropOut 拥有现代且简洁的用户界面,易于使用。
            **快速**: DropOut 设计为快速且高效。
            **跨平台**: DropOut 设计为在 Windows、macOS 和 Linux 上运行。
            **纯 Rust**: DropOut 完全用 Rust 编写。
            **开源**: DropOut 是开源的,欢迎贡献。
            **可定制**: DropOut 高度可定制。
            **安全**: DropOut 设计为安全。
            **无广告**: DropOut 是免费的开源软件,永远不会有广告。
            **无跟踪**: DropOut 不会跟踪你。

            ### 安装

            你可以从 [Releases](https://github.com/HsiangNianian/DropOut/releases) 页面下载 DropOut 的最新版本,或者你可以从源码构建:

            ```bash
            git clone https://github.com/HsiangNianian/DropOut
            cd DropOut
            cargo build --release
            ```

          draft: false
          prerelease: false

      - name: Upload Linux binary
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: ./artifacts/linux/dropout
          asset_name: dropout-linux
          asset_content_type: application/octet-stream

      - name: Upload macOS binary
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: ./artifacts/macos/dropout
          asset_name: dropout-macos
          asset_content_type: application/octet-stream

      - name: Upload Windows binary
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: ./artifacts/windows/dropout.exe
          asset_name: dropout-windows.exe
          asset_content_type: application/octet-stream