Skip to content

Commit 717ffca

Browse files
authored
Merge pull request #50 from CoLearn-Dev/fix-redis-stream
Fix redis stream and add macOS release
2 parents 2478670 + d507b26 commit 717ffca

File tree

5 files changed

+40
-53
lines changed

5 files changed

+40
-53
lines changed

.github/workflows/build.yml

+32-43
Original file line numberDiff line numberDiff line change
@@ -5,36 +5,21 @@ on:
55
name: Build
66

77
jobs:
8-
linux-x86_64:
9-
runs-on: ubuntu-20.04
10-
defaults:
11-
run:
12-
shell: bash
13-
steps:
14-
- name: Checkout
15-
uses: actions/checkout@v3
16-
with:
17-
submodules: recursive
18-
- name: Install Rust
19-
uses: actions-rs/toolchain@v1
20-
- name: Build
21-
run: cargo build --release --target x86_64-unknown-linux-gnu
22-
- name: Pack
23-
run: |
24-
cp target/x86_64-unknown-linux-gnu/release/colink-server ./
25-
tar -zcvf colink-server-linux-x86_64.tar.gz colink-server README.md user_init_config.template.toml
26-
- name: Upload Release Asset
27-
uses: actions/upload-release-asset@v1
28-
env:
29-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
30-
with:
31-
upload_url: ${{ github.event.release.upload_url }}
32-
asset_path: colink-server-linux-x86_64.tar.gz
33-
asset_name: colink-server-linux-x86_64.tar.gz
34-
asset_content_type: application/tar+gzip
35-
36-
linux-x86_64-musl:
37-
runs-on: ubuntu-latest
8+
build:
9+
strategy:
10+
matrix:
11+
platform: [linux-x86_64, linux-x86_64-musl, macos-x86_64]
12+
include:
13+
- platform: linux-x86_64
14+
ci_image: ubuntu-20.04
15+
cargo_target: x86_64-unknown-linux-gnu
16+
- platform: linux-x86_64-musl
17+
ci_image: ubuntu-latest
18+
cargo_target: x86_64-unknown-linux-musl
19+
- platform: macos-x86_64
20+
ci_image: macos-12
21+
cargo_target: x86_64-apple-darwin
22+
runs-on: ${{ matrix.ci_image }}
3823
defaults:
3924
run:
4025
shell: bash
@@ -46,21 +31,25 @@ jobs:
4631
- name: Install Rust
4732
uses: actions-rs/toolchain@v1
4833
with:
49-
target: x86_64-unknown-linux-musl
34+
target: ${{ matrix.cargo_target }}
35+
- name: Install musl
36+
if: ${{ endsWith(matrix.cargo_target, 'musl') }}
37+
run: sudo apt update && sudo apt install musl-tools
5038
- name: Build
51-
run: |
52-
sudo apt update && sudo apt install musl-tools
53-
cargo build --release --target x86_64-unknown-linux-musl
39+
run: cargo build --release --target ${{ matrix.cargo_target }}
5440
- name: Pack
5541
run: |
56-
cp target/x86_64-unknown-linux-musl/release/colink-server ./
57-
tar -zcvf colink-server-linux-x86_64-musl.tar.gz colink-server README.md user_init_config.template.toml
42+
cp target/${{ matrix.cargo_target }}/release/colink-server ./
43+
tar -zcvf colink-server-${{ matrix.platform }}.tar.gz colink-server README.md user_init_config.template.toml
5844
- name: Upload Release Asset
59-
uses: actions/upload-release-asset@v1
60-
env:
61-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
45+
uses: actions/github-script@v6
6246
with:
63-
upload_url: ${{ github.event.release.upload_url }}
64-
asset_path: colink-server-linux-x86_64-musl.tar.gz
65-
asset_name: colink-server-linux-x86_64-musl.tar.gz
66-
asset_content_type: application/tar+gzip
47+
script: |
48+
const fs = require('fs').promises;
49+
github.rest.repos.uploadReleaseAsset({
50+
owner: context.repo.owner,
51+
repo: context.repo.repo,
52+
release_id: ${{ github.event.release.id }},
53+
name: 'colink-server-${{ matrix.platform }}.tar.gz',
54+
data: await fs.readFile('colink-server-${{ matrix.platform }}.tar.gz')
55+
});

.github/workflows/check.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929
ports:
3030
- 5672:5672 # rabbitmq
3131
- 15672:15672 # rabbitmq
32-
- 6379:6379 # redis
32+
- 6379:6379 # redis
3333
steps:
3434
- name: Checkout
3535
uses: actions/checkout@v3

Cargo.lock

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "colink-server"
3-
version = "0.3.0"
3+
version = "0.3.1"
44
edition = "2021"
55

66
[dependencies]

src/mq/redis.rs

+5-7
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ impl crate::mq::common::MQ for RedisStream {
3232
.lowercase_letters(true)
3333
.uppercase_letters(true);
3434
let username = ug.generate_one().unwrap();
35+
let username = format!("{}--{}", self.mq_prefix, username);
3536
let password = pg.generate_one().unwrap();
3637
let admin_uri = match url::Url::parse(&self.redis_uri) {
3738
Ok(admin_uri) => admin_uri,
@@ -61,7 +62,7 @@ impl crate::mq::common::MQ for RedisStream {
6162
&[
6263
Rule::On,
6364
Rule::AddPass(password.to_owned()),
64-
Rule::Pattern(format!("{}--{}:*", self.mq_prefix, username).to_owned()),
65+
Rule::Pattern(format!("{}:*", username).to_owned()),
6566
Rule::AddCategory("stream".to_owned()),
6667
],
6768
)
@@ -80,10 +81,7 @@ impl crate::mq::common::MQ for RedisStream {
8081
};
8182
let user_name = user_uri.username();
8283
let mut con = self.connect().await?;
83-
let key_list: Vec<String> = match con
84-
.keys(format!("{}--{}:*", self.mq_prefix, user_name))
85-
.await
86-
{
84+
let key_list: Vec<String> = match con.keys(format!("{}:*", user_name)).await {
8785
Ok(key_list) => key_list,
8886
Err(e) => return Err(format!("RedisStream KEYS Error: {}", e)),
8987
};
@@ -120,7 +118,7 @@ impl crate::mq::common::MQ for RedisStream {
120118
Ok(user_name) => user_name,
121119
Err(e) => return Err(format!("RedisStream ACL WHOAMI Error: {}", e)),
122120
};
123-
users.retain(|x| x != &my_user_name);
121+
users.retain(|x| x != &my_user_name && x.starts_with(&format!("{}--", self.mq_prefix)));
124122
if !users.is_empty() {
125123
match con.acl_deluser::<String, ()>(&users).await {
126124
Ok(_) => {}
@@ -147,7 +145,7 @@ impl crate::mq::common::MQ for RedisStream {
147145
Err(e) => return Err(format!("URI Parse Error: {}", e)),
148146
};
149147
let user_name = user_uri.username();
150-
let queue_name = format!("{}--{}:{}", self.mq_prefix, user_name, queue_name);
148+
let queue_name = format!("{}:{}", user_name, queue_name);
151149
match con
152150
.xgroup_create_mkstream::<&str, &str, &str, ()>(&queue_name, &queue_name, "$")
153151
.await

0 commit comments

Comments
 (0)