88 - .github/workflows/daedalus-docker.yml
99 - ' apps/daedalus_client/**'
1010 - ' packages/daedalus/**'
11+ - Cargo.toml
12+ - Cargo.lock
1113 pull_request :
1214 types : [opened, synchronize]
1315 paths :
1416 - .github/workflows/daedalus-docker.yml
1517 - ' apps/daedalus_client/**'
1618 - ' packages/daedalus/**'
19+ - Cargo.toml
20+ - Cargo.lock
1721 merge_group :
1822 types : [checks_requested]
1923
24+ concurrency :
25+ group : ${{ github.workflow }}-${{ github.ref }}
26+ cancel-in-progress : ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/prod' }}
27+
2028jobs :
2129 docker :
22- runs-on : ubuntu-latest
30+ runs-on : blacksmith-4vcpu-ubuntu-2404
31+ env :
32+ SCCACHE_DIR : ' /mnt/sccache'
33+ SCCACHE_CACHE_SIZE : ' 10G'
34+ SCCACHE_MULTILEVEL_CHAIN : ' disk,s3'
35+ SCCACHE_S3_KEY_PREFIX : ' ${{ github.repository }}/'
36+ SCCACHE_BUCKET : ${{ secrets.SCCACHE_BUCKET }}
37+ SCCACHE_REGION : ${{ secrets.SCCACHE_REGION }}
38+ SCCACHE_ENDPOINT : ${{ secrets.SCCACHE_ENDPOINT }}
39+ AWS_ACCESS_KEY_ID : ${{ secrets.SCCACHE_S3_ACCESS_KEY_ID }}
40+ AWS_SECRET_ACCESS_KEY : ${{ secrets.SCCACHE_S3_SECRET_ACCESS_KEY }}
41+ RUSTC_WRAPPER : ' sccache'
2342 steps :
24- - name : 📥 Check out code
25- uses : actions/checkout@v4
43+ - name : Check out code
44+ uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
45+
46+ - name : Setup Rust toolchain
47+ uses : actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 # v1.16.0
48+ with :
49+ rustflags : ' '
50+ cache : false
51+
52+ - name : Cache Cargo registry and index
53+ uses : actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
54+ with :
55+ path : |
56+ ~/.cargo/registry
57+ ~/.cargo/git
58+ ~/.cargo/bin
59+ key : ${{ runner.os }}-${{ runner.arch }}-cargo-${{ hashFiles('**/Cargo.lock') }}
60+
61+ - name : Mount sccache disk cache
62+ uses : useblacksmith/stickydisk@13af8883542ca949a717e70fef89d15edbb29d88 # v1.2.0
63+ with :
64+ key : ${{ github.repository }}-daedalus-sccache
65+ path : /mnt/sccache
66+
67+ - name : Setup sccache
68+ uses : mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
69+
70+ - name : Build daedalus_client
71+ run : cargo build --release --package daedalus_client
72+
73+ - name : Stage Docker context
74+ run : |
75+ mkdir -p apps/daedalus_client/docker-stage
76+ cp target/release/daedalus_client apps/daedalus_client/docker-stage/daedalus_client
2677
27- - name : 🧰 Set up Docker Buildx
28- uses : docker/setup-buildx-action@v2
78+ - name : Set up Docker Buildx
79+ uses : docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
2980
30- - name : ⚙️ Generate Docker image metadata
31- id : docker_meta
32- uses : docker/metadata-action@v5
81+ - name : Generate Docker image metadata
82+ id : docker-meta
83+ uses : docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
3384 env :
3485 DOCKER_METADATA_ANNOTATIONS_LEVELS : manifest,index
3586 with :
@@ -43,20 +94,19 @@ jobs:
4394 org.opencontainers.image.description=Modrinth game metadata query client
4495 org.opencontainers.image.licenses=MIT
4596
46- - name : 🔑 Login to GitHub Packages
47- uses : docker/login-action@v3
97+ - name : Login to GitHub Packages
98+ uses : docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
4899 with :
49100 registry : ghcr.io
50101 username : ${{ github.actor }}
51102 password : ${{ secrets.GITHUB_TOKEN }}
52103
53- - name : 🔨 Build and push
54- uses : docker/build-push-action@v6
104+ - name : Build and push
105+ uses : docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
55106 with :
107+ context : ./apps/daedalus_client/docker-stage
56108 file : ./apps/daedalus_client/Dockerfile
57109 push : ${{ github.event_name != 'pull_request' }}
58- tags : ${{ steps.docker_meta.outputs.tags }}
59- labels : ${{ steps.docker_meta.outputs.labels }}
60- annotations : ${{ steps.docker_meta.outputs.annotations }}
61- cache-from : type=registry,ref=ghcr.io/modrinth/daedalus:main
62- cache-to : type=inline
110+ tags : ${{ steps.docker-meta.outputs.tags }}
111+ labels : ${{ steps.docker-meta.outputs.labels }}
112+ annotations : ${{ steps.docker-meta.outputs.annotations }}
0 commit comments