diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index aba8500..a22d02e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -15,7 +15,7 @@ on: jobs: - build-publish: + build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -135,3 +135,59 @@ jobs: version: '0.15.0' args: '-- --test-threads 2' + build-publish-release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + token: ${{ secrets.GH_TOKEN || secrets.GITHUB_TOKEN }} + fetch-depth: 0 + persist-credentials: false + + - name: Semantic Release + uses: cycjimmy/semantic-release-action@v3 + id: semantic + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN || secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} + SEMANTIC_RELEASE_PACKAGE: ${{ github.event.repository.name }} + with: + branch: main + semantic_version: 19 + extra_plugins: | + @semantic-release/changelog + @semantic-release/git + @semantic-release/exec + conventional-changelog-conventionalcommits + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Docker Meta + id: meta + uses: docker/metadata-action@v3 + with: + images: | + hirosystems/${{ github.event.repository.name }} + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}},value=${{ steps.semantic.outputs.new_release_version }},enable=${{ steps.semantic.outputs.new_release_version != '' }} + type=semver,pattern={{major}}.{{minor}},value=${{ steps.semantic.outputs.new_release_version }},enable=${{ steps.semantic.outputs.new_release_version != '' }} + type=raw,value=latest,enable={{is_default_branch}} + + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Build/Save Image + uses: docker/build-push-action@v2 + with: + context: . + tags: ${{ steps.meta.outputs.tags }}, + labels: ${{ steps.meta.outputs.labels }} + # Only push if (there's a new release on main branch, or if building a non-main branch) and (Only run on non-PR events or only PRs that aren't from forks) + push: ${{ (github.ref != 'refs/heads/main' || steps.semantic.outputs.new_release_version != '') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }}