File tree Expand file tree Collapse file tree 2 files changed +58
-2
lines changed Expand file tree Collapse file tree 2 files changed +58
-2
lines changed Original file line number Diff line number Diff line change 1+ name : " CD" 
2+ 
3+ on :
4+   workflow_dispatch :
5+     inputs :
6+       TAG :
7+         required : true 
8+         description : ' Docker container tag' 
9+         default : staging 
10+ 
11+ env :
12+   AWS_ACCESS_KEY_ID : ${{ secrets.AWS_ACCESS_KEY }} 
13+   AWS_SECRET_ACCESS_KEY : ${{ secrets.AWS_SECRET_ACCESS_KEY }} 
14+ 
15+ jobs :
16+   build_an_push :
17+     name : Build and Push a docker image 
18+     runs-on : ubuntu-latest 
19+     steps :
20+       - name : Checkout 
21+         uses : actions/checkout@v2 
22+ 
23+       - name : Set env 
24+         run : echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV 
25+ 
26+       - name : Configure AWS credentials 
27+         uses : aws-actions/configure-aws-credentials@v1 
28+         with :
29+           aws-access-key-id : ${{ secrets.AWS_ACCESS_KEY_ID }} 
30+           aws-secret-access-key : ${{ secrets.AWS_SECRET_ACCESS_KEY }} 
31+           aws-region : us-east-1 
32+ 
33+       - name : Login to Amazon ECR 
34+         id : login-ecr 
35+         uses : aws-actions/amazon-ecr-login@v1 
36+ 
37+       - name : Build, tag, and push image to Amazon ECR 
38+         id : build-image 
39+         env :
40+           ECR_REGISTRY : ${{ steps.login-ecr.outputs.registry }} 
41+           ECR_REPOSITORY : sidecache 
42+           IMAGE_TAG : ${{ github.event.inputs.TAG || env.RELEASE_VERSION }} 
43+         run : | 
44+           # Build a docker container and push it to ECR 
45+           docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG --build-arg release_version=${IMAGE_TAG} . 
46+           docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG 
47+           echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" 
Original file line number Diff line number Diff line change @@ -2,14 +2,17 @@ package lock
22
33import  (
44	"errors" 
5+ 	"sync" 
6+ 	"time" 
7+ 
58	"github.com/google/uuid" 
69	"github.com/zeriontech/sidecache/pkg/cache" 
7- 	"time" 
810)
911
1012type  RedisLock  struct  {
11- 	redis  * cache.RedisRepository 
13+ 	redis    * cache.RedisRepository 
1214	values  map [string ]string 
15+ 	mutex   sync.Mutex 
1316}
1417
1518const  UnlockScript  =  ` 
@@ -25,12 +28,18 @@ func NewRedisLock(redis *cache.RedisRepository) *RedisLock {
2528}
2629
2730func  (lock  * RedisLock ) Acquire (key  string , ttl  time.Duration ) error  {
31+ 	lock .mutex .Lock ()
32+ 	defer  lock .mutex .Unlock ()
33+ 
2834	val  :=  uuid .NewString ()
2935	lock .values [key ] =  val 
3036	return  lock .redis .SetNX (key , val , ttl )
3137}
3238
3339func  (lock  * RedisLock ) Release (key  string ) error  {
40+ 	lock .mutex .Lock ()
41+ 	defer  lock .mutex .Unlock ()
42+ 
3443	val , ok  :=  lock .values [key ]
3544	if  ! ok  {
3645		return  errors .New ("unknown key" )
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments