feat: cache Docker layers and update dependencies

- Removed unnecessary queue configurations from Sidekiq configuration
- Added 'whenever' gem and its necessary dependencies for adding cron jobs
- Updated Docker workflow to cache Docker layers using actions/cache

This update improves the efficiency of CI/CD pipelines by caching Docker layers, which will help in reducing the time taken for the build process. Additionally, the changes in the Gemfile and the config/sidekiq.yml configuration will enable the project to run cron jobs for tasks like generating weather arts.
This commit is contained in:
songtianlun 2025-01-23 01:37:47 +08:00
parent e9095ece6e
commit a2c75ba3c2
4 changed files with 34 additions and 33 deletions

View File

@ -8,7 +8,6 @@ on:
- v* - v*
env: env:
# Use docker.io for Docker Hub if empty
REGISTRY: docker.io REGISTRY: docker.io
IMAGE_NAME: ${{ github.event.repository.name }} IMAGE_NAME: ${{ github.event.repository.name }}
@ -16,36 +15,51 @@ jobs:
docker: docker:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- - name: Checkout
name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
fetch-depth: 0 # 获取完整的 git history 以便生成正确的 tag fetch-depth: 0
-
name: Get Version - name: Get Version
id: get_version id: get_version
run: | run: |
echo "VERSION=$(git describe --dirty --always --tags --abbrev=7)" >> $GITHUB_OUTPUT echo "VERSION=$(git describe --dirty --always --tags --abbrev=7)" >> $GITHUB_OUTPUT
-
name: Login to ${{ env.REGISTRY }} - name: Login to ${{ env.REGISTRY }}
if: github.event_name != 'pull_request' if: github.event_name != 'pull_request'
uses: docker/login-action@v3 uses: docker/login-action@v3
with: with:
registry: ${{ env.REGISTRY }} registry: ${{ env.REGISTRY }}
username: ${{github.actor}} username: ${{github.actor}}
password: ${{ secrets.DOCKERHUB_TOKEN }} password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v3 uses: docker/setup-qemu-action@v3
-
name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
- with:
name: Build and push driver-opts: |
network=host
- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Build and push
uses: docker/build-push-action@v6 uses: docker/build-push-action@v6
with: with:
context: . context: .
platforms: linux/amd64
push: ${{ github.event_name != 'pull_request' }} push: ${{ github.event_name != 'pull_request' }}
tags: | tags: |
${{ env.REGISTRY }}/${{github.actor}}/${{ github.event.repository.name }}:latest ${{ env.REGISTRY }}/${{github.actor}}/${{ github.event.repository.name }}:latest
${{ env.REGISTRY }}/${{github.actor}}/${{ github.event.repository.name }}:${{ steps.get_version.outputs.VERSION }} ${{ env.REGISTRY }}/${{github.actor}}/${{ github.event.repository.name }}:${{ steps.get_version.outputs.VERSION }}
cache-from: |
type=local,src=/tmp/.buildx-cache
type=registry,ref=${{ env.REGISTRY }}/${{github.actor}}/${{ github.event.repository.name }}:latest
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max

View File

@ -45,7 +45,7 @@ gem "devise", "~> 4.9"
gem "activeadmin", "~> 3.2" gem "activeadmin", "~> 3.2"
gem "friendly_id", "~> 5.5" gem "friendly_id", "~> 5.5"
gem "whenever", "~> 1.0" # gem "whenever", "~> 1.0"
gem "ruby-openai", "~> 7.3" gem "ruby-openai", "~> 7.3"
gem "httparty", "~> 0.22.0" gem "httparty", "~> 0.22.0"
gem "down", "~> 5.4" gem "down", "~> 5.4"

View File

@ -126,7 +126,6 @@ GEM
rack-test (>= 0.6.3) rack-test (>= 0.6.3)
regexp_parser (>= 1.5, < 3.0) regexp_parser (>= 1.5, < 3.0)
xpath (~> 3.2) xpath (~> 3.2)
chronic (0.10.2)
concurrent-ruby (1.3.5) concurrent-ruby (1.3.5)
connection_pool (2.5.0) connection_pool (2.5.0)
crass (1.0.6) crass (1.0.6)
@ -464,8 +463,6 @@ GEM
base64 base64
websocket-extensions (>= 0.1.0) websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5) websocket-extensions (0.1.5)
whenever (1.0.0)
chronic (>= 0.6.3)
xpath (3.2.0) xpath (3.2.0)
nokogiri (~> 1.8) nokogiri (~> 1.8)
zeitwerk (2.7.1) zeitwerk (2.7.1)
@ -515,7 +512,6 @@ DEPENDENCIES
turbo-rails turbo-rails
tzinfo-data tzinfo-data
web-console web-console
whenever (~> 1.0)
BUNDLED WITH BUNDLED WITH
2.6.2 2.6.2

View File

@ -1,14 +1,5 @@
batch_generate_weather:
:concurrency: 5 cron: '0 */2 * * *'
:queues: class: BatchGenerateWeatherArtsWorker
- prod description: "Generate weather arts every 2 hours"
- default enabled: true
- mailers
- low
:scheduler:
:schedule:
batch_generate_weather:
cron: '0 */2 * * *' # every 每2 hours
queue: prod
class: BatchGenerateWeatherArtsWorker