Skip to content

Commit 24d39d4

Browse files
authored
Merge pull request #18 from cniweb/copilot/fix-17
GitHub Action: Build & Push Docker Image to quay.io, docker.io, ghcr.io
2 parents f5a3ee4 + 59c478b commit 24d39d4

File tree

3 files changed

+118
-10
lines changed

3 files changed

+118
-10
lines changed

.github/workflows/docker-build.yml

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
name: Build & Push Docker Image
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
jobs:
9+
docker:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: Checkout code
13+
uses: actions/checkout@v4
14+
15+
- name: Login to DockerHub
16+
uses: docker/login-action@v3
17+
with:
18+
registry: docker.io
19+
username: ${{ secrets.DOCKERHUB_USERNAME }}
20+
password: ${{ secrets.DOCKERHUB_TOKEN }}
21+
22+
- name: Login to GitHub Container Registry
23+
uses: docker/login-action@v3
24+
with:
25+
registry: ghcr.io
26+
username: ${{ secrets.GHCR_USERNAME }}
27+
password: ${{ secrets.GHCR_TOKEN }}
28+
29+
- name: Login to Quay.io
30+
uses: docker/login-action@v3
31+
with:
32+
registry: quay.io
33+
username: ${{ secrets.QUAY_USERNAME }}
34+
password: ${{ secrets.QUAY_PASSWORD }}
35+
36+
- name: Make build script executable
37+
run: chmod +x ./build.sh
38+
39+
- name: Run build script (builds Docker image)
40+
run: ./build.sh build-only
41+
42+
- name: Extract version from build.sh
43+
id: get_version
44+
run: |
45+
VERSION=$(grep '^version=' build.sh | cut -d'"' -f2)
46+
echo "version=$VERSION" >> $GITHUB_OUTPUT
47+
echo "Extracted version: $VERSION"
48+
49+
- name: Tag Docker image with latest, version, and commit SHA
50+
run: |
51+
# The build.sh creates docker.io/cniweb/xmrig:${{ steps.get_version.outputs.version }}
52+
# We need to tag it for latest, version, and commit SHA across all registries
53+
54+
# Tag for Docker Hub
55+
docker tag docker.io/cniweb/xmrig:${{ steps.get_version.outputs.version }} docker.io/cniweb/xmrig:latest
56+
docker tag docker.io/cniweb/xmrig:${{ steps.get_version.outputs.version }} docker.io/cniweb/xmrig:${{ github.sha }}
57+
58+
# Tag for GitHub Container Registry
59+
docker tag docker.io/cniweb/xmrig:${{ steps.get_version.outputs.version }} ghcr.io/cniweb/xmrig:latest
60+
docker tag docker.io/cniweb/xmrig:${{ steps.get_version.outputs.version }} ghcr.io/cniweb/xmrig:${{ steps.get_version.outputs.version }}
61+
docker tag docker.io/cniweb/xmrig:${{ steps.get_version.outputs.version }} ghcr.io/cniweb/xmrig:${{ github.sha }}
62+
63+
# Tag for Quay.io
64+
docker tag docker.io/cniweb/xmrig:${{ steps.get_version.outputs.version }} quay.io/cniweb/xmrig:latest
65+
docker tag docker.io/cniweb/xmrig:${{ steps.get_version.outputs.version }} quay.io/cniweb/xmrig:${{ steps.get_version.outputs.version }}
66+
docker tag docker.io/cniweb/xmrig:${{ steps.get_version.outputs.version }} quay.io/cniweb/xmrig:${{ github.sha }}
67+
68+
- name: Push Docker images to all registries
69+
run: |
70+
# Push to Docker Hub
71+
docker push docker.io/cniweb/xmrig:latest
72+
docker push docker.io/cniweb/xmrig:${{ steps.get_version.outputs.version }}
73+
docker push docker.io/cniweb/xmrig:${{ github.sha }}
74+
75+
# Push to GitHub Container Registry
76+
docker push ghcr.io/cniweb/xmrig:latest
77+
docker push ghcr.io/cniweb/xmrig:${{ steps.get_version.outputs.version }}
78+
docker push ghcr.io/cniweb/xmrig:${{ github.sha }}
79+
80+
# Push to Quay.io
81+
docker push quay.io/cniweb/xmrig:latest
82+
docker push quay.io/cniweb/xmrig:${{ steps.get_version.outputs.version }}
83+
docker push quay.io/cniweb/xmrig:${{ github.sha }}

README.md

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,43 @@
44

55
High performance, open source RandomX, CryptoNight, AstroBWT and Argon2 CPU/GPU Miner Docker Image.
66

7-
[![Snyk Container](https://github.com/cniweb/xmrig-monero/actions/workflows/snyk-container-analysis.yml/badge.svg)](https://github.com/cniweb/xmrig-monero/actions/workflows/snyk-container-analysis.yml) ![Docker Pulls](https://img.shields.io/docker/pulls/cniweb/xmrig)
7+
[![Build & Push Docker Image](https://github.com/cniweb/xmrig-monero/actions/workflows/docker-build.yml/badge.svg)](https://github.com/cniweb/xmrig-monero/actions/workflows/docker-build.yml) [![Snyk Container](https://github.com/cniweb/xmrig-monero/actions/workflows/snyk-container-analysis.yml/badge.svg)](https://github.com/cniweb/xmrig-monero/actions/workflows/snyk-container-analysis.yml) ![Docker Pulls](https://img.shields.io/docker/pulls/cniweb/xmrig)
88

9-
## Usage from ghcr.io
9+
## Available Container Registries
1010

11-
```bash
12-
docker run ghcr.io/cniweb/xmrig:latest
13-
```
11+
This Docker image is automatically built and pushed to multiple container registries on every commit to the main branch:
1412

15-
<https://github.com/cniweb/xmrig-monero/pkgs/container/xmrig>
13+
### Docker Hub (docker.io)
14+
```bash
15+
# Pull and run latest version
16+
docker run docker.io/cniweb/xmrig:latest
1617

17-
## Usage from Docker.io
18+
# Pull specific commit
19+
docker run docker.io/cniweb/xmrig:<commit-sha>
20+
```
1821

22+
### GitHub Container Registry (ghcr.io)
1923
```bash
20-
docker run cniweb/xmrig:latest
24+
# Pull and run latest version
25+
docker run ghcr.io/cniweb/xmrig:latest
26+
27+
# Pull specific commit
28+
docker run ghcr.io/cniweb/xmrig:<commit-sha>
2129
```
2230

23-
## Usage from Quay.io
31+
Link: <https://github.com/cniweb/xmrig-monero/pkgs/container/xmrig>
2432

33+
### Quay.io
2534
```bash
26-
docker pull quay.io/cniweb/xmrig:latest
35+
# Pull and run latest version
36+
docker run quay.io/cniweb/xmrig:latest
37+
38+
# Pull specific commit
39+
docker run quay.io/cniweb/xmrig:<commit-sha>
2740
```
41+
42+
## Available Tags
43+
44+
- `latest` - Latest stable build from the main branch
45+
- `<commit-sha>` - Specific commit version (e.g., `a1b2c3d4...`)
46+
- `6.22.2` - Version-specific tags (legacy)

build.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ fi
1515

1616
echo "Docker build succeeded!"
1717

18+
# Check if we should only build (for CI/CD usage)
19+
if [ "$1" = "build-only" ]; then
20+
echo "Build-only mode: skipping push to registries"
21+
exit 0
22+
fi
23+
1824
# Tag and push the images
1925
for registry in "${registries[@]}"; do
2026
docker tag ${registries[0]}/cniweb/$image:$version $registry/cniweb/$image:$version

0 commit comments

Comments
 (0)