release.yml 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. name: Release
  2. on:
  3. push:
  4. branches:
  5. - release/**
  6. jobs:
  7. github-release:
  8. runs-on: ubuntu-latest
  9. outputs:
  10. RELEASE_VERSION: ${{ steps.bump-version.outputs.RELEASE_VERSION }}
  11. steps:
  12. - uses: actions/checkout@v2
  13. - name: Init Git
  14. run: |
  15. git config --local user.name "GitHub Action"
  16. git config --local user.email "info@weseek.co.jp"
  17. git remote set-url origin "https://$GITHUB_ACTOR:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY"
  18. - name: Bump version
  19. id: bump-version
  20. run: |
  21. npm --no-git-tag-version version patch
  22. export RELEASE_VERSION=`npm run version --silent`
  23. sh ./bin/github-actions/update-readme.sh
  24. echo "RELEASE_VERSION=$RELEASE_VERSION" >> $GITHUB_ENV
  25. echo ::set-output name=RELEASE_VERSION::$RELEASE_VERSION
  26. - name: Checkout, Commit, Tag and Push
  27. run: |
  28. TMP_RELEASE_BRANCH=tmp/release-${{ env.RELEASE_VERSION }}
  29. git checkout -B $TMP_RELEASE_BRANCH
  30. git commit -am "Release v${{ env.RELEASE_VERSION }}"
  31. git tag -a v${{ env.RELEASE_VERSION }} -m "v${{ env.RELEASE_VERSION }}"
  32. git push --follow-tags origin $TMP_RELEASE_BRANCH
  33. git push --delete origin $TMP_RELEASE_BRANCH
  34. - name: Upload release notes
  35. uses: Roang-zero1/github-create-release-action@master
  36. with:
  37. created_tag: v${{ env.RELEASE_VERSION }}
  38. changelog_file: CHANGES.md
  39. env:
  40. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  41. build-image:
  42. needs: github-release
  43. runs-on: ubuntu-latest
  44. strategy:
  45. matrix:
  46. flavor: [default, nocdn]
  47. steps:
  48. - uses: actions/checkout@v2
  49. - name: Checkout released tag
  50. run: |
  51. git fetch --tags
  52. git checkout refs/tags/v${{ needs.github-release.outputs.RELEASE_VERSION }}
  53. - name: Determine suffix
  54. run: |
  55. [[ ${{ matrix.flavor }} = "nocdn" ]] && suffix="-nocdn" || suffix=""
  56. echo "SUFFIX=$suffix" >> $GITHUB_ENV
  57. - name: Set up Docker Buildx
  58. uses: docker/setup-buildx-action@v1
  59. - name: Login to docker.io registry
  60. run: |
  61. echo ${{ secrets. DOCKER_REGISTRY_PASSWORD }} | docker login --username wsmoogle --password-stdin
  62. - name: Build Docker Image
  63. run: |
  64. docker buildx build \
  65. --tag growi${{ env.SUFFIX }} \
  66. --build-arg flavor=${{ matrix.flavor }} \
  67. --platform linux/amd64 \
  68. --load \
  69. --file ./docker/Dockerfile .
  70. - name: Docker Tags by SemVer
  71. uses: weseek/ghaction-docker-tags-by-semver@v1.0.5
  72. with:
  73. source: growi${{ env.SUFFIX }}
  74. target: weseek/growi
  75. semver: ${{ needs.github-release.outputs.RELEASE_VERSION }}
  76. suffix: ${{ env.SUFFIX }}
  77. additional-tags: 'latest'
  78. publish: true
  79. - name: Update Docker Hub Description
  80. uses: peter-evans/dockerhub-description@v2
  81. with:
  82. username: wsmoogle
  83. password: ${{ secrets.DOCKER_REGISTRY_PASSWORD }}
  84. repository: weseek/growi
  85. readme-filepath: ./docker/README.md
  86. - name: Login to GitHub Container Registry
  87. uses: docker/login-action@v1
  88. with:
  89. registry: ghcr.io
  90. username: wsmoogle
  91. password: ${{ secrets.DOCKER_REGISTRY_ON_GITHUB_PASSWORD }}
  92. - name: Docker Tags by SemVer in Github Container Registry
  93. uses: weseek/ghaction-docker-tags-by-semver@v1.0.3
  94. with:
  95. source: growi${{ env.SUFFIX }}
  96. target: ghcr.io/weseek/growi
  97. semver: ${{ needs.github-release.outputs.RELEASE_VERSION }}
  98. suffix: ${{ env.SUFFIX }}
  99. additional-tags: 'latest'
  100. publish: true
  101. - name: Slack Notification
  102. uses: weseek/ghaction-release-slack-notification@master
  103. with:
  104. channel: '#general'
  105. url: ${{ secrets.SLACK_WEBHOOK_URL }}
  106. created_tag: 'v${{ needs.github-release.outputs.RELEASE_VERSION }}${{ env.SUFFIX }}'
  107. - name: Check whether workspace is clean
  108. run: |
  109. STATUS=`git status --porcelain`
  110. if [ -z "$STATUS" ]; then exit 0; else exit 1; fi