diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml new file mode 100644 index 000000000..1ab05fa40 --- /dev/null +++ b/.github/workflows/releases.yml @@ -0,0 +1,106 @@ +name: Releases workflow + +on: + create: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' +env: + GO_VERSION: '1.20.6' + +permissions: + contents: write + deployments: write + +jobs: + # TODO: Any way we can just call build.yml? + test: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v4 + with: + go-version: ${{ env.GO_VERSION }} + - run: make + - run: make test + + integration: + runs-on: ubuntu-20.04 + strategy: + fail-fast: false + matrix: + containerd: ["1.6.19", "1.7.0"] + env: + DOCKER_BUILD_ARGS: "CONTAINERD_VERSION=${{ matrix.containerd }}" + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v4 + with: + go-version: '1.20.6' + - run: make integration + + generate-artifacts: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v4 + - name: Temp REMOVE BEFORE MERGING TO MAIN + run: touch THIRD_PARTY_LICENSES + - name: Setup and export variables + id: vars + run: | + export release_tag=${GITHUB_REF#refs/*/} # Strip down to raw tag name + export release_version=${release_tag/v/} # Remove v from tag name + echo "release_version=$release_version" >> $GITHUB_ENV + + echo "dynamic_binary_name=soci-snapshotter-${{ env.release_version }}-linux-amd64.tar.gz" >> $GITHUB_ENV + echo "static_binary_name=soci-snapshotter-${{ env.release_version }}-linux-amd64-static.tar.gz" >> $GITHUB_ENV + + mkdir release + - name: Create dynamic binary + run: | + make build + cp NOTICE.md THIRD_PARTY_LICENSES out/ + cd out/ + tar -czvf ../release/${{ env.dynamic_binary_name }} * + cd ../ + rm -rf out/ + - name: Create static binary + run: | + make STATIC=1 build + cp NOTICE.md THIRD_PARTY_LICENSES out/ + cd out/ + tar -czvf ../release/${{ env.static_binary_name }} * + cd ../ + rm -rf out/ + - name: Create sha256 checksums + run: | + cd release/ + sha256sum ${{ env.dynamic_binary_name }} > ${{ env.dynamic_binary_name }}.sha256sum + sha256sum ${{ env.static_binary_name }} > ${{ env.static_binary_name }}.sha256sum + - uses: actions/upload-artifact@v3 + with: + name: artifacts + path: release/ + if-no-files-found: error + + outputs: + dynamic_binary_name: ${{ env.dynamic_binary_name }} + static_binary_name: ${{ env.static_binary_name }} + + create-release: + needs: generate-artifacts + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + - uses: actions/download-artifact@v3 + with: + name: artifacts + - uses: softprops/action-gh-release@v1 + with: + draft: true + prerelease: false + generate_release_notes: true + files: | + ${{ needs.generate-artifacts.outputs.dynamic_binary_name }} + ${{ needs.generate-artifacts.outputs.dynamic_binary_name }}.sha256sum + ${{ needs.generate-artifacts.outputs.static_binary_name }} + ${{ needs.generate-artifacts.outputs.static_binary_name }}.sha256sum