dev_cli.yml 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. on:
  2. push:
  3. branches:
  4. - master
  5. name: Release dev cli
  6. jobs:
  7. build-linux:
  8. name: Build Linux binaries
  9. runs-on: ubuntu-latest
  10. steps:
  11. - name: Checkout code
  12. uses: actions/checkout@v3
  13. - name: Set up Go
  14. uses: actions/setup-go@v4
  15. with:
  16. cache: false
  17. go-version: '1.20.5'
  18. go-version-file: go.mod
  19. - name: Build Linux binaries
  20. run: |
  21. go build -ldflags="-w -s -X 'github.com/porter-dev/porter/cli/cmd/config.Version=dev_${{ github.sha }}' -X 'github.com/porter-dev/porter/cli/cmd/errors.SentryDSN=${{secrets.SENTRY_DSN}}'" -a -tags cli -o ./porter ./cli &
  22. wait
  23. env:
  24. GOOS: linux
  25. GOARCH: amd64
  26. CGO_ENABLED: 0
  27. - name: Zip Linux binaries
  28. run: |
  29. mkdir -p ./release/linux
  30. zip --junk-paths ./release/linux/porter_dev_${{ github.sha }}_Linux_x86_64.zip ./porter
  31. - name: Upload binaries
  32. uses: actions/upload-artifact@v3
  33. with:
  34. path: ./release/linux
  35. name: linux-binaries
  36. retention-days: 1
  37. release:
  38. name: Zip binaries, create release and upload assets
  39. runs-on: ubuntu-latest
  40. needs:
  41. - build-linux
  42. steps:
  43. - name: Download binaries
  44. uses: actions/download-artifact@v3
  45. with:
  46. name: linux-binaries
  47. path: release/linux
  48. - name: Create Release
  49. id: create_release
  50. uses: softprops/action-gh-release@v1
  51. with:
  52. tag_name: dev_${{ github.sha }}
  53. name: Release dev cli for ${{ github.sha }}
  54. token: ${{ secrets.GITHUB_TOKEN }}
  55. draft: false
  56. prerelease: true
  57. - name: Upload Linux CLI Release Asset
  58. id: upload-linux-cli-release-asset
  59. uses: actions/upload-release-asset@v1
  60. env:
  61. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  62. GITHUB_TAG: dev_${{ github.sha }}
  63. with:
  64. upload_url: ${{ steps.create_release.outputs.upload_url }}
  65. asset_path: ./release/linux/porter_dev_${{ github.sha }}_Linux_x86_64.zip
  66. asset_name: porter_dev_${{ github.sha }}_Linux_x86_64.zip
  67. asset_content_type: application/zip
  68. build-push-docker-cli:
  69. name: Build a new porter-cli docker image and push to dev tag
  70. runs-on: ubuntu-latest
  71. needs: release
  72. steps:
  73. - name: Checkout
  74. uses: actions/checkout@v3
  75. - name: Login to GHCR
  76. id: login-ghcr
  77. run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
  78. - name: Build
  79. run: |
  80. docker build ./services/porter_cli_container \
  81. -t ghcr.io/porter-dev/porter/porter-cli:dev \
  82. -f ./services/porter_cli_container/Dockerfile \
  83. --build-arg VERSION=dev \
  84. --build-arg SENTRY_DSN=${{secrets.SENTRY_DSN}}
  85. - name: Push to GHCR
  86. run: |
  87. docker tag ghcr.io/porter-dev/porter/porter-cli:dev ghcr.io/porter-dev/porter/porter-cli:dev
  88. docker push ghcr.io/porter-dev/porter/porter-cli:dev