name: Continuous Deployment on: push: tags: - "v*.*.*" jobs: publish-github: name: Publish on GitHub runs-on: ubuntu-20.04 strategy: matrix: TARGET: [x86_64-unknown-linux-gnu, x86_64-unknown-linux-musl] steps: - name: Checkout the repository uses: actions/checkout@master - name: Set the release version run: echo "RELEASE_VERSION=${GITHUB_REF:11}" >> $GITHUB_ENV - name: Install musl-tools if: matrix.TARGET == 'x86_64-unknown-linux-musl' run: | sudo apt-get update sudo apt-get install -y --no-install-recommends \ --allow-unauthenticated musl-tools - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable target: ${{ matrix.TARGET }} override: true - name: Build run: cargo build --release --locked --target ${{ matrix.TARGET }} - name: Prepare release assets run: | mkdir release/ cp {LICENSE,README.md,CHANGELOG.md,config.toml} release/ cp target/${{ matrix.TARGET }}/release/rustypaste release/ mv release/ rustypaste-${{ env.RELEASE_VERSION }}/ - name: Create release artifacts run: | tar -czvf rustypaste-${{ env.RELEASE_VERSION }}-${{ matrix.TARGET }}.tar.gz \ rustypaste-${{ env.RELEASE_VERSION }}/ sha512sum rustypaste-${{ env.RELEASE_VERSION }}-${{ matrix.TARGET }}.tar.gz \ > rustypaste-${{ env.RELEASE_VERSION }}-${{ matrix.TARGET }}.tar.gz.sha512 - name: Upload the release uses: softprops/action-gh-release@v1 with: files: | rustypaste-${{ env.RELEASE_VERSION }}-${{ matrix.TARGET }}.tar.gz rustypaste-${{ env.RELEASE_VERSION }}-${{ matrix.TARGET }}.tar.gz.sha512 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} publish-crates-io: name: Publish on crates.io needs: publish-github runs-on: ubuntu-20.04 steps: - name: Checkout the repository uses: actions/checkout@master - name: Publish uses: actions-rs/cargo@v1 with: command: publish args: --locked --token ${{ secrets.CARGO_TOKEN }} publish-docker: name: Publish the Docker image needs: publish-github runs-on: ubuntu-20.04 steps: - name: Checkout uses: actions/checkout@main - name: Set the release version run: echo "RELEASE_VERSION=${GITHUB_REF:11}" >> $GITHUB_ENV - name: Build run: docker build -t rustypaste . - name: Tag run: | docker tag rustypaste orhunp/rustypaste:${{ env.RELEASE_VERSION }} docker tag rustypaste docker.pkg.github.com/orhun/rustypaste/rustypaste:${{ env.RELEASE_VERSION }} - name: Login (Docker Hub) run: echo ${{ secrets.DOCKER_TOKEN }} | docker login -u orhunp --password-stdin - name: Push (Docker Hub) run: docker push orhunp/rustypaste:${{ env.RELEASE_VERSION }} - name: Login (Package Registry) run: echo ${{ secrets.GITHUB_TOKEN }} | docker login -u orhun docker.pkg.github.com --password-stdin - name: Push (Package Registry) run: docker push docker.pkg.github.com/orhun/rustypaste/rustypaste:${{ env.RELEASE_VERSION }}