diff --git a/.github/workflows/docker-retag.yml b/.github/workflows/docker-retag.yml new file mode 100644 index 0000000..5bae31c --- /dev/null +++ b/.github/workflows/docker-retag.yml @@ -0,0 +1,40 @@ +name: Update Docker Tags + +on: + workflow_dispatch: + inputs: + source_version: + description: 'Source version to tag (e.g., v1.0.0)' + required: true + type: string + target_tag: + description: 'Target tag to apply' + required: true + type: choice + options: + - stable + - prerelease + - edge + +jobs: + retag-docker: + runs-on: ubuntu-latest + steps: + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Create and push manifests with new tag + run: | + docker buildx imagetools create \ + -t openaudio/go-openaudio:${{ inputs.target_tag }} \ + openaudio/go-openaudio:${{ inputs.source_version }} + + echo "Successfully updated openaudio/go-openaudio:${{ inputs.target_tag }} to point to ${{ inputs.source_version }}" + + \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4f83d95..648c9bc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,8 +3,15 @@ name: Create Release on: workflow_dispatch: inputs: + branch: + description: 'Source branch' + required: true + type: choice + options: + - main + - mainnet-alpha-beta version: - description: 'Release version (e.g., v0.1.0)' + description: 'Release version (e.g., v1.0.0, v2.0.0-beta.1)' required: true type: string release_notes: @@ -22,6 +29,8 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 + with: + ref: ${{ inputs.branch }} - name: Create tag run: | @@ -30,6 +39,17 @@ jobs: git tag -a ${{ inputs.version }} -m "Release ${{ inputs.version }}" git push origin ${{ inputs.version }} + - name: Determine if prerelease + id: prerelease + run: | + # main branch releases are prereleases + # mainnet-alpha-beta releases are stable + if [[ "${{ inputs.branch }}" == "main" ]]; then + echo "is_prerelease=true" >> $GITHUB_OUTPUT + else + echo "is_prerelease=false" >> $GITHUB_OUTPUT + fi + - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: @@ -37,7 +57,7 @@ jobs: name: ${{ inputs.version }} body: ${{ inputs.release_notes }} draft: false - prerelease: false + prerelease: ${{ steps.prerelease.outputs.is_prerelease }} generate_release_notes: true build-docker-amd64: @@ -136,7 +156,6 @@ jobs: - name: Create and push multi-platform manifest run: | docker buildx imagetools create -t openaudio/go-openaudio:${{ inputs.version }} \ - -t openaudio/go-openaudio:latest \ openaudio/go-openaudio:${{ inputs.version }}-amd64 \ openaudio/go-openaudio:${{ inputs.version }}-arm64 @@ -146,3 +165,4 @@ jobs: with: label: ${{ inputs.version }} secrets: inherit + \ No newline at end of file