ci: test the publish workflow in PRs if changed #230
Workflow file for this run
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
name: Publish | |
on: | |
push: | |
tags: | |
- '[0-9]+.[0-9]+.[0-9]+*' | |
workflow_dispatch: | |
# Test this workflow in PRs in case it changed | |
pull_request: | |
paths: | |
- .github/workflows/publish.yml | |
jobs: | |
newRelease: | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
packages: write | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: '18.3.0' | |
registry-url: 'https://artifacts.itemis.cloud/repository/npm-open/' | |
scope: '<@modelix>' | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'temurin' | |
java-version: '11' | |
- name: Set up Gradle | |
uses: gradle/gradle-build-action@v2 | |
- name: Use tag as version | |
# Set a production version only when running on tags | |
if: ${{ github.event_name != 'pull_request' }} | |
run: echo "${GITHUB_REF#refs/*/}" > version.txt | |
- name: Use dummy version for PR | |
# Set a dummy version that doesn't hurt if accidentally released | |
if: ${{ github.event_name == 'pull_request' }} | |
run: echo "0.0.1-SNAPSHOT" > version.txt | |
# Perform the build in a separate call to avoid trying to publish | |
# something where the build already failed partially. This could happen | |
# due to the use of the --continue flag in the publish step. | |
# - name: Build | |
# run: >- | |
# ./gradlew --build-cache build | |
# --info | |
# -PciBuild=true | |
- name: Publish | |
# We run gradle with --info to debug the ongoing random publishing | |
# issues. Gradle would log upload retries on info level: | |
# https://github.com/gradle/gradle/blob/2e843f089f969940e505e69eb0742ed4fbf67993/platforms/software/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/transport/NetworkOperationBackOffAndRetry.java#L64 | |
# Maybe retries are the source of our duplicate publication attempts. | |
# | |
# We use --continue to work around the commonly seen 403 issues. | |
# Usually, the artifact that cannot be uploaded is strangely already | |
# in the repo. As the result, by ignoring the exception, we should end | |
# up with a working release in most cases. | |
run: |- | |
if [[ "$IS_PR" = 'false' ]]; then | |
TARGET=publish | |
fi | |
echo ./gradlew --build-cache $TARGET \ | |
--continue \ | |
--info \ | |
-PciBuild=true \ | |
-Partifacts.itemis.cloud.user=${{ secrets.ARTIFACTS_ITEMIS_CLOUD_USER }} \ | |
-Partifacts.itemis.cloud.pw=${{ secrets.ARTIFACTS_ITEMIS_CLOUD_PW }} \ | |
-Pgpr.user=${{ github.actor }} \ | |
-Pgpr.key=${{ secrets.GITHUB_TOKEN }} \ | |
-Pgpr.universalkey=${{ secrets.GHP_UNIVERSAL_PUBLISH_TOKEN }} \ | |
-Porg.gradle.internal.http.connectionTimeout=180000 \ | |
-Porg.gradle.internal.http.socketTimeout=180000 | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.ARTIFACTS_ITEMIS_CLOUD_NPM_TOKEN }} | |
IS_PR: ${{ github.event_name == 'pull_request' }} | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
with: | |
platforms: linux/amd64,linux/arm64 | |
- name: Build and Publish Docker | |
# As publishing is currently baked into the scripts, we can't test this | |
# in PRs | |
if: ${{ github.event_name != 'pull_request' }} | |
env: | |
DOCKER_HUB_USER: ${{ secrets.DOCKER_HUB_USER }} | |
DOCKER_HUB_KEY: ${{ secrets.DOCKER_HUB_KEY }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: ./docker-ci.sh |