1+ name : Build & Push Docker Image on Tag
2+
3+ on :
4+ push :
5+ tags :
6+ - ' v*'
7+
8+ jobs :
9+ build :
10+ runs-on : self-hosted
11+
12+ permissions :
13+ contents : read
14+ packages : write
15+ id-token : write
16+
17+ steps :
18+ - name : Checkout code
19+ uses : actions/checkout@v4
20+
21+ - name : Log in to GitHub Container Registry
22+ uses : docker/login-action@v3
23+ with :
24+ registry : ghcr.io
25+ username : ${{ github.actor }}
26+ password : ${{ secrets.GITHUB_TOKEN }}
27+
28+ - name : Set Tag Environment
29+ run : |
30+ echo "IMAGE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
31+ echo "GITHUB_SHA=$GITHUB_SHA" >> $GITHUB_ENV
32+
33+ - name : Pull Cached Image & Set environment
34+ env :
35+ GIT_ACCESS_TOKEN : ${{ secrets.GIT_ACCESS_TOKEN }}
36+ run : |
37+ docker pull ghcr.io/psal-postech/torchsim_base:latest || echo "No cache available"
38+ echo "IMAGE_TAG=torchsim-ci:${GITHUB_SHA}" >> $GITHUB_ENV
39+ echo "GITHUB_SHA=${{github.event.pull_request.head.sha}}" >> $GITHUB_ENV
40+ echo "GITHUB_SHA=${{github.event.pull_request.head.sha}}"
41+ gem5_response_file=/tmp/releases-gem5-latest.json
42+ response=$(curl -sH "Authorization: Bearer ${GIT_ACCESS_TOKEN}" https://api.github.com/repos/PSAL-POSTECH/GEM5/releases/latest > ${gem5_response_file} )
43+ GEM5_ASSET_ID=$(cat ${gem5_response_file} | jq ".assets[0]."id"")
44+ echo "GEM5_ASSET_ID=$GEM5_ASSET_ID"
45+ echo "GEM5_ASSET_ID=$GEM5_ASSET_ID" >> $GITHUB_ENV
46+
47+ llvm_response_file=/tmp/releases-gem5-latest.json
48+ response=$(curl -sH "Authorization: Bearer ${GIT_ACCESS_TOKEN}" https://api.github.com/repos/PSAL-POSTECH/llvm-project/releases/latest > ${llvm_response_file} )
49+ LLVM_ASSET_ID=$(cat ${llvm_response_file} | jq ".assets[0]."id"")
50+ echo "LLVM_ASSET_ID=$LLVM_ASSET_ID"
51+ echo "LLVM_ASSET_ID=$LLVM_ASSET_ID" >> $GITHUB_ENV
52+
53+ mkdir -p /tmp/torchsim-ci/${GITHUB_SHA}
54+ echo "DUMP_PATH=/tmp/torchsim-ci/${GITHUB_SHA}"
55+
56+ - name : Build and Push Docker Image
57+ uses : docker/build-push-action@v4
58+ env :
59+ GIT_ACCESS_TOKEN : ${{ secrets.GIT_ACCESS_TOKEN }}
60+ with :
61+ context : .
62+ file : ./Dockerfile
63+ push : true
64+ build-args : |
65+ GEM5_ASSET_ID=${{ env.GEM5_ASSET_ID }}
66+ LLVM_ASSET_ID=${{ env.LLVM_ASSET_ID }}
67+ GIT_ACCESS_TOKEN=${{ env.GIT_ACCESS_TOKEN }}
68+ TORCHSIM_SHA=${{ env.GITHUB_SHA }}
69+ tags : ghcr.io/psal-postech/${{ env.IMAGE_TAG}}
0 commit comments