release.yml 3.7 KB

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