diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b578d4b..d9c9478 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,22 +2,20 @@ name: Unit Test on: push: - branches: [ main, develop ] pull_request: - branches: [ main, develop ] + types: [synchronize, opened] env: CARGO_TERM_COLOR: always jobs: test: - runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - name: Run unit tests - run: | - cargo test --verbose + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Run unit tests + run: | + cargo test --verbose diff --git a/.github/workflows/docker_build_push.yml b/.github/workflows/docker_build_push.yml index c158cbe..7f96aa8 100644 --- a/.github/workflows/docker_build_push.yml +++ b/.github/workflows/docker_build_push.yml @@ -1,11 +1,11 @@ -name: Build and Publish Docker +name: Build and publish docker on: push: branches: - "develop" - "main" - pull_request: - types: [synchronize, opened] + tags: + - "*.*.*" env: GHCR: ghcr.io diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..ec075c5 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,128 @@ +name: Extract executable binary, upload artifacts, create release +on: + workflow_run: + workflows: + - "Build and publish docker" + types: + - "completed" + +jobs: + on-success: + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' }} + strategy: + fail-fast: false + matrix: + include: + - target: "gnu" + platform: linux/amd64 + + - target: "gnu" + platform: linux/arm64 + + - target: "musl" + platform: linux/amd64 + tags-suffix: "-slim" + + - target: "musl" + platform: linux/arm64 + tags-suffix: "-slim" + + - target: "gnu" + build-feature: "-s2n" + platform: linux/amd64 + tags-suffix: "-s2n" + + - target: "gnu" + build-feature: "-s2n" + platform: linux/arm64 + tags-suffix: "-s2n" + + - target: "gnu" + build-feature: "-native-roots" + platform: linux/amd64 + tags-suffix: "-native-roots" + + - target: "gnu" + build-feature: "-native-roots" + platform: linux/arm64 + tags-suffix: "-native-roots" + + - target: "musl" + build-feature: "-native-roots" + platform: linux/amd64 + tags-suffix: "-slim-native-roots" + + - target: "musl" + build-feature: "-native-roots" + platform: linux/arm64 + tags-suffix: "-slim-native-roots" + + - target: "gnu" + build-feature: "-s2n-native-roots" + platform: linux/amd64 + tags-suffix: "-s2n-native-roots" + + - target: "gnu" + build-feature: "-s2n-native-roots" + platform: linux/arm64 + tags-suffix: "-s2n-native-roots" + + steps: + - run: "echo 'The relese triggering workflows passed'" + - name: "set env" + run: | + if [ ${{ matrix.platform }} = "linux/amd64" ];then PLATFORM_MAP="x86_64";else PLATFORM_MAP="aarch64";fi + if [ ${{ github.ref_name == 'develop' }} ];then BUILD_NAME="rpxy-nightly";else BUILD_NAME="rpxy";fi + echo "PLATFORM_MAP=${PLATFORM_MAP}" >> $GITHUB_ENV + echo "TARGET_NAME=${BUILD_NAME}-${PLATFORM_MAP}-unknown-linux-${{ matrix.target }}${{ matrix.build-feature }}" >> $GITHUB_ENV + + - name: "docker pull and extract binary from docker image" + id: "extract-binary" + run: | + CONTAINER_ID=`docker create --platform=${{ matrix.platform }} ghcr.io/junkurihara/rust-rpxy:nightly${{ matrix.tags-suffix }}` + docker cp ${CONTAINER_ID}:/rpxy/bin/rpxy /tmp/${TARGET_NAME} + cd /tmp + echo "artifact=${TARGET_NAME}" >> $GITHUB_OUTPUT + + - name: "upload artifacts" + uses: actions/upload-artifact@v3 + with: + name: ${{ steps.extract-binary.outputs.artifact }} + path: "/tmp/${{ steps.extract-binary.outputs.artifact }}" + + on-failure: + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'failure' }} + steps: + - run: echo 'The release triggering workflows failed' + + release: + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/') + needs: on-success + steps: + - name: checkout + uses: actions/checkout@v4 + + - name: download artifacts + uses: actions/download-artifact@v3 + with: + path: /tmp/rpxy + + - name: make tar.gz of assets + run: | + mkdir /tmp/assets + cd /tmp/rpxy + for i in ./*; do sh -c "cd $i && tar zcvf $i.tar.gz $i && mv $i.tar.gz /tmp/assets/"; done + ls -lha /tmp/assets + + - name: release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: /tmp/assets/*.tar.gz + tag_name: ${{ github.ref }} + draft: true + prerelease: false + generate_release_notes: true diff --git a/CHANGELOG.md b/CHANGELOG.md index a7c171f..20ac679 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ ## 0.7.0 (unreleased) +## 0.6.2 + +### Improvement + +- Feat: Add a build feature of `native-roots` to use the system's default root cert store. +- Feat: Add binary release in addition to container release +- Refactor: lots of minor improvements + ## 0.6.1 ### Bugfix diff --git a/rpxy-bin/Cargo.toml b/rpxy-bin/Cargo.toml index 98ff827..fbe14dc 100644 --- a/rpxy-bin/Cargo.toml +++ b/rpxy-bin/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rpxy" -version = "0.6.1" +version = "0.6.2" authors = ["Jun Kurihara"] homepage = "https://github.com/junkurihara/rust-rpxy" repository = "https://github.com/junkurihara/rust-rpxy" diff --git a/rpxy-lib/Cargo.toml b/rpxy-lib/Cargo.toml index 0b0d3ee..c7cce09 100644 --- a/rpxy-lib/Cargo.toml +++ b/rpxy-lib/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rpxy-lib" -version = "0.6.1" +version = "0.6.2" authors = ["Jun Kurihara"] homepage = "https://github.com/junkurihara/rust-rpxy" repository = "https://github.com/junkurihara/rust-rpxy"