Skip to content

Release v0.17.1

Release v0.17.1 #17

Workflow file for this run

---
name: Release
on:
push:
tags:
- 'v*'
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
CARGO_HOME: ${{ github.workspace }}/.cargo-home
# We set an explicit version to only install the components we need for CI.
RUSTUP_TOOLCHAIN: '1.78'
jobs:
tests:
name: Tests
uses: ./.github/workflows/tests.yml
source:
name: Source archive
runs-on: ubuntu-latest
container:
image: ghcr.io/inko-lang/ci:fedora
needs:
- tests
env:
RCLONE_S3_ACCESS_KEY_ID: ${{ secrets.CLOUDFLARE_ACCESS_KEY_ID }}
RCLONE_S3_SECRET_ACCESS_KEY: ${{ secrets.CLOUDFLARE_SECRET_ACCESS_KEY }}
RCLONE_S3_ENDPOINT: https://${{ secrets.CLOUDFLARE_ACCOUNT_ID }}.r2.cloudflarestorage.com
steps:
- uses: actions/checkout@v4
- run: git config --global --add safe.directory $PWD
- name: Upload source archive
run: make release/source
- name: Update manifest
run: make release/manifest
runtimes:
name: Runtimes
needs:
- tests
uses: ./.github/workflows/runtimes.yml
secrets: inherit
docs:
name: Documentation
runs-on: ubuntu-latest
container:
image: ghcr.io/inko-lang/inko:latest
needs:
- tests
- source
- runtimes
env:
RCLONE_S3_ACCESS_KEY_ID: ${{ secrets.CLOUDFLARE_ACCESS_KEY_ID }}
RCLONE_S3_SECRET_ACCESS_KEY: ${{ secrets.CLOUDFLARE_SECRET_ACCESS_KEY }}
RCLONE_S3_ENDPOINT: https://${{ secrets.CLOUDFLARE_ACCOUNT_ID }}.r2.cloudflarestorage.com
steps:
- name: Install dependencies
run: microdnf install --quiet --assumeyes rclone git tar make
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: '~/.local/share/inko/packages'
key: docs-release-${{ hashFiles('docs/inko.pkg') }}
- run: git config --global --add safe.directory $PWD
- name: Deploy the documentation
run: make docs/publish DOCS_REF=${{ github.ref_name }}
- name: Update the latest tag
run: >
if [[ ${{ github.ref_name }} = $(git tag -l --sort=-v:refname | head -n1) ]]
then
make docs/publish DOCS_REF=latest
fi
std-docs:
name: Standard library documentation
runs-on: ubuntu-latest
container:
image: ghcr.io/inko-lang/ci:fedora
env:
RCLONE_S3_ACCESS_KEY_ID: ${{ secrets.CLOUDFLARE_ACCESS_KEY_ID }}
RCLONE_S3_SECRET_ACCESS_KEY: ${{ secrets.CLOUDFLARE_SECRET_ACCESS_KEY }}
RCLONE_S3_ENDPOINT: https://${{ secrets.CLOUDFLARE_ACCOUNT_ID }}.r2.cloudflarestorage.com
needs:
- tests
- source
- runtimes
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: '${{ env.CARGO_HOME }}'
key: std-docs-release-${{ hashFiles('Cargo.lock', 'rust-toolchain.toml') }}
- run: git config --global --add safe.directory $PWD
- name: Deploy the documentation
run: make std-docs/publish DOCS_REF=${{ github.ref_name }}
- name: Update the latest tag
run: >
if [[ ${{ github.ref_name }} = $(git tag -l --sort=-v:refname | head -n1) ]]
then
make std-docs/publish DOCS_REF=latest
fi
container:
name: Container
runs-on: ubuntu-latest
needs:
- docs
- runtimes
- source
- std-docs
- tests
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/metadata-action@v5
id: meta
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
- uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}