diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..fb03dd5 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,6 @@ +root = true + +[*] +indent_size = 3 +indent_style = space + diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index 0beb11c..d97aaf1 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -1,50 +1,59 @@ name: Deploy on: - push: - branches: - - main - workflow_dispatch: + push: + branches: + - main + - dev + workflow_dispatch: jobs: - deploy: - runs-on: ubuntu-latest - - steps: - - name: Checkout Repository - uses: actions/checkout@v4 - - - name: Setup Go - uses: actions/setup-go@v5 - with: - go-version: '1.22' - - - name: Build - run: go build -o comprezo main.go - - - name: Setup SSH - run: | - mkdir -p ~/.ssh - echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - ssh-keyscan -H ${{ secrets.REMOTE_HOST }} >> ~/.ssh/known_hosts - - - name: Deploy - run: | - TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S") - RELEASE_DIR="${{ secrets.REMOTE_PATH }}/releases/$TIMESTAMP" - CURRENT_LINK="${{ secrets.REMOTE_PATH }}/current" - - ssh ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} << EOF - mkdir -p $RELEASE_DIR - EOF - - rsync -avz --delete \ - ./comprezo ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }}:$RELEASE_DIR/comprezo - - ssh ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} << EOF - chmod +x $RELEASE_DIR/comprezo - ln -sfn $RELEASE_DIR $CURRENT_LINK - - systemctl --user restart comprezo - EOF + deploy: + runs-on: ubuntu-latest + environment: ${{ github.ref == 'refs/heads/main' && 'prod' || 'dev' }} + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version: "1.22" + + - name: Build + run: go build -o comprezo main.go + + - name: Setup SSH + run: | + mkdir -p ~/.ssh + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + ssh-keyscan -H ${{ secrets.REMOTE_HOST }} >> ~/.ssh/known_hosts + + - name: Deploy + run: | + TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S") + RELEASE_DIR="${{ secrets.REMOTE_PATH }}/releases/$TIMESTAMP" + CURRENT_LINK="${{ secrets.REMOTE_PATH }}/current" + + ssh ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} << EOF + mkdir -p $RELEASE_DIR + EOF + + rsync -avz --delete \ + ./comprezo ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }}:$RELEASE_DIR/comprezo + + ssh ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} << EOF + chmod +x $RELEASE_DIR/comprezo + ln -sfn $RELEASE_DIR $CURRENT_LINK + + systemctl --user restart ${{ github.ref == 'refs/heads/main' && 'api.comprezo.io' || 'dev-api.comprezo.io' }} + EOF + + - name: Cleanup Old Releases + run: | + ssh ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }} << EOF + cd ${{ secrets.REMOTE_PATH }}/releases + ls -dt */ | tail -n +51 | xargs rm -rf -- + EOF diff --git a/.gitignore b/.gitignore index 91450fa..3b37dbb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .vscode config.json +conf \ No newline at end of file