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 }}
0 commit comments