release.yaml 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. on:
  2. release:
  3. types: [released]
  4. name: Update binaries
  5. jobs:
  6. update-self-hosted-helm-registry:
  7. runs-on: ubuntu-latest
  8. steps:
  9. - name: Get tag name
  10. id: tag_name
  11. run: echo "tag=${GITHUB_TAG/refs\/tags\//}" >> $GITHUB_OUTPUT
  12. env:
  13. GITHUB_TAG: ${{ github.ref }}
  14. - name: Run workflow
  15. run: gh workflow run release.yaml --repo porter-dev/porter-self-hosted -f version=${{steps.tag_name.outputs.tag}}
  16. env:
  17. GITHUB_TOKEN: ${{ secrets.PORTER_DEV_GITHUB_TOKEN }}
  18. update-public-repo:
  19. runs-on: ubuntu-latest
  20. steps:
  21. - name: Get tag name
  22. id: tag_name
  23. run: echo "tag=${GITHUB_TAG/refs\/tags\//}" >> $GITHUB_OUTPUT
  24. env:
  25. GITHUB_TAG: ${{ github.ref }}
  26. - name: Create release in public repo
  27. run: |
  28. gh release create ${{steps.tag_name.outputs.tag}} *_${{steps.tag_name.outputs.tag}}*.zip --repo porter-dev/porter-archive
  29. env:
  30. GITHUB_TOKEN: ${{ secrets.PORTER_DEV_GITHUB_TOKEN }}
  31. push-docker-server-latest:
  32. runs-on: ubuntu-latest
  33. steps:
  34. - name: Get tag name
  35. id: tag_name
  36. run: echo "tag=${GITHUB_TAG/refs\/tags\//}" >> $GITHUB_OUTPUT
  37. env:
  38. GITHUB_TAG: ${{ github.ref }}
  39. - name: Setup docker
  40. uses: docker/login-action@v2
  41. with:
  42. username: ${{ secrets.DOCKERHUB_USERNAME }}
  43. password: ${{ secrets.DOCKERHUB_TOKEN }}
  44. - name: Pull versioned server image and push to latest
  45. run: |
  46. docker pull porter1/porter:${{steps.tag_name.outputs.tag}}
  47. docker tag porter1/porter:${{steps.tag_name.outputs.tag}} porter1/porter:latest
  48. docker push porter1/porter:latest
  49. push-docker-cli-latest:
  50. name: Build a new porter-cli docker image
  51. runs-on: ubuntu-latest
  52. steps:
  53. - name: Get tag name
  54. id: tag_name
  55. run: echo "tag=${GITHUB_TAG/refs\/tags\//}" >> $GITHUB_OUTPUT
  56. env:
  57. GITHUB_TAG: ${{ github.ref }}
  58. - name: Configure AWS credentials
  59. uses: aws-actions/configure-aws-credentials@v1-node16
  60. with:
  61. aws-access-key-id: ${{ secrets.ECR_AWS_ACCESS_KEY_ID }}
  62. aws-secret-access-key: ${{ secrets.ECR_AWS_SECRET_ACCESS_KEY }}
  63. aws-region: us-east-2
  64. - name: Login to ECR public
  65. id: login-ecr
  66. run: |
  67. aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/o1j4x7p4
  68. - name: Login to GHCR
  69. id: login-ghcr
  70. run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
  71. - name: Pull versioned CLI image and push to latest
  72. run: |
  73. docker pull public.ecr.aws/o1j4x7p4/porter-cli:${{steps.tag_name.outputs.tag}}
  74. docker tag public.ecr.aws/o1j4x7p4/porter-cli:${{steps.tag_name.outputs.tag}} public.ecr.aws/o1j4x7p4/porter-cli:latest
  75. docker push public.ecr.aws/o1j4x7p4/porter-cli:latest
  76. docker pull ghcr.io/porter-dev/porter/porter-cli:${{steps.tag_name.outputs.tag}}
  77. docker tag ghcr.io/porter-dev/porter/porter-cli:${{steps.tag_name.outputs.tag}} ghcr.io/porter-dev/porter/porter-cli:latest
  78. docker push ghcr.io/porter-dev/porter/porter-cli:latest
  79. update-homebrew-repo:
  80. name: Update the Homebrew repo with the new CLI version
  81. runs-on: ubuntu-latest
  82. steps:
  83. - name: Get tag name
  84. id: tag_name
  85. run: echo "tag=${GITHUB_TAG/refs\/tags\//}" >> $GITHUB_OUTPUT
  86. env:
  87. GITHUB_TAG: ${{ github.ref }}
  88. - name: Create and commit porter.rb file
  89. run: |
  90. version=${{steps.tag_name.outputs.tag}}
  91. name=porter_${{steps.tag_name.outputs.tag}}_Darwin_x86_64.zip
  92. curl -L https://github.com/porter-dev/porter-archive/releases/download/${version}/porter_${version}_Darwin_x86_64.zip --output $name
  93. sha=$(cat porter_${{steps.tag_name.outputs.tag}}_Darwin_x86_64.zip | openssl sha256 | sed 's/(stdin)= //g')
  94. sha=${sha#"SHA256"}
  95. cat >porter.rb <<EOL
  96. class Porter < Formula
  97. homepage "https://porter.run"
  98. version "${{steps.tag_name.outputs.tag}}"
  99. on_macos do
  100. url "https://github.com/porter-dev/porter-archive/releases/download/${{steps.tag_name.outputs.tag}}/porter_${{steps.tag_name.outputs.tag}}_Darwin_x86_64.zip"
  101. sha256 "$sha"
  102. def install
  103. bin.install "porter"
  104. end
  105. end
  106. end
  107. EOL
  108. - name: Add and commit porter.rb file
  109. run: |
  110. git clone https://portersupport:${{ secrets.HOMEBREW_GITHUB_TOKEN }}@github.com/porter-dev/homebrew-porter
  111. cd homebrew-porter
  112. git config user.name "Update Bot"
  113. git config user.email "support@porter.run"
  114. mv ../porter.rb ./Formula/porter.rb
  115. git add Formula
  116. git commit -m "Update to version ${{steps.tag_name.outputs.tag}}"
  117. git push origin main