From 0f10f2e50180edf2b2b44e539b1e717d7ad69f25 Mon Sep 17 00:00:00 2001 From: Christian Llontop Date: Tue, 16 Apr 2024 13:36:06 -0500 Subject: [PATCH 1/2] Add docker-compose.yml file --- docker-compose.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..5e7924f --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,25 @@ +version: '3.7' +services: + mysql: + image: mysql:latest + environment: + MYSQL_ROOT_PASSWORD: my-secret-pw + MYSQL_DATABASE: keyv_test + MYSQL_USER: user + MYSQL_PASSWORD: password + ports: + - "3306:3306" + + postgres: + image: postgres:latest + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: keyv_test + ports: + - "5432:5432" + + redis: + image: redis:latest + ports: + - "6379:6379" \ No newline at end of file From ef861c113298e1844b31ffb0b91d1c0406e738c8 Mon Sep 17 00:00:00 2001 From: Christian Llontop Date: Tue, 16 Apr 2024 13:38:02 -0500 Subject: [PATCH 2/2] Simplify CI/CD pipeline configuration Removed direct service dependencies and environment variables from CI/CD pipeline configuration files. Instead of running services like MySQL, Redis, and Postgres directly, we are now utilizing docker-compose to manage these services. Moreover, adjusted checkout, rust installation, and test running steps according to the new changes. --- .github/workflows/ci.yml | 67 ++++++----------------------------- .github/workflows/publish.yml | 13 ++++++- 2 files changed, 23 insertions(+), 57 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fed95b1..afda70f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,66 +9,16 @@ on: jobs: build: runs-on: ubuntu-latest - services: - mysql: - image: mysql:latest - env: - MYSQL_ROOT_PASSWORD: my-secret-pw - MYSQL_DATABASE: keyv_test - MYSQL_USER: user - MYSQL_PASSWORD: password - ports: - - 3306:3306 - options: >- - --health-cmd="mysqladmin ping -h localhost" - --health-interval=10s - --health-timeout=5s - --health-retries=5 - - postgres: - image: postgres:latest - env: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - POSTGRES_DB: keyv_test - ports: - - 5432:5432 - options: >- - --health-cmd="pg_isready -U postgres" - --health-interval=10s - --health-timeout=5s - --health-retries=5 - - redis: - image: redis:latest - ports: - - 6379:6379 - options: >- - --health-cmd="redis-cli ping" - --health-interval=10s - --health-timeout=5s - --health-retries=5 - - env: - # emit backtraces on panics. - RUST_BACKTRACE: 1 steps: - - uses: actions/checkout@v4 + - name: Checkout Code + uses: actions/checkout@v4 with: fetch-depth: 1 - - name: Get the build metadata - shell: bash - run: | - echo "TAG_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV - echo "CARGO_VERSION=$(grep -m 1 '^version = ' Cargo.toml | cut -f 3 -d ' ' | tr -d \")" >> $GITHUB_ENV - - name: Validate git tag and Cargo.toml version - shell: bash - if: startsWith(github.ref, 'refs/tags/') + + - name: Start Services run: | - if [ "${{ env.TAG_VERSION }}" != "v${{ env.CARGO_VERSION }}" ]; then - echo "git tag version (${{ env.TAG_VERSION }}) does not match Cargo.toml version (v${{ env.CARGO_VERSION }})" - exit 1 - fi + docker-compose up -d + - name: Install Rust uses: actions-rs/toolchain@v1 with: @@ -76,22 +26,27 @@ jobs: override: true profile: minimal components: rustfmt, clippy + - uses: swatinem/rust-cache@v2.7.3 + - name: Rust fmt uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check + - name: Run Clippy uses: actions-rs/cargo@v1 with: command: clippy args: --all-features + - name: Build release uses: actions-rs/cargo@v1 with: command: build args: --verbose --all --release --all-features + - name: Run Test uses: actions-rs/cargo@v1 with: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 3f650bc..bfc9a2f 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -9,30 +9,41 @@ jobs: build_and_test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - name: Checkout Code + uses: actions/checkout@v4 with: fetch-depth: 0 + + - name: Start services + run: | + docker-compose up -d + - name: Install Rust uses: actions-rs/toolchain@v1 with: toolchain: stable components: rustfmt, clippy + - uses: swatinem/rust-cache@v2.7.3 + - name: Run fmt uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check + - name: Run clippy uses: actions-rs/cargo@v1 with: command: clippy args: --all -- -D warnings + - name: Run Tests uses: actions-rs/cargo@v1 with: command: test args: --all + - name: Build Release uses: actions-rs/cargo@v1 with: