name: release-cargo on: push: branches: - master paths: - '**/Cargo.toml' - '.github/workflows/**' jobs: publish: runs-on: ubuntu-latest env: TAURI_DIST_DIR: tauri/test/fixture/dist TAURI_DIR: ../test/fixture/src-tauri strategy: fail-fast: false matrix: package: - name: tauri-bundler registryName: tauri-bundler path: cli/tauri-bundler publishPath: /target/package - name: tauri-core registryName: tauri path: tauri publishPath: /target/package - name: tauri-api registryName: tauri-api path: tauri-api publishPath: /target/package - name: tauri-updater registryName: tauri-updater path: tauri-updater publishPath: /target/package - name: tauri-utils registryName: tauri-utils path: tauri-utils publishPath: /target/package steps: - uses: actions/checkout@v2 with: ref: master toolchain: stable - name: install webkit2gtk run: | sudo apt-get update sudo apt-get install -y webkit2gtk-4.0 - name: get version working-directory: ${{ matrix.package.path }} run: echo ::set-env name=PACKAGE_VERSION::$(sed -nE 's/^\s*version = "(.*?)"/\1/p' Cargo.toml) - name: check published version run: echo ::set-env name=PUBLISHED_VERSION::$(cargo search ${{ matrix.package.registryName }} --limit 1 | sed -nE 's/^[^"]*"//; s/".*//1p' -) - name: cargo login if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION run: cargo login ${{ secrets.crate_token }} - name: cargo package if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION working-directory: ${{ matrix.package.path }} run: | echo "package dir:" ls cargo package --no-verify echo "We will publish:" $PACKAGE_VERSION echo "This is current latest:" $PUBLISHED_VERSION echo "post package dir:" cd ${{ matrix.publishPath }} ls - name: cargo audit if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION working-directory: ${{ matrix.package.path }} run: | cargo install cargo-audit echo "# Cargo Audit" | tee -a ${{runner.workspace }}/notes.md echo "\`\`\`" >> ${{runner.workspace }}/notes.md cargo audit 2>&1 | tee -a ${{runner.workspace }}/notes.md echo "\`\`\`" >> ${{runner.workspace }}/notes.md - name: Publish ${{ matrix.package.name }} if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION working-directory: ${{ matrix.package.path }} run: | echo "# Cargo Publish" | tee -a ${{runner.workspace }}/notes.md echo "\`\`\`" >> ${{runner.workspace }}/notes.md cargo publish --no-verify 2>&1 | tee -a ${{runner.workspace }}/notes.md echo "\`\`\`" >> ${{runner.workspace }}/notes.md - name: Create Release id: create_crate_release if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION uses: jbolda/create-release@v1.1.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ matrix.package.name }}-v${{ env.PACKAGE_VERSION }} release_name: "Release ${{ matrix.package.name }} v${{ env.PACKAGE_VERSION }} [crates.io]" bodyFromFile: ./../notes.md draft: false prerelease: false - name: Upload Release Asset id: upload-release-asset if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION uses: actions/upload-release-asset@v1.0.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_crate_release.outputs.upload_url }} asset_path: ./${{ matrix.package.publishPath }}/${{ matrix.package.registryName }}-${{ env.PACKAGE_VERSION }}.crate asset_name: ${{ matrix.package.registryName }}-${{ env.PACKAGE_VERSION }}.crate asset_content_type: application/x-gtar - name: Tangle Release id: tangle_release if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION uses: iotaledger/gh-tangle-release@v0.5.2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} IOTA_SEED: ${{ secrets.IOTA_SEED }} with: tag_name: ${{ matrix.package.name }}-v${{ env.PACKAGE_VERSION }} comment: "Release ${{ matrix.package.name }} v${{ env.PACKAGE_VERSION }} [crates.io]"