diff --git a/.github/workflows/alpine_x86_64_release.yml b/.github/workflows/alpine_x86_64_release.yml new file mode 100644 index 0000000..a97ecfd --- /dev/null +++ b/.github/workflows/alpine_x86_64_release.yml @@ -0,0 +1,48 @@ +on: + push: + tags: + - "v*.*.*" + # branches: + # - master + +jobs: + build: + runs-on: ubuntu-latest + container: + image: crystallang/crystal:latest-alpine + steps: + - name: Cache shards + uses: actions/cache@v2 + with: + path: ~/.cache/shards + key: ${{ runner.os }}-shards-${{ hashFiles('shard.yml') }} + restore-keys: ${{ runner.os }}-shards- + - name: Download source + uses: actions/checkout@v4 + - name: Install shards + run: shards check || shards install --without-development + - name: Check formatting + run: crystal tool format --check + - name: Run tests + run: crystal spec --order=random + - name: package information + run: | + echo "BINARY_NAME=bin/$(cat shard.yml |grep targets -A1|tail -n1 |sed 's#[ :]##g')" >> $GITHUB_ENV + echo "PKG_ARCH=x86_64" >> $GITHUB_ENV + echo "PLATFORM=unknown-linux-musl.tar.gz" >> $GITHUB_ENV + echo "BUILD_ARGS=--static --link-flags=\"-s -Wl,-z,relro,-z,now\"" >> $GITHUB_ENV + - name: set asset name + run: | + echo "ASSERT_NAME=${{env.BINARY_NAME}}-${{github.ref_name}}-${{env.PKG_ARCH}}-${{env.PLATFORM}}" >> $GITHUB_ENV + - name: release binary + id: release + run: | + echo "ASSERT_NAME=${{env.ASSERT_NAME}}" >> $GITHUB_OUTPUT + shards build --production --release --progress --no-debug -Dstrict_multi_assign -Dno_number_autocast ${{env.BUILD_ARGS}} + tar zcvf ${{env.ASSERT_NAME}} ${{env.BINARY_NAME}} LICENSE + - name: Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: | + ${{steps.release.outputs.ASSERT_NAME}}