1*2b22414dSLouis Ouelletname: Release 2*2b22414dSLouis Ouellet 3*2b22414dSLouis Ouelleton: 4*2b22414dSLouis Ouellet push: 5*2b22414dSLouis Ouellet tags: 6*2b22414dSLouis Ouellet - 'v*' 7*2b22414dSLouis Ouellet 8*2b22414dSLouis Ouelletjobs: 9*2b22414dSLouis Ouellet release: 10*2b22414dSLouis Ouellet runs-on: ubuntu-latest 11*2b22414dSLouis Ouellet steps: 12*2b22414dSLouis Ouellet - name: Checkout code 13*2b22414dSLouis Ouellet uses: actions/checkout@v2 14*2b22414dSLouis Ouellet with: 15*2b22414dSLouis Ouellet fetch-depth: 0 16*2b22414dSLouis Ouellet 17*2b22414dSLouis Ouellet - name: Set Tag as Filename 18*2b22414dSLouis Ouellet id: tag_name 19*2b22414dSLouis Ouellet run: echo "TAG_NAME=${GITHUB_REF##*/}" >> $GITHUB_ENV 20*2b22414dSLouis Ouellet 21*2b22414dSLouis Ouellet - name: Create ZIP file 22*2b22414dSLouis Ouellet run: zip -r "${{ env.TAG_NAME }}.zip" . 23*2b22414dSLouis Ouellet 24*2b22414dSLouis Ouellet - name: Generate Changelog 25*2b22414dSLouis Ouellet id: generate_changelog 26*2b22414dSLouis Ouellet run: | 27*2b22414dSLouis Ouellet # Find the most recent tag before the current one 28*2b22414dSLouis Ouellet PREV_TAG=$(git describe --tags --abbrev=0 HEAD^) 29*2b22414dSLouis Ouellet 30*2b22414dSLouis Ouellet # Create a new CHANGELOG.md file with headers 31*2b22414dSLouis Ouellet echo -e "# Changelog\n" > CHANGELOG.md 32*2b22414dSLouis Ouellet 33*2b22414dSLouis Ouellet # List commit messages between the previous tag and current HEAD 34*2b22414dSLouis Ouellet git log ${PREV_TAG}..HEAD --pretty=format:"* %s" >> CHANGELOG.md 35*2b22414dSLouis Ouellet 36*2b22414dSLouis Ouellet # List unique contributors for these commits 37*2b22414dSLouis Ouellet echo -e "\n\n# Contributors\n" >> CHANGELOG.md 38*2b22414dSLouis Ouellet git log ${PREV_TAG}..HEAD --format='%aN' | sort -u | awk '{print "* " $0}' >> CHANGELOG.md 39*2b22414dSLouis Ouellet 40*2b22414dSLouis Ouellet - name: Create Release 41*2b22414dSLouis Ouellet id: create_release 42*2b22414dSLouis Ouellet uses: actions/create-release@v1 43*2b22414dSLouis Ouellet env: 44*2b22414dSLouis Ouellet GITHUB_TOKEN: ${{ secrets.GH_PAT }} 45*2b22414dSLouis Ouellet with: 46*2b22414dSLouis Ouellet tag_name: ${{ github.ref }} 47*2b22414dSLouis Ouellet release_name: Release ${{ github.ref }} 48*2b22414dSLouis Ouellet draft: false 49*2b22414dSLouis Ouellet prerelease: false 50*2b22414dSLouis Ouellet body_path: ./CHANGELOG.md 51*2b22414dSLouis Ouellet 52*2b22414dSLouis Ouellet - name: Upload Asset 53*2b22414dSLouis Ouellet uses: actions/upload-release-asset@v1 54*2b22414dSLouis Ouellet env: 55*2b22414dSLouis Ouellet GITHUB_TOKEN: ${{ secrets.GH_PAT }} 56*2b22414dSLouis Ouellet with: 57*2b22414dSLouis Ouellet upload_url: ${{ steps.create_release.outputs.upload_url }} 58*2b22414dSLouis Ouellet asset_path: ./${{ env.TAG_NAME }}.zip 59*2b22414dSLouis Ouellet asset_name: source.zip 60*2b22414dSLouis Ouellet asset_content_type: application/zip 61