summaryrefslogtreecommitdiff
path: root/.github/workflows/main.yaml
blob: ad5a70a273e37a4440cdd61846ea57a9333d7a75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
name: Publish Extension

on:
  push:
    branches:
      - main
      - package-python

jobs:
  pyinstaller:
    strategy:
      matrix:
        os: [macos-latest, ubuntu-latest, windows-latest]

    runs-on: ${{ matrix.os }}

    steps:
      - name: Check-out repository
        uses: actions/checkout@v3

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: "3.10"

      - name: Install Pyinstaller
        run: |
          pip install pyinstaller

      - name: Install Dependencies
        run: |
          pip install -r continuedev/requirements.txt

      - name: Build PyInstaller Executable for Windows
        run: pyinstaller run.py --exclude-module numpy --exclude-module jedi -F --add-data 'continuedev;continuedev' --hidden-import=anthropic --hidden-import=github
        if: matrix.os == 'windows-latest'

      - name: Build PyInstaller Executable for Mac/Linux
        run: pyinstaller run.py --exclude-module numpy --exclude-module jedi -F --add-data 'continuedev:continuedev' --hidden-import=anthropic --hidden-import=github
        if: matrix.os != 'windows-latest'

      - name: Set permissions
        run: |
          chmod 777 dist/run

      - name: Upload Artifacts
        uses: actions/upload-artifact@v3
        with:
          name: ${{ runner.os }} Build
          path: dist/*

  publish:
    needs: pyinstaller
    runs-on: ubuntu-latest
    permissions:
      contents: write

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Download Linux build
        uses: actions/download-artifact@v2
        with:
          name: Linux Build
          path: extension/server/exe/linux

      - name: Download macOS build
        uses: actions/download-artifact@v2
        with:
          name: macOS Build
          path: extension/server/exe/mac

      - name: Download Windows build
        uses: actions/download-artifact@v2
        with:
          name: Windows Build
          path: extension/server/exe/windows

      - name: Use Node.js 19.0.0
        uses: actions/setup-node@v3
        with:
          node-version: 19.0.0

      - name: Cache extension node_modules
        uses: actions/cache@v2
        with:
          path: extension/node_modules
          key: ${{ runner.os }}-node-${{ hashFiles('extension/package-lock.json') }}

      - name: Cache react-app node_modules
        uses: actions/cache@v2
        with:
          path: extension/react-app/node_modules
          key: ${{ runner.os }}-node-${{ hashFiles('extension/react-app/package-lock.json') }}

      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: "14"

      - name: Install extension Dependencies
        run: |
          cd extension
          npm ci

      - name: Install react-app Dependencies
        run: |
          cd extension/react-app
          npm ci --legacy-peer-deps

      - name: Build and Publish
        run: |
          cd extension
          npm run package
      #     npx vsce publish patch -p ${{ secrets.VSCE_TOKEN }}
      # - name: Commit changes
      #   run: |
      #     git config --local user.email "action@github.com"
      #     git config --local user.name "GitHub Action"
      #     git commit -am "ci: 💚 Update package.json version [skip ci]"

      # - name: Push changes
      #   uses: ad-m/github-push-action@master
      #   with:
      #     github_token: ${{ secrets.GITHUB_TOKEN }}
      #     branch: ${{ github.ref }}

      - name: Upload .vsix artifact
        uses: actions/upload-artifact@v2
        with:
          name: vsix-artifact
          path: extension/build/*

      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-west-2

      - name: Upload binaries to S3
        uses: jakejarvis/s3-sync-action@master
        with:
          args: --follow-symlinks --delete
        env:
          AWS_S3_BUCKET: continue-server-binaries
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          AWS_REGION: "us-west-1"
          SOURCE_DIR: "extension/server/exe"