"on": push: tags: - production name: Deploy Porter to Production jobs: build-go: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Setup Go Cache uses: actions/cache@v3 with: path: | ~/.cache/go-build ~/go/pkg/mod key: porter-go-${{ hashFiles('**/go.sum') }} restore-keys: porter-go-` - name: Setup Go uses: actions/setup-go@v4 with: go-version-file: go.mod cache: false go-version: '1.20.5' - name: Download Go Modules run: go mod download - name: Build Server Binary run: go build -ldflags="-w -s -X 'main.Version=production'" -tags ee -o ./bin/app ./cmd/app - name: Build Migration Binary run: go build -ldflags '-w -s' -tags ee -o ./bin/migrate ./cmd/migrate - name: Compress binaries run: | upx bin/* --best --lzma - name: Store Binaries uses: actions/upload-artifact@v3 with: name: go-binaries path: bin/ retention-days: 1 build-npm: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Setup Node uses: actions/setup-node@v3 with: node-version: 16 - name: Install NPM Dependencies run: | cd dashboard npm i --legacy-peer-deps - name: Run NPM Build run: | cd dashboard npm run build - name: Store NPM Static Files uses: actions/upload-artifact@v3 with: name: npm-static-files path: dashboard/build/ retention-days: 1 porter-deploy: runs-on: ubuntu-latest needs: [build-go, build-npm] steps: - name: Checkout code uses: actions/checkout@v3 - name: Get Go Binaries uses: actions/download-artifact@v3 with: name: go-binaries path: bin/ - name: Get NPM static files uses: actions/download-artifact@v3 with: name: npm-static-files path: build/ - name: Set Github tag id: vars run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - name: Update Porter API timeout-minutes: 20 uses: porter-dev/porter-update-action@v0.1.0 with: app: porter-ui cluster: "9" host: https://dashboard.internal-tools.porter.run namespace: default project: "5" tag: ${{ steps.vars.outputs.sha_short }} token: ${{ secrets.PORTER_TOKEN_5 }} - name: Update Porter Auth timeout-minutes: 20 uses: porter-dev/porter-update-config-action@v0.1.0 with: app: porter-auth cluster: "9" host: https://dashboard.internal-tools.porter.run namespace: default project: "5" tag: ${{ steps.vars.outputs.sha_short }} token: ${{ secrets.PORTER_TOKEN_5 }}