diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml new file mode 100644 index 0000000..471b158 --- /dev/null +++ b/.github/workflows/build_release.yml @@ -0,0 +1,62 @@ +name: Build on ubuntu and maybe release + +on: + push: + pull_request: + +jobs: + build: + env: + RELEASE_OS: ubuntu-24.04 + RELEASE_GOVER: "1.22" + + strategy: + fail-fast: false + matrix: + os: [ ubuntu-24.04, ubuntu-22.04, ubuntu-20.04 ] + gover: [ "1.22", "1.21", 1.20" ] + + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/setup-go@v5 + with: + go-version: ${{ matrix.gover }} + - uses: actions/checkout@v4 + - name: Build the project + run: go build . + - name: Save built binary + if: startsWith(github.ref, 'refs/tags/') && matrix.os == env.RELEASE_OS && matrix.gover == env.RELEASE_GOVER + uses: actions/upload-artifact@v4 + with: + name: docker-on-top + path: ./docker-on-top + if-no-files-found: error + retention-days: 1 + + release: + needs: build + if: startsWith(github.ref, 'refs/tags/') + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Prepare release notes + run: | + # Assert that the changelog begins with this release + head -1 CHANGELOG.md | grep -E "^# ${{ github.ref_name }}$" + # Extract the part of changelog for this release (until next first-level heading) + tail -n +2 CHANGELOG.md | sed '/^# /q' | head -n-1 > this-changelog.md + - name: Restore built binary + uses: actions/download-artifact@v4 + with: + name: docker-on-top + path: ./docker-on-top + - name: Release new version + uses: softprops/action-gh-release@v2 + with: + body_path: ${{ github.workspace }}/this-changelog.md + files: | + ./docker-on-top + ./docker-on-top.service diff --git a/.github/workflows/ubuntu_build.yml b/.github/workflows/ubuntu_build.yml deleted file mode 100644 index 94a0963..0000000 --- a/.github/workflows/ubuntu_build.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Build on ubuntu - -on: - push: - pull_request: - -jobs: - build: - strategy: - fail-fast: false - matrix: - os: [ ubuntu-22.04, ubuntu-20.04 ] - # We are using some features added only in go 1.20, that's - # why we cannot support any other versions at the moment - gover: [ "1.20" ] - - runs-on: ${{ matrix.os }} - - steps: - - uses: actions/setup-go@v4.0.1 - with: - go-version: ${{ matrix.gover }} - - uses: actions/checkout@v3 - - name: Build the project - run: go build .