name: release on: schedule: - cron: "0 4 * * *" workflow_dispatch: inputs: args: description: Make arguments default: release tag: description: Optional release tag (normally auto-detected) jobs: build: runs-on: ubuntu-20.04 container: ghcr.io/orbitalquark/textadept-build:v2.0 outputs: version: ${{ steps.build.outputs.version }} steps: - name: Checkout uses: actions/checkout@v2 - name: Checkout textadept-build dependencies uses: actions/checkout@v2 with: repository: orbitalquark/textadept-build path: textadept-build - name: Build id: build shell: bash run: | # Move cached dependencies into src/. mv textadept-build/* src && rm -r textadept-build # Build. if [[ ${{ github.event_name }} != schedule ]]; then args="${{ github.event.inputs.args }}" else args="release NIGHTLY=1 DEBUG=1" fi make -C src deps win32-deps osx-deps make -C src $args # For nightly builds, strip the date from filenames. for file in `ls src/textadept_nightly* 2>/dev/null`; do mv $file `echo $file | sed 's/_[0-9]\{4\}\(-[0-9]\{2\}\)\{2\}//;'` done # Output version information for use in later steps. version="${{ github.event.inputs.tag }}" if [[ -z $version ]]; then version=`ls -1 src/textadept_*.zip | head -1 | sed 's/[^_]\+_\(.\+\)\.[^.]\+\.zip/\1/;'` fi echo "::set-output name=version::$version" - name: Package modules shell: bash run: | mkdir textadept-modules modules="css ctags debugger export file_diff format html lsp lua_repl open_file_mode \ python rest ruby spellcheck yaml" for module in $modules; do gh_name="`echo -n $module | sed -e 's/_/-/g;'`" gh_prefix="https://github.com/orbitalquark/textadept-$gh_name" wget $gh_prefix/releases/download/latest/$module.zip unzip -d textadept-modules $module.zip done zip -r src/textadept_${{ steps.build.outputs.version }}.modules.zip textadept-modules - name: Upload artifacts uses: actions/upload-artifact@v2 with: name: artifacts path: | src/textadept_* docs/changelog.md tag: runs-on: ubuntu-latest needs: build steps: - name: Checkout uses: actions/checkout@v2 - name: Tag run: | git tag textadept_${{ needs.build.outputs.version }} git push -f origin textadept_${{ needs.build.outputs.version }} release: runs-on: ubuntu-latest needs: [build, tag] steps: - name: Download artifacts uses: actions/download-artifact@v2 with: name: artifacts - name: Create release log shell: bash run: | echo -n "Textadept " > log.md echo -n "${{ needs.build.outputs.version }} " | tr '_' ' ' >> log.md echo \(`date +"%d %b %Y"`\) >> log.md if [[ ${{ needs.build.outputs.version }} = nightly ]]; then exit 0; fi prefix="https://orbitalquark.github.io/textadept" echoing=0 while read line; do if [[ $line == \#\#\#* ]]; then if [[ $echoing -eq 0 ]]; then echoing=1 else exit 0 fi elif [[ $echoing -eq 1 ]]; then echo "$line" | sed "s,\(manual\|api\)\.html,$prefix/\0,;" fi done < docs/changelog.md >> log.md - name: Create release uses: ncipollo/release-action@v1 with: name: ${{ needs.build.outputs.version }} tag: textadept_${{ needs.build.outputs.version }} prerelease: | ${{ needs.build.outputs.version == 'nightly' || contains(needs.build.outputs.version, 'alpha') || contains(needs.build.outputs.version, 'beta') }} allowUpdates: true bodyFile: log.md artifacts: src/textadept_* token: ${{ secrets.GITHUB_TOKEN }}