diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 9341776f..2a486be3 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -19,6 +19,7 @@ jobs: || github.ref == 'refs/heads/master') }} release: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/docker/') }} + - dockerfile: alpine cache: ${{ github.ref != 'refs/heads/master' && !startsWith(github.ref, 'refs/tags/docker/') }} @@ -27,12 +28,14 @@ jobs: || github.ref == 'refs/heads/master') }} release: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/docker/') }} + runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: docker/setup-qemu-action@v1 - uses: docker/setup-buildx-action@v1 + - name: Detect correct Git ref for image build id: git uses: actions/github-script@v3 @@ -45,6 +48,7 @@ jobs: } return out; + - name: Pre-build fresh Docker images cache run: make docker.build.cache no-cache=yes DOCKERFILE=${{ matrix.dockerfile }} @@ -75,11 +79,14 @@ jobs: sudo systemctl restart docker make npm.install - make test.docker platforms=@all build=yes DOCKERFILE=${{ matrix.dockerfile }} + make test.docker platforms=@all build=yes \ + DOCKERFILE=${{ matrix.dockerfile }} \ + ref=${{ fromJSON(steps.git.outputs.result).ref }} env: COTURN_VERSION: ${{ fromJSON(steps.git.outputs.result).ver }} working-directory: ./docker/coturn + - name: Login to GitHub Container Registry uses: docker/login-action@v1 with: @@ -87,6 +94,7 @@ jobs: username: ${{ github.repository_owner }} password: ${{ secrets.GCR_BOT_PAT }} if: ${{ matrix.publish }} + - name: Login to Quay.io uses: docker/login-action@v1 with: @@ -94,6 +102,7 @@ jobs: username: ${{ secrets.QUAYIO_ROBOT_USERNAME }} password: ${{ secrets.QUAYIO_ROBOT_TOKEN }} if: ${{ matrix.publish }} + - name: Login to Docker Hub uses: docker/login-action@v1 with: @@ -101,9 +110,20 @@ jobs: password: ${{ secrets.DOCKERHUB_BOT_PASS }} if: ${{ matrix.publish }} - - run: make docker.push DOCKERFILE=${{ matrix.dockerfile }} + - name: Publish version Docker tags + run: make docker.push + DOCKERFILE=${{ matrix.dockerfile }} + ref=${{ fromJSON(steps.git.outputs.result).ref }} working-directory: ./docker/coturn - if: ${{ matrix.publish }} + if: ${{ matrix.release }} + + - name: Publish edge Docker tags + run: make docker.push tags=edge-${{ matrix.dockerfile }} + DOCKERFILE=${{ matrix.dockerfile }} + ref=${{ fromJSON(steps.git.outputs.result).ref }} + working-directory: ./docker/coturn + if: ${{ matrix.publish && !matrix.release }} + # On GitHub Container Registry README is automatically updated on pushes. - name: Update README on Quay.io @@ -115,6 +135,7 @@ jobs: destination_container_repo: quay.io/coturn/coturn readme_file: docker/coturn/README.md if: ${{ matrix.publish }} + - name: Update README on Docker Hub uses: christian-korneck/update-container-description-action@v1 env: @@ -126,4 +147,25 @@ jobs: readme_file: docker/coturn/README.md if: ${{ matrix.publish }} - #TODO: release + + - name: Parse release version from Git tag + id: release + run: echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/docker/} + if: ${{ matrix.release }} + + - name: Parse CHANGELOG link + id: changelog + run: echo ::set-output name=LINK::https://github.com/${{ github.repository }}/blob/docker/${{ steps.release.outputs.VERSION }}/docker/coturn/CHANGELOG.md#$(sed -n '/^## \[${{ steps.release.outputs.VERSION }}\]/{s/^## \[\(.*\)\][^0-9]*\([0-9].*\)/\1--\2/;s/[^0-9a-z-]*//g;p;}' CHANGELOG.md) + working-directory: ./docker/coturn + if: ${{ matrix.release }} + + - name: Release on GitHub + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: docker/${{ steps.release.outputs.VERSION }} + release_name: ${{ steps.release.outputs.VERSION }} + body: | + [Changelog](${{ steps.changelog.outputs.LINK }}) + if: ${{ matrix.release }}