-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #61 from KIT-MRT/github_actions
Add GitHub actions for automated testing, releases and more #minor
- Loading branch information
Showing
8 changed files
with
396 additions
and
71 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
185 changes: 185 additions & 0 deletions
185
.github/workflows/bump-version-and-create-release-and-push-docker-images.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,185 @@ | ||
name: Bump version, create and test release, and push Docker images | ||
on: | ||
pull_request: | ||
types: | ||
- closed | ||
branches: | ||
- main | ||
|
||
jobs: | ||
compute-version: | ||
if: github.event.pull_request.merged == true | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: write | ||
outputs: | ||
new_tag: ${{ steps.bump_version.outputs.new_tag }} | ||
steps: | ||
- name: Check out the repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: Read version from file | ||
run: | | ||
# Read the version from the version file, only store the number (without the 'v') | ||
INITIAL_VERSION=$(source version && echo ${VERSION#v}) | ||
echo "Current version: $INITIAL_VERSION" | ||
echo "INITIAL_VERSION=${INITIAL_VERSION}" >> $GITHUB_ENV | ||
- name: Bump version | ||
id: bump_version | ||
uses: anothrNick/github-tag-action@v1 | ||
env: | ||
DEFAULT_BUMP: minor | ||
DRY_RUN: true | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
INITIAL_VERSION: ${{ env.INITIAL_VERSION }} | ||
WITH_V: true | ||
|
||
|
||
update-version-file: | ||
needs: compute-version | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: write | ||
steps: | ||
- name: Check out the repository | ||
uses: actions/checkout@v4 | ||
with: | ||
ssh-key: ${{ secrets.DEPLOY_KEY }} | ||
|
||
- name: Update version file with new version | ||
run: | | ||
echo "New version: ${{ needs.compute-version.outputs.new_tag }}" | ||
echo "VERSION=${{ needs.compute-version.outputs.new_tag }}" > version | ||
git config --local user.name "github-actions[bot]" | ||
git config --local user.email "github-actions[bot]@users.noreply.github.com" | ||
git add version | ||
git commit -m "chore: update version file to ${{ needs.compute-version.outputs.new_tag }}" | ||
git push | ||
- name: Push new tag | ||
run: | | ||
git tag ${{ needs.compute-version.outputs.new_tag }} | ||
git push origin ${{ needs.compute-version.outputs.new_tag }} | ||
create-release: | ||
needs: [compute-version, update-version-file] | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: write | ||
steps: | ||
- name: Check out the repository and pull the new tag | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
ref: ${{ needs.compute-version.outputs.new_tag }} | ||
|
||
- name: Build release packages | ||
uses: docker/build-push-action@v6 | ||
with: | ||
context: . | ||
push: false | ||
tags: | | ||
release_builder | ||
target: release | ||
|
||
- name: Copy release packages | ||
run: | | ||
mkdir -p /tmp/artifacts/ | ||
docker run --rm -v /tmp/artifacts:/tmp/artifacts release_builder cp -r /release /tmp/artifacts/ | ||
- name: Create Release | ||
uses: ncipollo/release-action@v1 | ||
with: | ||
artifacts: "/tmp/artifacts/release/*" | ||
tag: ${{ needs.compute-version.outputs.new_tag }} | ||
body: ${{ github.event.pull_request.body }} | ||
|
||
build-and-run-release-tests: | ||
needs: [compute-version, create-release] | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Build release core test Docker image | ||
uses: docker/build-push-action@v6 | ||
with: | ||
build-args: | | ||
RELEASE_DOWNLOAD_URL=https://github.com/KIT-MRT/arbitration_graphs/releases/download/${{ needs.compute-version.outputs.new_tag }} | ||
push: false | ||
tags: release_tester_core | ||
target: release_test_core | ||
|
||
- name: Run core unit tests with/against released version | ||
run: | | ||
docker run --rm release_tester_core | ||
- name: Build release gui test Docker image | ||
uses: docker/build-push-action@v6 | ||
with: | ||
build-args: | | ||
RELEASE_DOWNLOAD_URL=https://github.com/KIT-MRT/arbitration_graphs/releases/download/${{ needs.compute-version.outputs.new_tag }} | ||
push: false | ||
tags: release_tester_gui | ||
target: release_test_gui | ||
|
||
- name: Run gui unit tests with/against released version | ||
run: | | ||
docker run --rm release_tester_gui | ||
build-and-push-images: | ||
needs: [compute-version, build-and-run-release-tests] | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Check out the repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set up QEMU | ||
uses: docker/setup-qemu-action@v3 | ||
with: | ||
platforms: 'linux/amd64,linux/arm64,linux/arm/v7' | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
|
||
- name: Log in to the Container registry | ||
uses: docker/login-action@v3 | ||
with: | ||
registry: ghcr.io | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Build and push core library Docker image | ||
uses: docker/build-push-action@v6 | ||
with: | ||
push: true | ||
tags: | | ||
ghcr.io/kit-mrt/arbitration_graphs:latest | ||
ghcr.io/kit-mrt/arbitration_graphs:${{ needs.compute-version.outputs.new_tag }} | ||
target: install | ||
|
||
- name: Build and push Pacman demo Docker image | ||
uses: docker/build-push-action@v6 | ||
with: | ||
build-args: | | ||
VERSION=${{ needs.compute-version.outputs.new_tag }} | ||
context: demo | ||
file: demo/Dockerfile | ||
push: true | ||
tags: | | ||
ghcr.io/kit-mrt/arbitration_graphs_pacman_demo:latest | ||
ghcr.io/kit-mrt/arbitration_graphs_pacman_demo:${{ needs.compute-version.outputs.new_tag }} | ||
target: demo | ||
|
||
- name: Build and push Pacman tutorial Docker image | ||
uses: docker/build-push-action@v6 | ||
with: | ||
build-args: | | ||
VERSION=${{ needs.compute-version.outputs.new_tag }} | ||
context: demo | ||
file: demo/Dockerfile | ||
push: true | ||
tags: | | ||
ghcr.io/kit-mrt/arbitration_graphs_pacman_tutorial:latest | ||
ghcr.io/kit-mrt/arbitration_graphs_pacman_tutorial:${{ needs.compute-version.outputs.new_tag }} | ||
target: tutorial | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
name: Run unit tests | ||
|
||
on: | ||
push: | ||
|
||
jobs: | ||
build-and-run-unit-tests: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Check out the repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: Read version from file | ||
run: | | ||
cat version >> $GITHUB_ENV | ||
- name: Build and core library Docker image using current repo state | ||
uses: docker/build-push-action@v6 | ||
with: | ||
push: false | ||
tags: | | ||
ghcr.io/kit-mrt/arbitration_graphs:${{ env.VERSION }} | ||
target: install | ||
|
||
- name: Build core library unit test Docker image | ||
uses: docker/build-push-action@v6 | ||
with: | ||
push: false | ||
tags: | | ||
ghcr.io/kit-mrt/arbitration_graphs_tests:${{ env.VERSION }} | ||
target: unit_test | ||
|
||
- name: Run library unit tests | ||
run: | | ||
docker run --rm ghcr.io/kit-mrt/arbitration_graphs_tests:${{ env.VERSION }} | ||
- name: Build Pacman demo unit test Docker image | ||
uses: docker/build-push-action@v6 | ||
with: | ||
build-args: | | ||
VERSION=${{ env.VERSION }} | ||
context: demo | ||
file: demo/Dockerfile | ||
push: false | ||
tags: | | ||
ghcr.io/kit-mrt/arbitration_graphs_pacman_demo_tests:latest | ||
ghcr.io/kit-mrt/arbitration_graphs_pacman_demo_tests:${{ env.VERSION }} | ||
target: unit_test | ||
|
||
- name: Run demo unit tests | ||
run: | | ||
docker run --rm ghcr.io/kit-mrt/arbitration_graphs_pacman_demo_tests:${{ env.VERSION }} |
Oops, something went wrong.