name: Test and release on: workflow_dispatch: push: paths-ignore: - '**.md' branches: - "*" jobs: prepare: name: Preparing build context runs-on: ubuntu-latest outputs: RELEASE_VERSION: ${{ steps.get_env.outputs.RELEASE_VERSION }} steps: - name: Checkout repo uses: actions/checkout@v2 with: fetch-depth: '0' - name: Setting environment variables id: get_env run: | TMP_GITHUB_COMMITS_COUNT=$(git rev-list --count HEAD) TMP_GITHUB_COUNT_NUMBER=$(echo ${GITHUB_RUN_NUMBER}) echo "::set-output name=RELEASE_VERSION::1.$TMP_GITHUB_COMMITS_COUNT.$TMP_GITHUB_COUNT_NUMBER" tests: name: Run unit tests runs-on: ubuntu-latest env: CI: true steps: - name: Checkout repo uses: actions/checkout@v2 - name: Setup GoLang uses: actions/setup-go@v2 with: stable: 'true' - name: Test code run: | git config --global url."https://${{ secrets.GHCR_TOKEN }}:x-oauth-basic@github.com/${{ github.repository_owner }}".insteadOf "https://github.com/${{ github.repository_owner }}"; make test CI_RUN=${CI} release: name: Create Release runs-on: ubuntu-latest needs: [ prepare, tests ] steps: - name: Checkout code uses: actions/checkout@v2 with: fetch-depth: 0 - name: Get list of the commits since last release run: | echo "$(git log $(git describe --tags --abbrev=0)..HEAD --pretty=format:"%h %s")" > .release_notes - name: Create Release id: create_release uses: actions/create-release@main env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: v${{ needs.prepare.outputs.RELEASE_VERSION }} release_name: v${{ needs.prepare.outputs.RELEASE_VERSION }} body_path: .release_notes draft: false prerelease: ${{ github.ref != 'refs/heads/master' && github.ref != 'refs/heads/main' }}