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=torchsim-ci:${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
31+ echo "GITHUB_SHA=$GITHUB_SHA" >> $GITHUB_ENV
32+ echo "GITHUB_SHA=$GITHUB_SHA"
33+
34+ - name : Pull Cached Image & Set environment
35+ env :
36+ GIT_ACCESS_TOKEN : ${{ secrets.GIT_ACCESS_TOKEN }}
37+ run : |
38+ docker pull ghcr.io/psal-postech/torchsim_base:latest || echo "No cache available"
39+ gem5_response_file=/tmp/releases-gem5-latest.json
40+ response=$(curl -sH "Authorization: Bearer ${GIT_ACCESS_TOKEN}" https://api.github.com/repos/PSAL-POSTECH/GEM5/releases/latest > ${gem5_response_file} )
41+ GEM5_ASSET_ID=$(cat ${gem5_response_file} | jq ".assets[0]."id"")
42+ echo "GEM5_ASSET_ID=$GEM5_ASSET_ID"
43+ echo "GEM5_ASSET_ID=$GEM5_ASSET_ID" >> $GITHUB_ENV
44+
45+ llvm_response_file=/tmp/releases-gem5-latest.json
46+ response=$(curl -sH "Authorization: Bearer ${GIT_ACCESS_TOKEN}" https://api.github.com/repos/PSAL-POSTECH/llvm-project/releases/latest > ${llvm_response_file} )
47+ LLVM_ASSET_ID=$(cat ${llvm_response_file} | jq ".assets[0]."id"")
48+ echo "LLVM_ASSET_ID=$LLVM_ASSET_ID"
49+ echo "LLVM_ASSET_ID=$LLVM_ASSET_ID" >> $GITHUB_ENV
50+
51+ mkdir -p /tmp/torchsim-ci/${GITHUB_SHA}
52+ echo "DUMP_PATH=/tmp/torchsim-ci/${GITHUB_SHA}"
53+
54+ - name : Build and Push Docker Image
55+ uses : docker/build-push-action@v4
56+ env :
57+ GIT_ACCESS_TOKEN : ${{ secrets.GIT_ACCESS_TOKEN }}
58+ with :
59+ context : .
60+ file : ./Dockerfile
61+ push : true
62+ build-args : |
63+ GEM5_ASSET_ID=${{ env.GEM5_ASSET_ID }}
64+ LLVM_ASSET_ID=${{ env.LLVM_ASSET_ID }}
65+ GIT_ACCESS_TOKEN=${{ env.GIT_ACCESS_TOKEN }}
66+ TORCHSIM_SHA=${{ env.GITHUB_SHA }}
67+ tags : ghcr.io/psal-postech/${{ env.IMAGE_TAG}}
0 commit comments